
    -h                       S SK r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SS	K
Jr  SS
K
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ
r
  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ
r  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSK!J"r"  SSK!J#r#  SS K!J$r$  SS!K!J%r%  SS"K&J'r'  SS#K&J(r(  \	RR                  r*\
RV                  " 5       r,\
RZ                  " S$5      r. " S% S&\/5      r0\
RV                  " S'S'S(.5      r1 " S) S*\5      r2\R
                  R>                  Rg                  S+S,5       " S- S.\25      5       r4 " S/ S0\5      r5\R
                  R>                  Rg                  S+S15       " S2 S3\2\%5      5       r6 SFS4 jr7S5 r8S6 r9S7 r: " S8 S9\/5      r; " S: S;\;5      r< " S< S=\;5      r= " S> S?\;5      r> " S@ SA\>5      r? " SB SC\>5      r@ " SD SE\@5      rAg)G    N   )
attributes)
interfaces)loading)_is_aliased_class)ORMColumnsClauseRole)PathRegistry)_entity_corresponds_to)_ORMJoin)aliased)Bundle)
ORMAdapter   )exc)future)inspect)sql)util)ClauseElement)	coercions)
expression)roles)visitors)_entity_namespace_key)_select_iterables)CacheableOptions)CompileState)Options)LABEL_STYLE_DISAMBIGUATE_ONLY)LABEL_STYLE_NONE)LABEL_STYLE_TABLENAME_PLUS_COL)SelectState)ExtendedInternalTraversal)InternalTraversalLABEL_STYLE_LEGACY_ORMc                   <    \ rS rSrSr " S S\5      r  SS jrSrg)	QueryContext3   )compile_statequeryparamsload_optionsbind_argumentsexecution_optionssession	autoflushpopulate_existinginvoke_all_eagersversion_checkrefresh_statecreate_eager_joinspropagated_loader_optionsr   runidpartialspost_load_pathsidentity_token	yield_perloaders_require_bufferingloaders_require_uniquingc                   <    \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrSrg)!QueryContext.default_load_optionsM   FTN )__name__
__module____qualname____firstlineno___only_return_tuples_populate_existing_version_check_invoke_all_eagers
_autoflush_refresh_identity_token
_yield_per_refresh_state_lazy_loaded_from_legacy_uniquing__static_attributes__rA       kC:\Users\ROHAN GUPTA\OneDrive\Desktop\mathbuddy-assessment\venv\Lib\site-packages\sqlalchemy/orm/context.pydefault_load_optionsr?   M   s:    #"!
"&
  rQ   rS   Nc                   ^  UT l         U=(       d    [        T l        U=(       d    [        T l        UT l        UT l        UT l        ST l        ST l        UT l	        UR                  R                  nUR                  n	[        U 4S j[        X5       5       5      T l        [        UR                   5      T l        UR"                  T l        UR&                  T l        UR*                  T l        UR.                  T l        UR2                  T l        UR6                  T l        UR:                  T l        T R8                  (       aD  UR>                  (       a2  [@        RB                  " SSRE                  UR>                  5      -  5      eg g )NFc              3   r   >#    U  H,  u  pUR                   (       d  M  UR                  TU5      v   M.     g 7fN)propagate_to_loaders'_adapt_cached_option_to_uncached_option).0optuncached_optselfs      rR   	<genexpr>(QueryContext.__init__.<locals>.<genexpr>{   s7      /
%J!'' LC77lKK%Js   77zThe yield_per Query option is currently not compatible with %s eager loading.  Please specify lazyload('*') or query.enable_eagerloads(False) in order to proceed with query.yield_per().z, )#r,   _EMPTY_DICTr.   r-   r)   r*   r/   r<   r=   r+   select_statement_with_optionstuplezipr6   dictr   rJ   r0   rG   r1   rI   r2   rH   r3   rM   r4   rL   r;   rK   r:   _no_yield_perssa_excInvalidRequestErrorjoin)
r\   r)   	statementr+   r/   r,   r.   r-   cached_optionsuncached_optionss
   `         rR   __init__QueryContext.__init__Y   sM    )!2!Ak,;*
).&(-%&77EE$22 */ /
%(%J/
 *
& }778%00!-!@!@!-!@!@)88)88%00*BB>>m::,,2
 ))M889:  ;>rQ   )r   r0   r-   r)   r.   r:   r2   r,   r<   r=   r+   r1   r6   r*   r4   r/   r3   r;   )NN)	rB   rC   rD   rE   	__slots__r   rS   rl   rP   rA   rQ   rR   r'   r'   3   s"    I2
!w 
!& :rQ   r'   T) _result_disable_adapt_to_contextfuture_resultc                       \ rS rSr\r " S S\5      r\r	S r
S r\S 5       r\S 5       r\S 5       r\S	 5       r\S
 5       r\S 5       rS rS r\S 5       rSrg)ORMCompileState   c                      \ rS rSrS\R
                  4S\R
                  4S\R
                  4S\R                  4S\R                  4S\R
                  4S\R
                  4S	\R
                  4S
\R                  4S\R
                  4S\R
                  4S\R
                  4S\R
                  4/r
SrSrSrSr\rSrSrSrSrSrSrSrSrSrg)'ORMCompileState.default_compile_options   _use_legacy_query_style_for_statement_bake_ok_with_polymorphic_adapt_map_current_path_enable_single_crit_enable_eagerloads_orm_only_from_obj_alias_only_load_props_set_base_alias_for_refresh_state_render_for_subquery_is_starFTrA   N)rB   rC   rD   rE   r$   
dp_booleanr#   dp_has_cache_key_tuplesdp_has_cache_keydp_plain_obj_cache_key_traversalrw   rx   ry   rz   _path_registryr{   r|   r}   r~   r   r   r   r   r   rP   rA   rQ   rR   default_compile_optionsru      s   &(9(D(DE0;;<*556-)AA /@@A"$5$@$@A!#4#?#?@'):)E)EF!2!?!?@ 1 < <=!#4#?#?@#%6%A%AB*556! 
0 #(
 &(#&"!#' "$rQ   r   c                     [        5       erV   NotImplementedError)r\   argkws      rR   rl   ORMCompileState.__init__       !##rQ   c                 l    U R                   nX;  a#  UR                  U5        UR                  U5        g g rV   )dedupe_columnsaddappend)r\   objcol_collectiondedupes       rR   _append_dedupe_col_collection-ORMCompileState._append_dedupe_col_collection   s1    $$JJsO!!#& rQ   c                 J    U(       a  SS jnU$ [         R                  " U5      $ )Nc                 ,    U(       a  U$ [        U S5      $ )Nkey)getattr)colcol_names     rR   name7ORMCompileState._column_naming_convention.<locals>.name   s    #O"3..rQ   rV   )r"   _column_naming_convention)clslabel_stylelegacyr   s       rR   r   )ORMCompileState._column_naming_convention   s$     / K88EErQ   c                     [        5       e)a  Create a context for a statement given a :class:`.Compiler`.

This method is always invoked in the context of SQLCompiler.process().

For a Select object, this would be invoked from
SQLCompiler.visit_select(). For the special FromStatement object used
by Query to indicate "Query.from_statement()", this is called by
FromStatement._compiler_dispatch() that would be called by
SQLCompiler.process().

r   )r   statement_containercompilerr   s       rR   create_for_statement$ORMCompileState.create_for_statement   s     "##rQ   c                     [        U5      $ rV   )_column_descriptionsr   ri   s     rR   get_column_descriptions'ORMCompileState.get_column_descriptions   s    #I..rQ   c                    U(       a  X$4$ [         R                  R                  S1 SkUUR                  5      u  nnU(       d  [        nOUR                  [        5      nUR                  (       a  UR                  SUR                  05      nX%S'    UR                  S   nU(       a  UR                  US'   UR                  (       a  UR                  5         X$4$ ! [         a     S5       ef = f)N_sa_orm_load_options>   r0   r;   r1   r;   clauseplugin_subjectmapperz0statement had 'orm' plugin but no plugin_subject)r'   rS   from_execution_options_execution_options_orm_load_exec_optionsunionrL   _propagate_attrsr   KeyErrorrJ   )	r   r/   ri   r+   r.   r-   is_reentrant_invoker,   r   s	            rR   orm_pre_session_exec$ORMCompileState.orm_pre_session_exec   s     //
 --DD";((	
	
$ ! 6 1 7 78N O"" 1 7 7l556! $-x 	A&778HIN +9+@+@x("" ++  	MLLL5	Ms   C C-c           	         UR                   nUR                  R                  nUR                  S[        R
                  5      n	UR                  R                  (       a  U$ [	        UUUUU	UU5      n
[        R                  " Xj5      $ )Nr   )
contextcompiledr)   getr'   rS   compile_optionsr   r   	instances)r   r/   ri   r+   r.   r-   resultexecution_contextr)   r,   querycontexts              rR   orm_setup_cursor_result'ORMCompileState.orm_setup_cursor_result<  s     #NN)22@@ ),,"L$E$E
 ((11M#
   66rQ   c                 t    U R                    Vs/ s H  n[        U[        5      (       d  M  UPM     sn$ s  snf )zreturn all _MapperEntity objects in the lead entities collection.

Does **not** include entities that have been replaced by
with_entities(), with_only_columns()

)	_entities
isinstance_MapperEntity)r\   ents     rR   _lead_mapper_entities%ORMCompileState._lead_mapper_entities_  s2      >>
)CZ]-KC>
 	
 
s   55c                    UR                   (       dw  UR                  R                  U R                  ;  aR  UR                  R	                  5        H3  nU R                  U[        R                  " X#R                  5      5        M5     ggg)zQgiven MapperEntity or ORMColumnEntity, setup polymorphic loading
if appropriate

N)	is_aliased_classr   persist_selectable_polymorphic_adaptersiterate_to_root"_mapper_loads_polymorphically_withsql_utilColumnAdapter_equivalent_columns)r\   ext_info
selectablemps       rR    _create_with_polymorphic_adapter0ORMCompileState._create_with_polymorphic_adapterk  sp     ))22--. oo55777**:7M7MN 8. *rQ   c                     UR                   =(       d    U/ H@  nX R                  U'   UR                  5        H  nX R                  UR                  '   M     MB     g rV   )_with_polymorphic_mappersr   r   local_table)r\   r   adapterm2ms        rR   r   2ORMCompileState._mapper_loads_polymorphically_with{  sO    22>vh>B-4&&r*'')<C**1==9 * ?rQ   c                     [        S5      e)Nz0this method only works for ORMSelectCompileStater   )r   r*   r   s      rR   _create_entities_collection+ORMCompileState._create_entities_collection  s    !>
 	
rQ   rA   N)rB   rC   rD   rE   r_   rz   r   r   r   current_pathrl   r   classmethodr   r   r   r   r   propertyr   r   r   r   rP   rA   rQ   rR   rr   rr      s     #.*"2 *X "L$' F F $ $ / / @, @,D  7  7D 	
 	
 D 
 
rQ   rr   ormorm_from_statementc                   r    \ rS rSr\R
                  " 5       rSrSrSr	Sr
SrSr\r\r\S 5       rS rS rSrg)ORMFromStatementCompileStatei  NFc                    Ub  UR                   (       + nOSnU R                  U 5      nS Ul        UR                  R                  Ul        U=Ul        Ul        UR                  =Ul	        nUR                  (       a  UR                  Ul        / Ul        0 Ul        [        5       Ul        UR                  Ul        UR
                  (       ao  [%        U[&        R(                  5      (       aP  UR*                  (       d?  UR                  (       d.  UR,                  [.        L a  UR1                  [2        5      Ul        OXel        UR7                  UR*                  (       d  UR                  (       d  UR,                  O[.        UR
                  5      Ul        [:        R=                  UUR>                  UR                  SS9  UR                  R@                  Ul!        U(       ak  URD                  (       aZ  S[        5       0Ul#        URH                  Ul%        URD                   H'  nURL                  (       d  M  URO                  U5        M)     O0 Ul#        URH                  Ul%        URP                  (       a  URP                   H  u  pU" U5        M     / Ul)        / Ul*        [        5       Ul+        / Ul,        / Ul-        S Ul.        [%        UR4                  [&        R^                  [&        R`                  45      (       aR  0 Ul1        UR                   H  n
U
Re                  U5        M     [g        UR4                  URR                  5      Ul        U$ [h        Rj                  Rm                  UR4                  SS9Ul7        U$ )NTis_current_entities_unbound_load_dedupes)adapt_on_names)8stack__new___primary_entity_compile_optionsrw   use_legacy_query_styler   r`   elementrequested_statementis_dmltable	dml_tabler   r   setre   r   r   r   
SelectBase_is_textual_label_styler    set_label_styler!   ri   r   _label_convention_QueryEntityto_compile_state_raw_columnsr{   r   ra   r   _global_attributesglobal_attributes_is_compile_stateprocess_compile_state_with_context_optionsprimary_columnssecondary_columnsr   r5   _fallback_from_clausesorder_by
TextClause
UpdateBaseextra_criteria_entitiessetup_compile_state_AdHocColumnsStatementr   r   r   _from_obj_alias)r   r   r   r   toplevelr\   ri   rZ   fnr   entitys              rR   r   1ORMFromStatementCompileState.create_for_statement  s    #>>)HH{{3#  00HH 	# <ON 4#8/B/J/JJ 9&__DN%'"!e2CC ''9j&;&;<<))$$&&*::&66.DN 'N!%!?!?((1A1A ""!''	"
 	%%,,NN $	 	& 	
 0@@NN+996>DO%-%@%@D"*88(((--d3 9
 !DO%-%@%@D"44.DD4 E  "!#!e"$&(#NNZ22J4I4IJ
 
 ,.D(
 ..**40 ) 4 4 4DN&  $'88#9#9t $: $D  rQ   c                     U$ rV   rA   )r\   colscurrent_adapters      rR   _adapt_col_list,ORMFromStatementCompileState._adapt_col_list  s    rQ   c                     g rV   rA   r\   s    rR   _get_current_adapter1ORMFromStatementCompileState._get_current_adapter
  s    rQ   )r   r  r  r  re   r   r   r   r   r5   r   r   r   r  r
  r  r  r   r  r`   ri   r   r   )rB   rC   rD   rE   r   immutabledict_aliased_generationsr  _has_mapper_entities_has_orm_entitiesmulti_row_eager_loaderseager_adding_joinscompound_eager_adapterr_   r  eager_joinsr   r   r  r#  rP   rA   rQ   rR   r   r     s^    --/O #!)Kn n`rQ   r   c                   :    \ rS rSrSrSrS rS rS r S	S jr	Sr
g)
r  i  zlinternal object created to somewhat act like a SELECT when we
are selecting columns from a DML RETURNING.


Nc                     Xl         U Vs/ s H(  n[        R                  " [        R                  U5      PM*     snU l        g s  snf rV   )r   r   expectr   ColumnsClauseRolecolumn_args)r\   textcolumnscs       rR   rl   _AdHocColumnsStatement.__init__  s;    BI
BIQIU44a8'
 
s   /Ac                     [        5       erV   r   r"  s    rR   _generate_cache_key*_AdHocColumnsStatement._generate_cache_key  r   rQ   c                     [        5       erV   r   )r\   anon_map
bindparamss      rR   _gen_cache_key%_AdHocColumnsStatement._gen_cache_key   r   rQ   c                    UR                   (       + nU(       a  UR                  OUR                   S   nU=(       d7    US:H  =(       a    UR                  SS5      =(       d    UR                  SS5      nU(       aC  S=Ul        Ul        SUl        U R                   H  nUR                  USUR                  S9  M      UR                  " U R                  40 UD6$ )z*provide a fixed _compiler_dispatch method.r   need_result_map_for_compoundFneed_result_map_for_nestedT)within_columns_clauseadd_to_result_map)
r   _default_stack_entryr   _ordered_columns_textual_ordered_columns_loose_column_name_matchingr1  process_add_to_result_mapr   )	r\   r   compound_indexasfromr   r  entrypopulate_result_mapr4  s	            rR   _compiler_dispatch)_AdHocColumnsStatement._compiler_dispatch#  s    
  ~~%-5H))8>>";M 	
  > !# EII<eD	> yy5u= 	  H%1
 48H0%%  *.&.&A&A !  & 333rQ   )r1  r   NF)rB   rC   rD   rE   __doc____visit_name__rl   r7  r<  rN  rP   rA   rQ   rR   r  r    s'     N
$$ 5:#4rQ   r  selectc                      \ rS rSr\=rr\rSrSr	Sr
SrSrSrSrSrSrSr\S 5       rS r\S 5       r\S 5       r\S	 5       r\S
 5       r\\R4                  " S5      S 5       5       rS rS rS rS rS r S r!S*S jr"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S  r/S! r0S" r1S# r2S$ r3\4S% 5       r5\4S& 5       r6S' r7S( r8S)r9g)+ORMSelectCompileStateiI  NFrA   c                 P	   U R                  U 5      nUb#  UR                  (       + nUR                  Ul        O	Sn0 Ul        UnU R                  R                  UR                  5      Ul        UR                  (       a:  UR                  5       Ul	        [        R                  " 5       UR                  l        OXdl	        UR                  R                  Ul        UR                  R                  Ul        / Ul        SUl        0 Ul        0 Ul        [)        5       Ul        UR                  R,                  (       a4  [/        UR                  R,                  5      Ul        UR1                  5         UR                  Ul        U(       d  U=R2                  SSS.-  sl        UR                  (       aF  UR                  R4                  [6        L a)  UR                  (       d  [8        Ul        O'[<        Ul        OUR                  R4                  Ul        UR>                  (       aA  UR>                   Vs0 s H$  nU[@        RC                  UURD                  / SS9_M&     snUl#        URI                  UR4                  UR                  5      Ul%        [@        RC                  UURD                  UR                   SS9  UR                  RL                  Ul'        SUl(        U(       a  URR                  (       d  UR>                  (       a  S[)        5       0Ul*        UR>                   Hp  nURR                   H]  nURV                  (       d  M  URY                  UURF                  U    V	s/ s H  n	[[        U	[\        5      (       d  M  U	PM     sn	5        M_     Mr     UR                  RR                   H'  nURV                  (       d  M  UR_                  U5        M)     O0 Ul*        UR`                  (       a  UR`                   H  u  pU
" U5        M     / Ul1        / Ul2        [)        5       Ul3        0 Ul4        0 Ul5        / Ul6        / Ul7        URq                  S URr                   5       5      Ul:        URw                  5         [x        Rz                  " XDR|                  U40 UD6  U$ s  snf s  sn	f )	z@compiler hook, we arrive here from compiler.visit_select() only.NTF)r}   r   r   rA   r   c              3   8   #    U  H  oR                   v   M     g 7frV   )r   )rY   infos     rR   r]   =ORMSelectCompileState.create_for_statement.<locals>.<genexpr>  s      2
(BOO(Bs   )?r   r   r	  r
  r   
safe_merger   r   _cloner`   r   r%  rx   for_statementrw   r   r   r   r&  r   r   re   rz   rd   _setup_with_polymorphicsr   r  r%   r!   r   r   _memoized_select_entitiesr  r  r  _memoized_entitiesr   r  r{   r   eager_order_byra   r   r  'process_compile_state_replaced_entitiesr   r   r  r  r  r  r   r,  r  r5   r  _normalize_froms	_from_objfrom_clauses_setup_for_generater"   rl   ri   )r   ri   r   r   r\   r  r`   memoized_entitiesrZ   r   r  r   s               rR   r   *ORMSelectCompileState.create_for_statement\  s     {{3#>>)H%-%@%@D"H%'D"$ &)%@%@%K%K&&&
	" .. %5$;$;$=D!7;7I7I7KD!!4$4! .>>MM --EE 	# #$&!%'"!e ,,HH/3 11MM0D, ))+/@@   &+(,%   ''%%226LL%%#A #@ #44AAD55 %>>
' ? & "<#@#@%22(-	 $A $  ?
'D#  "&!?!?""D$?$?"
 	%%))NN $	 	& 	
 -==KK **996>DO ";; ",::C,,,CC  ,0+B+B$5,","C $.c=#A	 !$,"	 ; < ,,::(((--d3 ; !DO11+AA4 B  "!#!e')$"$&(# !11 2
(8(B(B2
 
 	  "T>>8BrBq
'Xs   /+R!R#>R#c                 t  ^ U R                   nS U l        SU l        U R                  R                  (       a  U R                  5         UR                   Hy  nUR                  (       a)  U R                  UR                  U R                  U   5        UR                  (       d  MP  U R                  UR                  U R                  U   5        M{     UR                  (       a&  U R                  UR                  U R                  5        UR                  (       a&  U R                  UR                  U R                  5        U R                  5       mUR                  (       a<  UR                  U l        T(       a$  [        U4S jU R                   5       5      U l        T(       a,  UR                   S;  a  U R#                  UR                   T5      OUR                   U l        UR&                  (       a$  [        U4S jUR&                   5       5      U l        T(       a@  UR(                  S;  a0  U R#                  [*        R,                  " UR(                  5      T5      OUR(                  =(       d    S U l        U R0                  (       a9  U R2                  S   R4                  nUR7                  U R0                  5      U l        UR8                  (       a"  U R#                  UR8                  T5      U l        OSU l        UR<                  U l        UR@                  (       a6  [        [*        R,                  " S UR@                   5       5      5      U l!        O[URD                  b6  [        [*        R,                  " S URD                   5       5      5      U l#        OURH                  (       d  SU l!        URJ                  U l%        U R                  RL                  (       a/  [O        U R                  5      S	:w  a  [P        RR                  " S
5      eU R                   H  nURU                  U 5        M     U RV                   H  nUS   nU" U /US	S  Q76   M     U R                  RX                  (       a  U R[                  5         U R\                  (       dG  U R                  R^                  (       a  [P        R`                  " S5      e[P        R`                  " S5      eU R2                  (       d  [c        U Rd                  5      U l        U R$                  SL a  S U l        U Rf                  (       a8  U Rh                  (       a'  U Rj                  (       a  U Rm                  5       U l        OU Ro                  5       U l        U Rp                  (       a7  U Rs                  5       nUb#  U R                  Ru                  SU05      U l        g g g )NrA   c              3   6   >#    U  H  nT" US 5      v   M     g7fTNrA   rY   critr  s     rR   r]   <ORMSelectCompileState._setup_for_generate.<locals>.<genexpr>$  s"      - 4 $D$// 4s   rP  c              3   H   >#    U  H  nT(       a	  T" US 5      OUv   M     g7frj  rA   rk  s     rR   r]   rm  3  s&      *2D 0?d+DH2s   "r   c              3   X   #    U  H   nUb  [         R                  " U5      OS v   M"     g 7frV   r   surface_selectablesrY   ss     rR   r]   rm  R  s+      &- 89}H003$N-   (*c              3   X   #    U  H   nUb  [         R                  " U5      OS v   M"     g 7frV   rp  rr  s     rR   r]   rm  Y  s+      &4 89}H003$N4rt  rV   r   zsCan't generate ORM query that includes multiple expressions at the same time as '*'; query for '*' alone if presentzyNo column-based properties specified for refresh operation. Use session.expire() to reload collections and related items.z4Query contains no columns with which to SELECT from.F
deepentity);r`   ri   _join_entitiesr   r   _set_select_from_aliasr^  _setup_joins_joinr_  _legacy_setup_joins_legacy_joinr   r#  _where_criteriarb   _order_by_clausesr  r  _having_criteria_group_by_clausesr   flatten_iteratorgroup_byr`  rd  _target_adaptercopy_and_process_distinct_ondistinct_on	_distinctdistinct
_correlate	correlate_correlate_exceptcorrelate_except_auto_correlate_for_update_argr   lenrf   CompileErrorr  r5   r|   _adjust_for_extra_criteriar  r   rg   listr  r)  r*  _should_nest_selectable_compound_eager_statement_simple_statementr\  _mapper_zero	_annotate)	r\   r*   rf  r   r  recstrategyezeror  s	           @rR   re  )ORMSelectCompileState._setup_for_generate  s   %% //'')!&!@!@ --

%22++,=> !444!!%99++,=> "A JJu))4>>:$$e77H335  #(#8#8D ', - $ 4 4- ($ 5#:#:-#O   !8!8/J(( 	 !!$) *!22* %D! 5#:#:-#O   %%e&=&=> ((0D 	 ''*::G")":":4;N;N"OD#33""O D  "D #%% &"--& DN $$0$)%% &"44& %D! &&$DN  %44((c$...AQ.F%%J  nnF&&t, % **C1vHT$CG$ + 33++-####4400?  00J     $T%@%@ AD==E! DM (('',,!;;=DN!335DN%%'E  "&!9!9!5)" ! rQ   c                    U R                  U 5      n/ Ul        SUl        0 Ul        0 Ul        U R
                  R                  UR                  5      nUR                  (       a*  [        UR                  5      Ul        UR                  5         UR                  UR                  U5      Ul        [        R                  X1R                   UR                  SS9  U$ )zCreates a partial ORMSelectCompileState that includes
the full collection of _MapperEntity and other _QueryEntity objects.

Supports a few remaining use cases that are pre-compilation
but still need to gather some of the column  / adaption information.

NTr   )r   r   r   r&  r   r   rZ  r   rz   rd   r]  r   r  r  r  r  r  )r   r*   r   r\   r   s        rR   r   1ORMSelectCompileState._create_entities_collection  s     {{3#$&!%'"55@@""
 66/3;;0D, ))+!%!?!?"
 	%%$$dnn$ 	& 	
 rQ   c                     UR                   nU(       d  g US   u  p4pV[        U[        R                  5      (       a  UR                  $ U$ )Nr?  )ry  r   r   PropComparatorr  )r   ri   setup_joinstargetonclausefrom_flagss          rR   determine_last_joined_entity2ORMSelectCompileState.determine_last_joined_entity  sC    ,,+6r?(5fj7788== MrQ   c              #   z  #    UR                    H  nUR                  (       a|  SUR                  ;   al  UR                  S   nUR                  (       d*  UR                  (       d  [        U/5       H  nUv   M	     Mn  [        UR                  5       H  nUv   M	     M  [        U/5       H  nUv   M	     M     g 7f)Nentity_namespace)r  is_selectable_annotations	is_mapperr   r   _all_column_expressions)r   ri   r   enselems        rR   all_selected_columns*ORMSelectCompileState.all_selected_columns  s      --G%%&'*>*>>**+=>}}S-A-A 17) <"
 != !2#2M2M N"
 !O .wi8DJ 9 .s   B9B;c                     U R                  [        R                  R                  S UR                   5       5      5      $ )Nc              3      #    U  H?  nS UR                   ;  a  UR                  OUR                   S    R                  5       /v   MA     g7f)parententityN)r  _from_objects__clause_element__)rY   r   s     rR   r]   AORMSelectCompileState.get_columns_clause_froms.<locals>.<genexpr>  sT      *  6G	 ")=)== %% ((8KKM
  6s   AA	)rb  	itertoolschainfrom_iterabler  r   s     rR   get_columns_clause_froms.ORMSelectCompileState.get_columns_clause_froms  s<    ##OO)) *  )55* 	
 		
rQ   zsqlalchemy.orm.queryc                 B   [         R                  R                  n[        R                  " [
        R                  UUS9nUR                  UR                  U5      nUR                  R                  UR                  UR                  UR                  UR                  S9  U$ )N)apply_propagate_attrs)ra   r  r   r   )r   	preloaded	orm_queryr   r/  r   ReturnsRowsRoleFromStatementr  __dict__updatera   r  r   r   )r   ri   from_statementr*   stmts        rR   r  $ORMSelectCompileState.from_statement  s     (("))!!"+
 ""9#9#9>J#11"+"A"A(;;&77	 	 	
 rQ   c                     U R                   R                  5        H   u  pU R                  XR                  5        M"     g rV   )rz   itemsr   _adapter)r\   r   wps      rR   r]  .ORMSelectCompileState._setup_with_polymorphics  s0     <<BBDLH33HkkJ ErQ   c                    U R                   nU R                  R                  (       d   e[        UR                  5      S:X  d   eU R                  UR                  S   5      nU(       a  U =R                  SS0-  sl        X l        g g )Nr   r   r|   F)r`   r   r   r  rc  _get_select_from_alias_from_objr  )r\   r*   r   s      rR   rx  ,ORMSelectCompileState._set_select_from_alias  sw    %%##33335??#q(((66uq7IJ  %:E$BB #*  rQ   c                    UnSUR                   ;   a  UR                   S   n[        US5      (       a3  UR                  (       d  [        R                  " S5      eUR
                  $ [        UR                  [        R                  R                  5      (       a&  U R                  5       n[        R                  " X#5      $ g )Nr  r   zPA selectable (FromClause) instance is expected when the base alias is being set.)r  hasattrr   rf   ArgumentErrorr  r   r   r   AliasedReturnsRows_all_equivsr   r   )r\   from_objrX  equivss       rR   r  5ORMSelectCompileState._get_select_from_alias_from_obj  s    T...$$^4D4""((**A 
 }}$)J)JKK%%'F))$77rQ   c                 4    U R                   S   R                  $ )z8return the Mapper associated with the first QueryEntity.r   )r   r   r"  s    rR   r  "ORMSelectCompileState._mapper_zero(  s    ~~a '''rQ   c                     U R                    H$  nSUR                  ;   d  M  UR                  S   s  $    U R                   H"  nUR                  (       d  M  UR                  s  $    g)zReturn the 'entity' (mapper or AliasedClass) associated
with the first QueryEntity, or alternatively the 'select from'
entity if specified.r  N)rd  r  r   entity_zero)r\   r   qents      rR   _entity_zero"ORMSelectCompileState._entity_zero,  s`    
 $$C!1!11''77 % NND''' # rQ   c                     U R                   U R                  /:w  a  [        R                  " SU-  5      eU R                  R                  $ )Nz4%s() can only be used against a single mapped class.)r   r   rf   rg   r  )r\   methnames     rR   _only_full_mapper_zero,ORMSelectCompileState._only_full_mapper_zero:  sK    >>d2233,,)+34  ##///rQ   c                     [        U R                  5      S:  a  [        R                  " U=(       d    S5      eU R	                  5       $ )Nr   z8This operation requires a Query against a single mapper.)r  r   rf   rg   r  )r\   	rationales     rR   _only_entity_zero'ORMSelectCompileState._only_entity_zeroB  sD    t~~",, ++ 
   ""rQ   c                    0 nU R                   R                  5        HY  nU Vs/ s H  n[        U[        5      (       d  M  UPM     sn H(  nUR	                  UR
                  R                  5        M*     M[     U R                   Vs/ s H  n[        U[        5      (       d  M  UPM     sn H(  nUR	                  UR
                  R                  5        M*     U$ s  snf s  snf rV   )r_  valuesr   r   r  r   r   r   )r\   r  rf  r   s       rR   r  !ORMSelectCompileState._all_equivsK  s    !%!8!8!?!?!A -,Cc=1 ,
 cjj<<= "B  >>
)CZ]-KC>
C MM#**889
 
s   CCC!%C!c           	         U R                   (       as  U R                    Vs/ s H:  n[        U[        R                  R                  5      (       a  UR
                  OUPM<     nn[        R                  " U R                  U5      nO/ nS nU R                  " U R                  U Vs/ s H  oDU R                  ;  d  M  UPM     sn-   U R                  U R                  U R                  U R                  U R                   4U R                  U R                   R"                  U R                   R$                  U R&                  U R(                  S.U R*                  D6nUR-                  5       nU R/                  5       n[        R0                  " XV5      U l        [4        R6                  " U/U R8                  -   6 nU R                  Ul        U R                  b(  U R                  R<                  c  U R                  Ul        UnU R>                  RA                  5        H$  n	[        RB                  " XU	RD                  5      nM&     URF                  RI                  Xx5        U(       a6  UR                   RH                  " U/U R2                  RK                  U5      Q76   UR                   RH                  " U/U RL                  Q76   U$ s  snf s  snf )N
for_updatehintsstatement_hintsr  r  )'r  r   r   elements_label_referencer   r    expand_column_list_from_order_byr  _select_statementr   rd  r}  r  r   r  r`   _hints_statement_hintsr  r  _select_argsaliasr  r   r+  r   rS  r  r  ofr,  r  splice_joinsstop_onselect_fromnon_generativer  r`  )
r\   r  unwrapped_order_byorder_by_col_exprr4  innerr  ri   from_clause
eager_joins
             rR   r  /ORMSelectCompileState._compound_eager_statement\  s   
 == !MM	" *D dCLL$A$ABB  *	  " !) I I$$&8! !#!% &&  +L+Q8K8K/Kq+LM  !!MM
 ++''.. 11BBnn!22
 
  !!#&.&<&<U&K#MMg...
	 "&!1!1	   ,$$''/(,(<(<I%**113J #//););K	 4 	,,YD--,,==& 	)))Jd6I6IJS"$ Ms   AJ?$K
;K
c           	         U R                   R                  (       a  U R                  (       a  U R                  (       dn  U R                  (       a]  [
        R                  " U R                  U R                  5      nU(       a  [        R                  " S5        U =R                  U-  sl        U R                  " U R                  U R                  -   [        U R                  5      [        U R                  R                  5       5      -   U R                   U R"                  U R$                  U R                  4U R&                  U R(                  R*                  U R(                  R,                  U R.                  U R0                  S.U R2                  D6nU R4                  (       a'  UR                  R6                  " U/U R4                  Q76   U$ )NzORDER BY columns added implicitly due to DISTINCT is deprecated and will be removed in SQLAlchemy 2.0.  SELECT statements with DISTINCT should be written to explicitly include the appropriate columns in the columns clauser  )r   rw   r  r  r  r   r  r  r   warn_deprecated_20r  r  rb   rd  r,  r  r}  r  r   r  r`   r  r  r  r  r  r`  r  )r\   to_addri   s      rR   r  'ORMSelectCompileState._simple_statement  s^      88t'7'7>>$$dmmF ''4   F* **  4#9#99$##$uT-=-=-D-D-F'GG  !!MM
 ++''.. 11BBnn!22
 
	 --iN$:M:MNrQ   c                    [         R                  nUR                  UUUS9nU(       a  UUl        U(       a  UUl        U(       a  U=R
                  [        U5      -  sl        U(       a  UR                  R                  " U/UQ76   O"U(       a  UR                  R                  U5        U(       a  U=R                  [        U5      -  sl	        UUl
        UUl        UUl        UUl        U(       a  UUl        U(       a  UUl        UUl        U(       a  UUl        U	(       a  U	Ul        U
(       a  UR&                  R                  " U/U
Q76   Ub  UR(                  R                  " U/UQ76   U$ )N)r  rc  r  )r   Select_create_raw_selectr}  r  r~  rb   r  r  r  _limit_clause_offset_clause_fetch_clause_fetch_clause_options	_prefixes	_suffixesr  r  r  r  r  )r\   raw_columnsr  where_criteriahaving_criteriar   r  r  r  r  r  r  limit_clauseoffset_clausefetch_clausefetch_clause_optionsr  r  prefixessuffixesr  r  ri   s                          rR   r  'ORMSelectCompileState._select_statement  sC   0 --$$ . 
	 (6I%)8I&''5?:'--iF+F--i8''5?:'".	#0	 ".	*>	'"*I"*I$.	!$I)8I&..yE9E'&&55, rQ   c                    SUR                   ;   aC  UR                   S   nU R                  R                  US 5      nU(       a  UR                  U5      $ [	        U[
        R                  5      (       a  UnO[        US5      (       a  UR                  nOg U R                  R                  US 5      nU(       a  UR                  U5      $ g )Nr  r   )	r  r   r   adapt_clauser   r   
FromClauser  r   )r\   r   searchr  s       rR   _adapt_polymorphic_element0ORMSelectCompileState._adapt_polymorphic_element%  s    W111)).9F..2264@E))'22gz4455FWg&&]]F**..vt<%%g.. rQ   c                     SUR                   ;   aH  U R                  R                  UR                   S   S5       H  nUR                  U5      nUc  M  Us  $    g )Naliased_generationrA   )r  r&  r   replace)r\   r   r   replaced_elems       rR   _adapt_aliased_generation/ORMSelectCompileState._adapt_aliased_generation7  s_      7#7#774488$$%9:B !( 8 ,(( rQ   c                 P    U(       a  U Vs/ s H  o2" US5      PM     sn$ U$ s  snf )NTrA   )r\   r  r  os       rR   r  %ORMSelectCompileState._adapt_col_listD  s+    6:;dOAt,d;;K <s   #c                   ^ / mU R                   (       aD  TR                  U R                  R                  (       a  SOSU R                   R                  45        U R
                  (       a  TR                  SU R                  45        U R                  (       a  TR                  SU R                  45        T(       d  g U4S jnU$ )NFTc                 @   > U4S jn[         R                  " U 0 U5      $ )Nc                    > SU R                   ;   =(       d    SU R                   ;   nT H$  u  p#U(       d	  U(       d  M  U" U 5      nUc  M"  Us  $    g )N
_orm_adaptr  )r  )r  is_orm_adaptalways_adaptr   eadapterss        rR   r   RORMSelectCompileState._get_current_adapter.<locals>._adapt_clause.<locals>.replacet  sR     D$5$55 ;%):)::  .6)L#||#DM=#$H	 .6rQ   )r   replacement_traverse)r   	as_filterr   r.  s      rR   _adapt_clauseAORMSelectCompileState._get_current_adapter.<locals>._adapt_clausep  s    	% 00WEErQ   )	r  r   r   r~   r   r&  r"  r   r  )r\   r2  r.  s     @rR   r#  *ORMSelectCompileState._get_current_adapterJ  s     OO ++DD ((00	 $$OOUD$B$BCD %%OOUD$C$CDE	F" rQ   c                    U GH>  u  p4pVUS   nUS   nU R                  5         [        U5      nUb  [        U5      nUc$  [        U[        R                  5      (       a  UnS nOSUR
                  ;   a  UR
                  S   nUc8  UR                  (       d'  [        US5      (       d  [        R                  " S5      eS n	[        U[        R                  5      (       Ga=  [        USS 5      n	Uc#  U	(       a  U	nOUR                  n UR                  nUR                   nU R"                  R%                  US 5      n[        U[&        5      (       aA  UR(                  R+                  U5      (       a!  UR,                  n[        XR.                  5      nUR                  n[        U[0        R2                  5      (       d  UnUb[  X[LaW  UR
                  R%                  SS 5      ULa8  [        R4                  " S	UR
                  R%                  SU5      < S
U< 35      eOUb  S nUnOS =pU R7                  UUUUUSSUU5	        GMA     g ! [         a7  n
[        R                  " [        R                  " SU-  5      U
S9   S n
A
GNpS n
A
ff = f)Nisouterfullr  r   9Expected mapped entity or selectable/table as join target_of_type0Join target %s does not refer to a mapped entityreplace_contextzexplicit from clause z4 does not match left side of relationship attribute F)_reset_joinpointr   r   r   r  r  r  r  rf   r  r   r   r  AttributeErrorr   raise__parententityr   r   r   r   isaaliased_classr   r   QueryableAttributerg   _join_left_to_right)r\   argsentities_collectionrightr  r  r  r6  r7  of_typeerrleftr  props                 rR   rz  ORMSelectCompileState._join  s   /3+UeI&G=D!!#ENE#"8,Jz00% %  !5#5#55**>:**75(3K3K ..: 
 G(J$=$=>> "(J== ' ( 1 1	$)LLE  --2266tTB eZ00U\\5E5Ed5K5K ..D&t\\:H((!(J,I,IJJ#H
 $)!..22>4H#$ %88 !& 2 2 6 6~u M (	  " #" $$#
O 04l  .  KK & 4 4%46;%<!" 14 s   I
J,JJc                 <   U GH  u  p4pVUS   nUS   nUS   n	US   n
US   nUb*  [        U[        R                  5      (       d  [        U5      nUb*  [        U[        R                  5      (       d  [        U5      nU	(       d  U R	                  5         OVU R
                  R                  SS5      nU(       d  UnO0U(       a)  U R                  R                  US5      U R                  U'   [        U[        R                  [        R                  45      (       a  Uc  UnSnOSUR                  ;   a  UR                  S   nUc8  UR                  (       d'  [        US	5      (       d  [        R                  " S
5      e[        U[        R                  5      (       a  [        USS5      nOSn[        U[        R                  5      (       a$  [!        [        U R#                  5       5      U5      nOpU	(       ai  [        U[        R                  5      (       aJ  U R#                  5       n[        U5      n[        US	S5      UR$                  L a  [!        XR&                  5      n[        U[        R                  5      (       Ga9  Uc#  U(       a  UnOUR(                  n UR*                  nUR$                  nU R0                  R                  US5      n[        U[2        5      (       aA  UR4                  R7                  U5      (       a!  UR8                  n[        XTR&                  5      nUR(                  n[        U[:        R<                  5      (       d  UnU(       d`  XSUR&                  4nUU R
                  ;   aB  U R
                  U   R?                  5       nUU R
                  4US'   U RA                  U5        GM  OS=nnU RC                  UUUUUUUUU
5	        GM     g! [,         a7  n[        R.                  " [        R                  " SU-  5      US9   SnAGNrSnAff = f)zconsumes arguments from join() or outerjoin(), places them into a
consistent format with which to form the actual JOIN constructs.

r6  r   from_joinpointr7  r  NrA   r  r   r8  r9  r:  r;  prev)"r   r   string_typesr   r=  
_joinpointr   r&  r   r  r  r  r  rf   r  r   r   _joinpoint_zeror@  r   r   r  r>  r?  r   r   r   rA  rB  r   rC  copy_update_joinpointrD  )r\   rE  rF  rG  r  rJ  r  	outerjoincreate_aliasesrN  r7  r  prev_aliased_generationrH  jp0rX  rI  r  rK  edgejps                        rR   r|  "ORMSelectCompileState._legacy_join  s   
 /3*Udi(I"9-N"#34N=D!&';!<  E4;L;L)M)M#J$++- - #8, "%%'*.//*=*=($+' *)@&, 1155/ --* J55t7H7HI  $ 5#5#55**>:**75(3K3K ..: 
 (J$=$=>>!(J=(D$5$566 1D0023X  J*33% % **,s|440H4J4JJ4T<<HH (J$=$=>> = ' ( 1 1	$)LLE  --2266tTB eZ00U\\5E5Ed5K5K ..D&t\\:H((!(J,I,IJJ#H% !2Dt. "__T2779&*DOO%<6
..r2 
 #"t $$#"
] /3~  .  KK & 4 4%46;%<!" 14 s   O
P$,PPc                 V    U R                   R                  SU R                  5       5      $ )N_joinpoint_entity)rQ  r   r  r"  s    rR   rR  %ORMSelectCompileState._joinpoint_zero  s#    ""#68I8I8KLLrQ   c
           
      d   Uc  Ub   eU R                  XX45      u  nn
nOU R                  X5      u  n
nX#L a&  U(       d  [        R                  " SU< SU< S35      eU R	                  X#XEXg5      u  pnUR
                  (       d  U R                  U5      nOSnU
bG  U R                  U
   nU R                  SU
 [        UUUUU	US9/-   U R                  U
S-   S -   U l        gUb(  [        X   [        5      (       d   eX   R                  nOUnU R                  [        UUUUU	US9/-   U l        g)zgiven raw "left", "right", "onclause" parameters consumed from
a particular key within _join(), add a real ORMJoin object to
our _from_obj list (or augment an existing one)

NzCan't construct a join from z to z, they are the same entityrA   )r6  r7  _extra_criteriar   )"_join_determine_implicit_left_side_join_place_explicit_left_siderf   rg    _join_check_and_adapt_right_sider  _get_extra_criteriard  r   r   r   r   )r\   rF  rJ  rG  r  rK  rV  r  rU  r7  replace_from_obj_indexuse_entity_indexr_infoextra_criterialeft_clauses                  rR   rD  )ORMSelectCompileState._join_left_to_right  s   $ < <<
 77#5	&  334GN&  =,,)-u6  #'"G"G#
x ##!55f=NN!- ++,BCK !!"9#9:#  )!(6	
 ##$:Q$>$@AB    + "'9=    2CNN" $ 1 1%$2	5 	!DrQ   c                    [        U5      nS=pgU R                  (       a  [        R                  " U R                  UR                  U5      n[        U5      S:X  a  US   nU R                  U   nGOb[        U5      S:  a  [        R                  " S5      e[        R                  " SU< S35      eU(       Ga  0 n	[        U5       H]  u  pUR                  nUc  M  [        U5      nXL a  M'  [        U[        5      (       a  X4XR                  '   MM  SU4XR                  '   M_     [        U	R                  5       5      n[        R                  " XR                  U5      n[        U5      S:X  a  XUS         u  prOV[        U5      S:  a  [        R                  " S5      e[        R                  " SU< S35      e[        R                  " S5      eX&U4$ )zWhen join conditions don't express the left side explicitly,
determine if an existing FROM or entity in this query
can serve as the left hand side.

Nr   r   a  Can't determine which FROM clause to join from, there are multiple FROMS which can join to this entity. Please use the .select_from() method to establish an explicit left side, as well as providing an explicit ON clause if not present already to help resolve the ambiguity.zDon't know how to join to z. Please use the .select_from() method to establish an explicit left side, as well as providing an explicit ON clause if not present already to help resolve the ambiguity.zgNo entities to join from; please use select_from() to establish the left entity/selectable of this join)r   rd  r   find_left_clause_to_join_fromr   r  rf   rg   	enumerateentity_zero_or_selectabler   r   r  keys)r\   rF  rJ  rG  r  rg  re  rf  indexes	potentialentity_indexr   r  ent_infoall_clausess                  rR   ra  8ORMSelectCompileState._join_determine_implicit_left_side  s   & 488 <<!!6#4#4hG 7|q )0&(()?@W!005  00
 9>	@  ! I%./B%C!66>"6?%
 c=111=0FInn-6:F^I112 &D  y~~/0K<<..G 7|q )2wqz3J)K& $W!005  00
 9>	@  ,,1  -===rQ   c                    S=p4[        U5      nU R                  (       a\  [        R                  " U R                  UR                  5      n[        U5      S:  a  [        R                  " S5      eU(       a  US   nUc_  U(       aX  [        US5      (       aG  [        U5       H8  u  px[        U[        5      (       d  M  UR                  U5      (       d  M4  Un  X44$    X44$ )zWhen join conditions express a left side explicitly, determine
where in our existing list of FROM clauses we should join towards,
or if we need to make a new join, and if so is it from one of our
existing entities.

Nr   zrCan't identify which entity in which to assign the left side of this join.   Please use a more specific ON clause.r   r   )r   rd  r   #find_left_clause_that_matches_givenr   r  rf   rg   r  rm  r   r   corresponds_to)	r\   rF  rJ  re  rf  l_inforp  idxr   s	            rR   rb  4ORMSelectCompileState._join_place_explicit_left_sideh  s    2 598BB!!6#4#4G 7|a00!  )0& #*#))%&9: c=11c6H6H6N6N'*$%77 ; &77rQ   c                 	   [        U5      n[        U5      nSn	U(       d  [        USS5      n
U
(       a  U
R                  (       d)  [        U
R                  [
        R                  5      (       ax  U R                  =(       d    UR                  / HT  n[        R                  " UR                  U5      (       d  M+  [        R                  " XR                  5      (       d  MR  Sn	  O   U	(       d  U(       d<  UR                  UR                  L a#  [        R                  " SUR                  -  5      e[        USS5      UR                  [        USS5      pn
U
(       aE  U(       a>  U
R                  UR                  5      (       d  [        R                  " SU< SU< 35      e[        US5      (       a  U =R                   U4-  sl        SnUR"                  (       Ga-  U(       a  UR                  n
UR$                  (       a  U R'                  5       nUb	  U" US5      nOU(       a  UR)                  U
R                  5      (       d=  [        R                  " S	UR*                  < S
U
R                  R*                  < S35      e[        U[
        R,                  5      (       a'  [.        R0                  " [2        R4                  U5      nSn[7        X5      n[8        R:                  " SU
-  SSS9  OU(       a  [        R                  " S5      eU
=(       a    U(       + =(       a    U	nU(       d9  U(       d  U(       a+  [7        USS9nSnU(       d  [8        R<                  " SU
-  SS9  U(       ar  U
(       d   e[?        X*R@                  S9nU(       d  U RC                  U
U5        OU(       a4  SUl"        U4U RF                  RI                  US5      -   U RF                  U'   OUR"                  (       d|  U(       du  U
R                  (       ad  [        U
RJ                  [
        RL                  5      (       a;  U RC                  U
[        RN                  " U
R                  U
R@                  5      5        [        U[
        RP                  5      (       a   U R'                  5       nU(       a	  U" US5      nU(       d5  U(       a.  U RS                  UXURT                  4U RV                  4US.5        O
UUS.U l+        [        U5      X#4$ )ztransform the "right" side of the join as well as the onclause
according to polymorphic mapping translations, aliasing on the query
or on the join, special cases where the right and left side have
overlapping tables.

Fr   NTz*Can't join table/selectable '%s' to itselfr   zJoin target z9 does not correspond to the right side of join condition zSelectable 'z' is not derived from ''zAn alias is being generated automatically against joined entity %s for raw clauseelement, which is deprecated and will be removed in a later release. Use the aliased() construct explicitly, see the linked example.z1.4xaj1)codezpThe aliased=True parameter on query.join() only works with an ORM entity, not a plain selectable, as the target.)flatzAn alias is being generated automatically against joined entity %s due to overlapping tables.  This is a legacy pattern which may be deprecated in a later release.  Use the aliased(<entity>, flat=True) construct explicitly, see the linked example.xaj2)equivalentsrA   )r]  rO  r  )r]  r  ),r   r   with_polymorphicr   r   r   Joinrd  r   r   selectables_overlaprf   rg   common_parentr   r  rw  is_clause_element_is_lateralr#  is_derived_fromdescriptionr  r   r/  r   FromClauseRoler   r   warn_deprecatedwarnr   r   r   _debugr&  r   _with_polymorphic_selectabler  r   r   rT  r   rQ  )r\   rJ  rG  r  rK  rV  r  ry  rg  overlapright_mapperr  right_selectableright_is_aliasedneed_adapterr  aliased_entityr   s                     rR   rc  6ORMSelectCompileState._join_check_and_adapt_right_side  se    "68T:L --l==zOO $ 1 1 Hf6G6G5H HH33))8 "66 "3"3  #' !I >6#4#44,,<##$  FHd+F.6 )9  ..t{{;;,,9>J  68$$F9, ####{{++ #'";";"=". ,E48E (77 33  !44 -88(;;GG  .
0E0EFF'0'7'7,,.>($ $(L  ?$$D
 ## 	   00  &J.>*>J7> E-EL!		D ##  	 < #C#CG "77gN#!%A--112DbIAJ))*<= (($--99--  33&& ++ 44 h
 8 899"779O*8T: $"")."4884dooF*< &+&8DO
 u~u..rQ   c                     Xl         SU;   a4  US   u  p#[        U5      nUR                  5       X2'   X#4US'   UnSU;   a  M4  Xl        g )NrO  )rQ  rd   rS  	_joinpath)r\   rZ  frO  s       rR   rT  'ORMSelectCompileState._update_joinpoint  sQ     ljGA:DggiDGBvJB l rQ   c                 &    U R                   U l        g rV   )r  rQ  r"  s    rR   r=  &ORMSelectCompileState._reset_joinpoint  s    ..rQ   c           
      X   U R                   R                  U R                   R                  U R                  U R                  U R                   R
                  U R                   R                  U R                  =(       d    S U R                   R                  U R                   R                  S.	$ )N)	r  r  r  r  r  r  r  r  r  )
r`   r  r	  r  r  r  r  r  r
  r  r"  s    rR   r  "ORMSelectCompileState._select_args  s     !11??!22AA++--77--77- 11??%%;;
 	
rQ   c                 
   U R                   nUR                  S5      S L=(       d^    UR                  S5      S L=(       dD    UR                  SS5      =(       d+    UR                  SS5      =(       d    UR                  SS5      $ )Nr  r  r  Fr  rA   r  )r  r   )r\   kwargss     rR   r  -ORMSelectCompileState._should_nest_selectable  sv    ""JJ~&d2 -zz/*$6-zz*e,- zz-,- zz*e,	
rQ   c                    ^ ^ STR                   4T R                  ;   a/  [        UU 4S jT R                  STR                   4    5       5      $ g)Nadditional_entity_criteriac              3      >#    U  HP  nUR                   (       d  UR                  TL d  M%  UR                  T5      (       d  M=  UR                  T5      v   MR     g 7frV   )include_aliasesr  _should_include_resolve_where_criteria)rY   aer   r\   s     rR   r]   <ORMSelectCompileState._get_extra_criteria.<locals>.<genexpr>  sW      B &&"))x*?	 5
 &&t, 5**844s   $AAArA   )r   r
  rb   )r\   r   s   ``rR   rd  )ORMSelectCompileState._get_extra_criteria  sZ    (OO
 ##$  0018??C   rQ   c                 T   U R                    H  nUR                  R                  SS5      nU(       d  M(  UR                  R                  c  SUR                  4U R
                  ;   d  M]  X R                  ;  d  Mn  UUR                  (       a  UR                  OS4U R                  U'   M     [        U R                  R                  5       5      nU H  u  p$X R                  ;   a  M  UR                  R                  nU R                  R                  (       a  / nOU R                  U5      nUb  Xe4-  nU R                  5       nU HZ  nU(       a  UR!                  U5      nU(       a"  ["        R$                  " USS05      nU" US5      nU =R&                  U4-  sl        M\     M     g)a  Apply extra criteria filtering.

For all distinct single-table-inheritance mappers represented in
the columns clause of this query, as well as the "select from entity",
add criterion to the WHERE
clause of the given QueryContext such that only the appropriate
subtypes are selected from the total results.

Additionally, add WHERE criteria originating from LoaderCriteriaOptions
associated with the global context.

r  Nr  r*  TF)rd  r  r   r   _single_table_criterionr
  r  r   r  r   r  rw  r   r   rd  r#  traverser   _deep_annotater}  )	r\   
fromclauser   r  r   single_critr  r  rl  s	            rR   r  0ORMSelectCompileState._adjust_for_extra_criteria  sv    ++J!..22>4HH OO;;G4hooF--. $@$@@ )1)B)BH%%:,,X6 ,$ T1188:;#)X..."//AAK##66-/*-1-E-Eh-O*&*n<*"779O2"++D1D"#224,9MND*47D$$/$ 3 $*rQ   )(r&  r   r  r  r  r  rw  r  rQ  r  r_  re   r   r   r}  rz   r   r   r+  r  r  r5   r   r   r  r  r,  r`  r  r\  rd  r
  r  r   r  r  r  r`   ri   r   rV   ):rB   rC   rD   rE   r_   r  rQ  r_  r  r'  r(  r)  r*  r+  r  r  r}  r  r   r   re  r   r  r  r  r   preload_moduler  r]  rx  r  r  r  r  r  r  r  r  r  r  r"  r  r#  rz  r|  rR  rD  ra  rb  rc  rT  r=  r   r  r  rd  r  rP   rA   rQ   rR   rU  rU  I  s   ((I
$O #!IOd dLVp " "H    " 

 

 	/0 1 &K

+*(0#"Un%NIV/$7rrh]~McJh>T@8DZ/x
) 
 
 
 
 80rQ   rU  c                    Uc  [         R                  XS9nUnUR                   Vs/ s H)  nUUR                  b  [	        UR                  5      OS 4PM+     sn VVs/ s Ha  u  pVUR
                  UR                  [        USS5      UR                  UR                  b  UR                  (       d  [        USS 5      OS S.PMc     snn$ s  snf s  snnf )N)r   r   Fr  )r   typer   exprr  )
rU  r   r   r  r   _label_namer  r   r  r  )query_or_select_stmtr)   r   ctx_entr   insp_ents          rR   r   r     s     -II  J 
 C( 

 &  ''3 D,,- &



MC OOHHx);UCHH*83M3M h$7	


 

s   0C	A(Cc                     U nUR                   (       a  UR                  nUb  U$ UR                  (       a9  SUR                  S   R                  ;   a  UR                  S   R                  S   $ [	        U5      $ )Nr  r   )r{  _last_joined_entityrc  r  _entity_from_pre_ent_zero)query_or_augmented_selectr\   r  s      rR   _legacy_filter_by_entity_zeror  	  sj    $D"66*&&~~.DNN1,=,J,JJ~~a --n==$T**rQ   c                 
   U nUR                   (       d  g UR                   S   nSUR                  ;   a  UR                  S   $ [        U[        5      (       a  UR                  $ SUR                  ;   a  UR                  S   $ U$ )Nr   r  bundle)r  r  r   r   r  )r  r\   r   s      rR   r  r  (	  s~    $D


A
C)))//	C-	.	.zz	S%%	%))
rQ   c                    U (       d  U$ U S   u  p#pEUS   nUc)  [        U[        [        R                  45      (       a  UnSnUb)  SUR                  ;   a  UR                  S   R
                  nUbB  Un[        U5      nUR                  (       d"  UR                  (       d  UR                  (       a  U$ Un[        U[        R                  5      (       a  UR
                  $ [        U[        5      (       aX  U(       a  [        U SS U5      n	OUn	U	c  g[        U	5      n	[        U	R
                  US5      n
U
b  U
R                  R
                  $ g)zgiven the legacy_setup_joins collection at a point in time,
figure out what the "filter by entity" would be in terms
of those joins.

in 2.0 this logic should hopefully be much simpler as there will
be far fewer ways to specify joins with the ORM

r?  rN  Nr  r   )r   strr   r  r  r  r   r  r   r  $_legacy_determine_last_joined_entityr   r   )r  r  rG  r  left_r  rN  last_entityinsprO  attrs              rR   r  r  9	  sA     '2"o#Ue+,NJZ../  ^u/A/AA"">299{#!!T%:%:dnnKK+z8899!!! (C  7Ab!;D D<t}t{{Hd3==''' rQ   c                   8    \ rS rSrSrSrSrSrSr\	S 5       r
Srg)r  i|	  z:represent an entity column returned within a Query result.rA   Fc                    [        U5       GH`  u  pVUR                  (       a=  UR                  (       a   U R                  UUR                  UU5        MH  UR                  nUR
                  (       a  UR                  (       aE  SUR                  ;   a  [        UUUU5        M  [        R                  UUR                  UUU5        M  UR                  R                  SS5      (       a  [        UUUU5        M  UR                  (       a&  [        R                  UUR                  UUU5        GM#  [        R                  UU/UUU5        GM@  UR                  (       d  GMT  [        XU5        GMc     U$ )Nr  r  F)rm  _is_lambda_element_is_sequencer  	_resolvedr  r  r  r   _ColumnEntity_for_columns_select_iterabler   _BundleEntity_is_clause_list	is_bundle)r   r)   entitiesrF  r   rz  r  s          rR   r  _QueryEntity.to_compile_state	  sS   
 %X.KC((&&((%((++	 #--F''''%)<)<<%)"//	 &22)"33// **..x??%)"//	  // &22)"33// &22)#H// !!!m5HIs /v #"rQ   N)rB   rC   rD   rE   rQ  rn   _non_hashable_value_null_column_typeuse_id_for_hashr   r  rP   rA   rQ   rR   r  r  |	  s-    DIO?# ?#rQ   r  c                   f    \ rS rSrSrSrS rSrSrSr	\
S 5       r\
S 5       rS rS	 rS
 rS rSrg)r   i	  z mapper/class/AliasedClass entity)
r  r   r  r   path_extra_entitiesr  r   r   _polymorphic_discriminatorc                    UR                  U 5        U(       a!  UR                  c  Xl        SUl        SUl        UR                  S   nUR
                    U=oPl        UR                  nX l        UR                  =U l	        nU R                  4U l
        UR                  (       a  UR                  U l        OUR                  R                  U l        UR                  U l        UR                   U l        XQR$                  ;   az  ['        UR$                  U   5      nU R                  (       a  [)        S5      eUR+                  UR,                  UR.                  5      u  pXl        Xl        UR2                  U l        g UR.                  U l        UR,                  U l        UR2                  U l        UR6                  (       a  UR9                  XPR.                  5        g g )NTr  z6Can't use with_polymorphic() against an Aliased object)r   r   r'  r(  r  _post_inspectr  r  r  r   r  r   r   r  class_rB   r   r  rz   r   r   _with_polymorphic_argswith_polymorphic_mappersr   r   polymorphic_onr   _should_select_with_poly_adapterr   )
r\   r)   r  rF  r   r   r   r  mappersr  s
             rR   rl   _MapperEntity.__init__	  s    	""4(,,404-15M..2M+$$^4&,,#	'.f $		|$$'}}D%}}55D ( 9 9++	@@@ BB8LMB$$)L  !' = =++R]]!G .5*&O.0.?.?D+ '11DO-5-N-ND*.6.E.ED+66>>oo 7rQ   Tc                 .    U R                   R                  $ rV   )r   r  r"  s    rR   r  _MapperEntity.type
  s    {{!!!rQ   c                     U R                   $ rV   )r  r"  s    rR   rn  '_MapperEntity.entity_zero_or_selectable
  s    rQ   c                 .    [        U R                  U5      $ rV   )r
   r  r\   r  s     rR   rx  _MapperEntity.corresponds_to
  s    %d&6&6??rQ   c                 T   S nU R                   (       d8  UR                  (       a&  UR                  R                  U R                  S 5      nOU R                  R
                  nU(       a3  UR                  (       a  UR                  UR                  5      nU$ Un U$ UR                  nU$ rV   )r   r   r   r   r  r  r  wrap)r\   r)   r   rets       rR   _get_entity_clauses!_MapperEntity._get_entity_clauses"
  s    $$22'==AAKK &&//G,,ll=#@#@A 
	  
  //C
rQ   c                    UR                   nU R                  U5      nUR                  (       a#  U(       a  UR                  UR                  5      nOU(       d  UR                  nUR                  U L a#  UR
                  R                  nUR                  nOS =pV[        R                  " U U R                  UUU R                  UUUU R                  S9	nXpR                  U R                  4$ )N)only_load_propsr4   polymorphic_discriminator)r)   r  r+  r  r   r   r   r4   r   _instance_processorr   r  r  r  r  )r\   r   r   r)   r   r  r4   	_instances           rR   row_processor_MapperEntity.row_processor8
  s    --**=9//Gll=#G#GHG#::G((D0+;;LLO#11M.22O//KKII+'&*&E&E

	 **D,@,@@@rQ   c                    U R                  U5      nU R                  R                  nUc  SU R                  4UR                  ;   a:  U R                  nUUR
                  (       a  UR                  OS 4UR                  U'   [        R                  " UU R                  U U R                  UUR                  U R                  UR                  R                  U R                  S9	  UR                   R#                  U R$                  5        g )Nr  )r  r  r  )r  r   r  r
  r  r   r  r  r   _setup_entity_queryr  r  r   r   r   r  r  r   r   )r\   r)   r   single_table_critr   s        rR   r  !_MapperEntity.setup_compile_stateU
  s    **=9 KK??),dkk:../ ''H%-%>%>!!D?M11(;
 	##KKII))!;;)99JJ&*&E&E
	
 	,,33DOODrQ   )
r  r  r  r   r  r  r   r   r  r   N)rB   rC   rD   rE   rQ  rn   rl   supports_single_entityr  r  r   r  rn  rx  r  r  r  rP   rA   rQ   rR   r   r   	  sb    *I8t "O" "    @,A:ErQ   r   c                   l    \ rS rSrSrSr  SS jr\S 5       r\S 5       r	S r
\S	 5       rS
 rS rSrg)r  it
  rA   )r  r  r  r  r   r  Nc           
      2   SUl         UR                  S   nU(       a  UR                  R                  U 5        OUR                  U 5        [	        U[
        R                  [        R                  45      (       a  UR                  5       nOUnU=U l
        U l        [        U5      U l        UR                  U l        / U l        U(       ao  UR                   H_  nSUR                  ;   a  [!        UUUUU S9  M"  [	        U["        5      (       a  [!        UUUUU S9  MF  [$        R'                  UU/US UU S9  Ma     U R                  R(                  U l        U R*                  (       a3  UR,                  R.                  (       d  [0        R2                  " S5        g g g )NTr  parent_bundlezKThe Bundle.single_entity flag has no effect when using 2.0 style execution.)r(  r  r   r   r   r   rC  r   r  r  r  r  r  r   r  exprsr  r   _ORMColumnEntityr  single_entityr  r   rw   r   r  )r\   r)   r  rF  r   setup_entitiesr  r  s           rR   rl   _BundleEntity.__init__
  st    +/'  *##**40&&t,:00*2K2KL
 
 ,,.FF"((diL	!;;t000!%++&*  f--!%++&* %11%++&* 2 % %6 '+kk&?&?#''!11II##- J (rQ   c                 :    U R                   nUb  UR                  $ g rV   )r  r   )r\   r  s     rR   r   _BundleEntity.mapper
  s       <<rQ   c                 P    U R                    H  nUR                  nUc  M  Us  $    g rV   )r   r  r\   r   r  s      rR   r  _BundleEntity.entity_zero
  s)    >>COOE  "
 rQ   c                     grP  rA   r  s     rR   rx  _BundleEntity.corresponds_to
  s     rQ   c                 P    U R                    H  nUR                  nUc  M  Us  $    g rV   )r   rn  r
  s      rR   rn  '_BundleEntity.entity_zero_or_selectable
  s+    >>C11E  "
 rQ   c                 L    U R                    H  nUR                  U5        M     g rV   )r   r  )r\   r)   r   s      rR   r  !_BundleEntity.setup_compile_state
  s    >>C##M2 "rQ   c           	          [        U R                   Vs/ s H  o3R                  X5      PM     sn6 u  pEnU R                  R	                  UR
                  XE5      nXpR                  U R                  4$ s  snf rV   )rc   r   r  r  create_row_processorr*   r  r  )r\   r   r   r   procslabelsextraprocs           rR   r  _BundleEntity.row_processor
  si    "<@NNKNS0NK 
u {{//uM%%t';';;; Ls   A3)r   r  r  r  r  r  rj  )rB   rC   rD   rE   r  rn   rl   r   r   r  rx  rn  r  r  rP   rA   rQ   rR   r  r  t
  sh    OI AF    
  3<rQ   r  c                   d    \ rS rSrSr\ S
S j5       r\S 5       r\S 5       r	\S 5       r
S rS	rg)r  i
  )_fetch_column_row_processorraw_column_indextranslate_raw_columnNc                    U Hy  nUR                   nSU;   a  US   n	O[        R                  " US5      n	U	(       a2  SUR                   ;   a  [        UUUU	UUUS9  MZ  [	        UUUU	UUUS9  Mk  [        UUUUUUS9  M{     g )Nr  r:   r   )r  r   extract_first_column_annotation_IdentityTokenEntityr  _RawColumnEntity)
r   r)   r3  rF  r  r   r  columnannotations_entitys
             rR   r  _ColumnEntity._for_columns
  s     F --K,%n5"BBN #v':'::(%+(+&3 %%+(+&3 !!'$'"/? rQ   c                 .    U R                   R                  $ rV   )r"  r  r"  s    rR   r  _ColumnEntity.type+  s    {{rQ   c                 L    U R                   R                  R                  (       + $ rV   )r"  r  hashabler"  s    rR   r  !_ColumnEntity._non_hashable_value/  s    ;;##,,,,rQ   c                 B    U R                   R                  R                  $ rV   )r"  r  _isnullr"  s    rR   r  _ColumnEntity._null_column_type3  s    {{'''rQ   c                 *   UR                   nU R                  bU  U R                  u  pEnU R                  (       a1  UUR                  R                  R
                  U R                     4-  nXEU4$ U R                  b  U R                  nOWU R                  nUR                  (       a  UR                  R                  U   nUR                  (       a  UR                  5       nUR                  (       a  UR                  R                  U   nUR                  U5      nX@R                  U R                   4nXl        U R                  (       aI  U R                   UR                  R                  R
                  U R                     4-   nX@R                  U4$ U$ rV   )r)   r  r  r   invoked_statementr  r  r  r"  r  r3  r  _deannotater+  _getterr  r  )	r\   r   r   r)   getter
label_nameextra_entitiesr"  r  s	            rR   r  _ColumnEntity.row_processor7  so   -- *151D1D.F((NN44AA--#  ~55 )''F [[F ,,&66>>vF""  ++-//"99AA&IF'&&(<(<<!$$!1100==))5 N
 ++^;;JrQ   )r  rV   )rB   rC   rD   rE   rn   r   r  r   r  r  r  r  rP   rA   rQ   rR   r  r  
  sd    I  / /b     - - ( (5rQ   r  c                   <    \ rS rSrSrSrSrSr S	S jrS r	S r
Srg)
r!  io  NF)r  r"  r  rn  r  c                 *   X l         X@l        US LU l        UR                  (       a  U=R                  SS0-  sl        U(       a  UR
                  (       a  S U l        OUR                  U5      U l        U(       a  UR                  R                  U 5        OUR                  U 5        X l
        U R                  R                  (       a  U R                  R                  S   OS U l        U R                   U R                  4U l        S =U l        U l        g )Nr   Tr   )r  r  r  r   r   _is_text_clauser  r  r   r   r"  r  rn  r  r  r  )r\   r)   r"  rF  r  r   r  s          rR   rl   _RawColumnEntity.__init__|  s     	 0$4D$@!??))j$-??)"f&<&<#D,>>vFD##**40&&t,,0KK,E,EDKK%%a(4 	& !%		4;;7377T0rQ   c                     grP  rA   r  s     rR   rx  _RawColumnEntity.corresponds_to  s    rQ   c                 ,   UR                  5       nU(       a  U" U R                  S5      nOU R                  nUR                  (       a  UR                  5       nUR                  R                  U5        UR                  R                  U5        X0l        g rP  )	r#  r"  r  r0  r   r   r  r   r  )r\   r)   r  r"  s       rR   r  $_RawColumnEntity.setup_compile_state  ss    '<<>$T[[%8F[[F '')F$$((0%%,,V4#rQ   )	r  r  r  r  r"  rn  r  r  r  rV   )rB   rC   rD   rE   r  r   r  rn   rl   rx  r  rP   rA   rQ   rR   r!  r!  o  s.    KF"I 8B$rQ   r!  c                   8    \ rS rSrSrSrSr S
S jrS rS r	S	r
g)r  i  zColumn/expression based entity.F)r  r   r"  r  rn  r  r  Nc                    UR                   nUn	UR                  SS 5      n
UR                  SU	5      nU
(       a#  [        UR                  U
5      U l        SU l        OX l        US LU l        XPl        U(       a  UR                  X*S9U l        OS U l        U	R                    U	=U l
        =U l        nU	R                  =U l        nU(       a  UR                  R                  U 5        OUR                  U 5        SUl        X l        S =U l        U l        U R                  U R                   4U l        UR(                  (       a  UR+                  XR,                  5        g g )N	proxy_keyproxy_ownerF)r   T)r  r   r   r  r  r  r  r  r  r  r  rn  r   r   r   r(  r"  r  r  r  r  r   r   )r\   r)   r"  rF  r  r  r   r  r#  r$  orm_keyrA  r  r   s                 rR   rl   _ORMColumnEntity.__init__  sA    )) //+t4!oomW= 2 2G<DI(-D% I(8(DD% 0,>>  ?  D  $DDKKK49E&~~-f##**40&&t,*.'377T0 $		4;;722::'' 3rQ   c                     [        U5      (       a  XR                  L $ [        U R                  5      (       + =(       a    UR                  U R                  5      $ rV   )r   r  r  r  s     rR   rx  _ORMColumnEntity.corresponds_to   sP    V$$----(    9&&t'7'789rQ   c                    UR                  5       nU(       a  U" U R                  S5      nOU R                  nU R                  nU R                  R                  nUc  SU R                  4UR
                  ;   a.  UUR                  (       a  UR                  OS 4UR                  U'   UR                  (       a!  UR                  (       d  UR                  5       n[        U R                  R                  5      R                  UR                  R                  5      (       a%  UR                   R#                  UR                  5        UR$                  R'                  U5        UR(                  R#                  U5        X0l        g )NFr  )r#  r"  r  r   r  r
  r   r  r  r  _expression_labelr0  r   r  intersectionr   r  r   r   r   r  r  )r\   r)   r  r"  r  r  s         rR   r  $_ORMColumnEntity.setup_compile_state	  s/   '<<>$T[[%8F[[F   KK??),dkk:../
 "'"8"8d<M11%8
 v'?'? '')F t{{(()66**
 
 00778H8HI$$((0%%,,V4#rQ   )r  r  r  r  r"  r  rn  r  r   r  r  rV   )rB   rC   rD   rE   rQ  r  rn   rl   rx  r  rP   rA   rQ   rR   r  r    s'    )"I$ >@9&$rQ   r  c                   $    \ rS rSrSrS rS rSrg)r   i2  Fc                     g rV   rA   )r\   r)   s     rR   r  (_IdentityTokenEntity.setup_compile_state5  s    rQ   c                 @   ^ U4S jnX0R                   U R                  4$ )Nc                 0   > TR                   R                  $ rV   )r,   rK   )rowr   s    rR   r2  2_IdentityTokenEntity.row_processor.<locals>.getter9  s    ''???rQ   )r  r  )r\   r   r   r2  s    `  rR   r  "_IdentityTokenEntity.row_processor8  s"    	@ '')=)===rQ   rA   N)rB   rC   rD   rE   r  r  r  rP   rA   rQ   rR   r   r   2  s     >rQ   r   rP  )Br   r   r   r   baser   r   path_registryr	   r   r
   r   r   r   r   r   rf   r   r   r   r   r   r   r   r   r   sql.baser   r   r   r   r   sql.selectabler   r    r!   r"   sql.visitorsr#   r$   rootr   r%  r_   symbolr%   objectr'   r   rr   
plugin_forr   r  rU  r   r  r  r  r  r   r  r  r!  r  r   rA   rQ   rR   <module>r\     s       # , ' (              "  , ( ' #  : - ; ( 4 ,""  " %=> `6 `F ++)-E 
j
l j
Z !!%)=>B? B ?BJ84] 84v !!%2n0O[ n0 3n0d5 6;@
+"@FI#6 I#XiEL iEXz<L z<z{L {|?$} ?$D~$} ~$B
>+ 
>rQ   