Ë
    r™ãj…¨ ã                  ó"  — U d Z ddlmZ ddlZddlmZ ddlZddlm	Z	 ddl
Z
ddlZddlZddlZddlmZ ddlZddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ddlm%Z% ddlm&Z& ddlm'Z' ddlm(Z( ddlm)Z) ddlm*Z* d d!l+m,Z, d d"l+m-Z- d d#l+m.Z. d d$l+m/Z/ d d%l+m0Z0 d d&l+m1Z1 d d'l+m2Z2 d d(l+m3Z3 d d)l+m4Z4 d d*l+m5Z5 d d+l+m6Z7 d d,l8m9Z9 d d-l8m:Z: d d.l,m;Z; d d/l,m<Z< d d0l,m=Z= d d1l,m>Z> d d2l,m?Z? d d3l/m@Z@ d d4l5mAZA d d5lBmCZC d6d7l+mDZD d6d+l+m6Z6 d6d8l6mEZE d6d9lFmGZG d6d:lFmHZH d6d;lFmIZI ejP                  �rhd d<lJmKZK d d=l,mLZL d d>l,mMZM d d?l,mNZN d d@l,mOZO d dAlPmQZQ d dBlRmSZS d dClRmTZT d dDlRmUZU d dElRmVZV d dFlWmXZX d dGlWmYZY d dHlWmZZZ d dIlWm[Z[ d dJlWm\Z\ d dKlWm]Z] d dLl/m^Z^ d dMl/m_Z_ d dNl/m`Z` d dOl/maZa d dPl/mbZb d dQl/mcZc d dRl/mdZd d dSl/meZe d dTl/mfZf d dUl/mgZg d dVl0mhZh d dWl3miZi d dXl3mjZj d dYl3mkZk d dZl3mlZl d d[l3mmZm d d\l3mnZn d d]l3moZo d d^l3mpZp d d_l3mqZq d d`l4mrZr d dal4msZs d dbl4mtZt d dcl4muZu d ddl4mvZv d del4mwZw d dfl4mxZx d dgl4myZy d dhl4mzZz d dil{m|Z| d djl{m}Z} d dkl{m~Z~ d dll{mZ d dmlBm€Z€ d6dnl�m‚Z‚ d6dolƒm„Z„ d6dplƒm…Z… d6dqlƒm†Z† d6drlƒm‡Z‡ d6dslƒmˆZˆ d6dtlƒm‰Z‰ d6dulƒmŠZŠ d6dvlƒm‹Z‹ d6dwlƒmŒZŒ edxe�f   ZŽh dy£Z� e�j                   dze�j"                  «      Z’ e�j                   d{e�j"                  «      Z“ e”dd|«      D � ch c]
  }  e�| «      ’Œ c} �j+                  d}g«      Z– e�j                   d~e�j"                  «      Z— e�j                   d~e�j"                  «      Z˜ e�j                   de�j"                  «      Z™ e�j                   d€e�j"                  «      Zše/�j6                  �j8                  Z� e�j                   d�e�j<                  «      ZŸd‚Z e dƒd„d…d†d‡dˆœZ¡i e1�jD                  d‰“e1�jF                  dŠ“e1�jH                  d‹“e1�jJ                  dŒ“e1�jL                  d�“e1�jN                  dŽ“e1�jP                  d�“e1�jR                  d�“e1�jT                  d‘“e1�jV                  d’“e1�jX                  d““e1�jZ                  d”“e1�j\                  d•“e1�j^                  d–“e1�j`                  d—“e1�jb                  d˜“e1�jd                  d™“i e1�jf                  dš“e1�jh                  d›“e1�jj                  dœ“e1�jl                  d�“e1�jn                  dž“e1�jp                  dŸ“e1�jr                  d “e1�jt                  d¡“e1�jv                  d¢“e1�jx                  d£“e1�jz                  d¤“e1�j|                  d¥“e1�j~                  d¦“e1�j€                  d§“e1�j‚                  d¨“e1�j„                  d©“e1�j†                  dª“¥e1�jˆ                  d«e1�jŠ                  d¬e1�jŒ                  d­e1�jŽ                  d®e1�j�                  d¯e1�j’                  d°e1�j”                  d±i¥ZËe0�j˜                  d²e0�jš                  d³e0�jœ                  d´e0�jž                  dµe0�j                   d¶e0�j¢                  d·e0�j¤                  d¸e0�j¦                  d¹e0�j¨                  dºe0�jª                  d»e0�j¬                  d¼e0�j®                  d½e0�j°                  d¾e0�j²                  d¿iZÚdÀeÛdÁ<   dÂdÃdÄdÅdÆdÇdÈdÉdÊdËdÌdÍdÎdÏdÐdÑœZÜe4�jº                  �j¼                  dÒe4�jº                  �j¾                  dÓe4�jº                  �jÀ                  dÔe4�jº                  �jÂ                  dÕe4�jº                  �jÄ                  dÖe4�jº                  �jÆ                  d×iZä G dØ„ dÙe«      Zå G dÚ„ dÛe#«      ZædZçdÜeÛdÝ<   d ZèdÞeÛdß<   d6ZédàeÛdá<   dâZêdãeÛdä<    G då„ dæe)«      Zë G dç„ dèeëdé¬ê«      Zì G dë„ dìe«      Zí G dí„ dîe«      Zî G dï„ dðe«      Zï G dñ„ dòeE«      Zð G dó„ dôe	«      Zñ G dõ„ döe	«      Zò G d÷„ døe	«      Zó eôeó«      \  ZõZöZ÷Zø G dù„ dú e�jò                  dúdûdüg«      «      Zú G dý„ dþ«      Zû G dÿ„ �d e6�jø                  «      Zý G �d„ �de2�jü                  e   e/�jþ                  «      �Z  G �d„ �de2�jü                  e   e/�jþ                  «      �Z G �d„ �de2�jü                  e   e/�jþ                  «      �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
yc c} w (  a]  Base SQL and DDL compiler implementations.

Classes provided include:

:class:`.compiler.SQLCompiler` - renders SQL
strings

:class:`.compiler.DDLCompiler` - renders DDL
(data definition language) strings

:class:`.compiler.GenericTypeCompiler` - renders
type specification strings.

To generate user-defined SQL strings, see
:doc:`/ext/compiler`.

é    )ÚannotationsN)ÚIntEnum)Úperf_counter)ÚAbstractSet)ÚAny)ÚCallable)Úcast)ÚClassVar)ÚDict)ÚFinal)Ú	FrozenSet)ÚIterable)ÚIterator)ÚList)ÚLiteral)ÚMapping)ÚMutableMapping)Ú
NamedTuple)ÚNoReturn)ÚOptional)ÚPattern)ÚProtocol)ÚSequence)ÚSet)ÚTuple)ÚType)ÚTYPE_CHECKING)Ú	TypedDict)ÚUnioné   )Úbase)Ú	coercions)Úcrud)Úelements)Ú	functions)Ú	operators)Úroles)Úschema)Ú
selectable)Úsqltypes)Úutil)Úis_column_element)Úis_dml)Ú	_de_clone)Ú_from_objects)Ú
_NONE_NAME)Ú _SentinelDefaultCharacterization)ÚNO_ARG)Úquoted_name)Ú	TupleType)Úprefix_anon_mapé   )Úexc)ÚFastIntFlag)ÚSelf)ÚTupleAny)ÚUnpack)Ú_AnnotationDict)Ú_AmbiguousTableNameMap)ÚCompileState)Ú
Executable)ÚExecutableStatement)ÚCacheKey)Ú_TableViaSelect)ÚCreateTableAs)Ú
CreateView)ÚExecutableDDLElement)ÚDelete)ÚInsert)ÚUpdate)Ú
UpdateBase)ÚUpdateDMLState)Ú
ValuesBase)Ú_truncated_label)ÚBinaryExpression)ÚBindParameter)ÚClauseElement)ÚColumnClause)ÚColumnElement)ÚFalse_)ÚLabel)ÚNull)ÚTrue_)ÚFunction)ÚCheckConstraint)ÚColumn)Ú
Constraint)ÚForeignKeyConstraint)ÚIdentityOptions)ÚIndex)ÚPrimaryKeyConstraint)ÚTable)ÚUniqueConstraint)Ú_ColumnsClauseElement)ÚAliasedReturnsRows)ÚCompoundSelectState)ÚCTE)Ú
FromClause)ÚNamedFromClause)ÚReturnsRows)ÚSelect)ÚSelectState)Ú_BindProcessorType)ÚTypeDecorator)Ú
TypeEngine)ÚUserDefinedType)Ú	Visitable)ÚCursorResultMetaData)Ú_CoreSingleExecuteParams)Ú_DBAPIAnyExecuteParams)Ú_DBAPIMultiExecuteParams)Ú_DBAPISingleExecuteParams)Ú_ExecuteOptions)Ú_GenericSetInputSizesType)Ú_MutableCoreSingleExecuteParams)ÚDialect)ÚSchemaTranslateMapTyperd   >^   ÚasÚdoÚinÚisÚonÚorÚtoÚallÚandÚanyÚascÚendÚforÚnewÚnotÚoffÚoldÚsetÚbothÚcaser	   ÚdescÚelseÚfromÚfullÚintoÚjoinÚleftÚlikeÚnullÚonlyÚsomeÚthenÚtrueÚuserÚwhenÚarrayÚcheckÚcrossÚfalseÚgrantÚgroupÚilikeÚinnerÚlimitÚorderÚouterÚrightÚtableÚunionÚusingÚwhereÚbinaryÚcolumnÚcreateÚexceptÚfreezeÚhavingÚisnullÚoffsetÚselectÚuniqueÚanalyseÚanalyzeÚbetweenÚcollateÚdefaultÚforeignÚleadingÚnaturalÚnotnullÚplacingÚprimaryÚsimilarÚverboseÚdistinctÚoverlapsÚtrailingÚ	initiallyÚ	intersectÚ	localtimeÚ	symmetricÚ
asymmetricÚ
constraintÚ
deferrableÚ
referencesÚcurrent_dateÚcurrent_roleÚcurrent_timeÚcurrent_userÚsession_userÚauthorizationÚlocaltimestampÚcurrent_timestampz^[A-Z0-9_$]+$z^[A-Z0-9_ $]+$é
   ú$z5^(?:RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULT)$z^(?:DEFERRED|IMMEDIATE)$z&^(?:CURRENT ROW|GROUP|TIES|NO OTHERS)$z\x5c(:\w*)(?![:\w])z%%(%(name)s)sú?z%%sz:[_POSITION]z$[_POSITION]z	:%(name)s)ÚpyformatÚqmarkÚformatÚnumericÚnumeric_dollarÚnamedú AND z OR z + z * z - ú % ú-z < z <= z != z > z >= z = z IS DISTINCT FROM z IS NOT DISTINCT FROM z || z MATCH z NOT MATCH z IN z NOT IN ú, ú FROM ú AS ú IS z IS NOT ú	 COLLATE zEXISTS ú	DISTINCT zNOT zANY zALL z DESCz ASCz NULLS FIRSTz NULLS LASTz ^ z | z & ú~z << z >> ÚcoalesceÚCURRENT_DATEÚCURRENT_TIMEÚCURRENT_TIMESTAMPÚCURRENT_USERÚ	LOCALTIMEÚLOCALTIMESTAMPÚrandomÚsysdateÚSESSION_USERÚUSERÚCUBEÚROLLUPzGROUPING SETSzDict[Type[Function[Any]], str]Ú	FUNCTIONSÚmonthÚdayÚyearÚsecondÚhourÚdoyÚminuteÚquarterÚdowÚweekÚepochÚmillisecondsÚmicrosecondsÚtimezone_hourÚtimezone_minute)rö   r÷   rø   rù   rú   rû   rü   rý   rþ   rÿ   r   r  r  r  r  ÚUNIONz	UNION ALLÚEXCEPTz
EXCEPT ALLÚ	INTERSECTzINTERSECT ALLc                  ó@   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   y	)
ÚResultColumnsEntrya  Tracks a column expression that is expected to be represented
    in the result rows for this statement.

    This normally refers to the columns clause of a SELECT statement
    but may also refer to a RETURNING clause, as well as for dialect-specific
    emulations.

    ÚstrÚkeynameÚnameúTuple[Any, ...]ÚobjectsúTypeEngine[Any]ÚtypeN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© ó    úb/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/sqlalchemy/sql/compiler.pyr	  r	  z  s1   … ñð ƒLØ;à
ƒIØ%àÓðð Óðr  r	  c                  ó(   — e Zd Z	 	 	 	 	 	 	 	 	 	 dd„Zy)Ú_ResultMapAppenderc                 ó   — y ©Nr  ©Úselfr  r  r  Útype_s        r  Ú__call__z_ResultMapAppender.__call__š  s   € ð r  N)
r  r
  r  r
  r  zSequence[Any]r   r  ÚreturnÚNone©r  r  r  r!  r  r  r  r  r  ™  s7   „ ðàðð ðð ð	ð
 ðð 
ôr  r  z
Literal[0]ÚRM_RENDERED_NAMEz
Literal[1]ÚRM_NAMEz
Literal[2]Ú
RM_OBJECTSé   z
Literal[3]ÚRM_TYPEc                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú_BaseCompilerStackEntryzSet[FromClause]Úasfrom_fromsÚcorrelate_fromsrf   r)   N©r  r  r  r  r  r  r  r+  r+  «  s   … Ø!Ó!Ø$Ó$ØÔr  r+  c                  ó@   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   y
)Ú_CompilerStackEntryr>   Úcompile_stateÚboolÚneed_result_map_for_nestedÚneed_result_map_for_compoundrf   Úselect_0úSelect[Unpack[TupleAny]]Úinsert_from_selectNr.  r  r  r  r0  r0  ±  s    … ØÓØ $Ó$Ø"&Ó&ØÓØ0Ô0r  r0  F)Útotalc                  ór   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 edd„«       Zedd„«       Zy)ÚExpandedStatea¹  represents state to use when producing "expanded" and
    "post compile" bound parameters for a statement.

    "expanded" parameters are parameters that are generated at
    statement execution time to suit a number of parameters passed, the most
    prominent example being the individual elements inside of an IN expression.

    "post compile" parameters are parameters where the SQL literal value
    will be rendered into the SQL statement at execution time, rather than
    being passed as separate parameters to the driver.

    To create an :class:`.ExpandedState` instance, use the
    :meth:`.SQLCompiler.construct_expanded_state` method on any
    :class:`.SQLCompiler` instance.

    r
  Ú	statementro   Ú
parametersú%Mapping[str, _BindProcessorType[Any]]Ú
processorsúOptional[Sequence[str]]ÚpositiontupzMapping[str, List[str]]Úparameter_expansionc                ó‚   ‡ — ‰ j                   €t        j                  d«      ‚t        ˆ fd„‰ j                   D «       «      S )zrTuple of positional parameters, for statements that were compiled
        using a positional paramstyle.

        z.statement does not use a positional paramstylec              3  ó<   •K  — | ]  }‰j                   |   –— Œ y ­wr  ©r<  )Ú.0Úkeyr  s     €r  ú	<genexpr>z6ExpandedState.positional_parameters.<locals>.<genexpr>î  s   øè ø€ ÒF¨c�T—_‘_ SÕ)ÑFùó   ƒ)r@  r7   ÚInvalidRequestErrorÚtuple©r  s   `r  Úpositional_parametersz#ExpandedState.positional_parametersä  s@   ø€ ð ×ÑÐ#Ü×)Ñ)Ø@óð ô ÓF°T×5EÑ5EÔFÓFÐFr  c                ó   — | j                   S )z.synonym for :attr:`.ExpandedState.parameters`.rD  rK  s    r  Úadditional_parametersz#ExpandedState.additional_parametersð  s   € ð �‰Ðr  N)r"  r  )r"  ro   )r  r  r  r  r  ÚpropertyrL  rN  r  r  r  r:  r:  ¹  si   … ñð" ƒNØ=à(Ó(ðð 6Ó5Ø+à(Ó(ðð 1Ó0ðð ò	Gó ð	Gð òó ñr  r:  c                  óÀ   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded	<   	 d
Zded<   	 d
Zded<   	 dZded<   	 dZded<   	 dZ	ded<   	 d
Z
ded<   	 d
Zded<   	 d
Zded<   y)Ú_InsertManyValuesa  represents state to use for executing an "insertmanyvalues" statement.

    The primary consumers of this object are the
    :meth:`.SQLCompiler._deliver_insertmanyvalues_batches` and
    :meth:`.DefaultDialect._deliver_insertmanyvalues_batches` methods.

    .. versionadded:: 2.0

    r2  Úis_default_exprr
  Úsingle_values_exprzList[crud._CrudParamElementStr]Úinsert_crud_paramsÚintÚnum_positional_params_countedFÚsort_by_parameter_orderÚincludes_upsert_behaviorsNúOptional[Sequence[Column[Any]]]Úsentinel_columnsr   Únum_sentinel_columnsr?  Úsentinel_param_keysÚimplicit_sentinelÚhas_upsert_bound_parametersÚembed_values_counter)r  r  r  r  r  rW  rX  rZ  r[  r\  r]  r^  r_  r  r  r  rQ  rQ  ö  sÉ   … ñð Óðð
 Óðð 8Ó7ØMà#&Ó&ð
ð %*Ð˜TÓ)ðð ',Ð˜tÓ+ðð 9=ÐÐ5Ó<ðð !"Ð˜#Ó!ðð 48ÐÐ0Ó7ðð  $Ð�tÓ#ð	ð ).Ð Ó-ð
ð "'Ð˜$Ó&ð	r  rQ  c                  óv   — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   y)Ú_InsertManyValuesBatchas  represents an individual batch SQL statement for insertmanyvalues.

    This is passed through the
    :meth:`.SQLCompiler._deliver_insertmanyvalues_batches` and
    :meth:`.DefaultDialect._deliver_insertmanyvalues_batches` methods out
    to the :class:`.Connection` within the
    :meth:`.Connection._exec_insertmany_context` method.

    .. versionadded:: 2.0.10

    r
  Úreplaced_statementrp   Úreplaced_parametersú#Optional[_GenericSetInputSizesType]Úprocessed_setinputsizesz#Sequence[_DBAPISingleExecuteParams]ÚbatchzSequence[Tuple[Any, ...]]Úsentinel_valuesrU  Úcurrent_batch_sizeÚbatchnumÚtotal_batchesr2  Úrows_sortedÚis_downgradedNr  r  r  r  ra  ra  z  sD   … ñ
ð ÓØ/Ó/Ø@Ó@Ø.Ó.Ø.Ó.ØÓØƒMØÓØÓØÔr  ra  c                  óL   — e Zd ZdZdZdZdZdZdZeez  ez  ez  Z	ee	z  Z
dZdZy	)
ÚInsertmanyvaluesSentinelOptszcbitflag enum indicating styles of PK defaults
    which can work as implicit sentinel columns

    r    r6   é   é   é   é    é@   N)r  r  r  r  ÚNOT_SUPPORTEDÚAUTOINCREMENTÚIDENTITYÚSEQUENCEÚMONOTONIC_FUNCTIONÚANY_AUTOINCREMENTÚ_SUPPORTED_OR_NOTÚUSE_INSERT_FROM_SELECTÚRENDER_SELECT_COL_CASTSr  r  r  rn  rn  “  sW   „ ñð
 €MØ€MØ€HØ€HØÐð 	˜Ñ  8Ñ+Ð.@Ñ@ð ð &Ð(9Ñ9ÐàÐØ Ñr  rn  c                  ó    — e Zd ZdZdZ	 dZ	 dZy)ÚAggregateOrderByStyleztDescribes backend database's capabilities with ORDER BY for aggregate
    functions

    .. versionadded:: 2.1

    r   r    r6   N)r  r  r  r  ÚNONEÚINLINEÚWITHIN_GROUPr  r  r  r~  r~  ¨  s'   „ ñð €DØ:à€Fðð €Lð1r  r~  c                  ó   — e Zd ZdZ	 dZ	 dZy)ÚCompilerStater   r    r6   N)r  r  r  Ú	COMPILINGÚSTRING_APPLIEDÚNO_STATEMENTr  r  r  rƒ  rƒ  ¼  s    „ Ø€IØ=à€Nðð €Lðr  rƒ  c                  ó,   — e Zd ZdZdZ	 dZ	 dZ	 eez  Zy)ÚLintingzžrepresent preferences for the 'SQL linting' feature.

    this feature currently includes support for flagging cartesian products
    in SQL statements.

    r   r    r6   N)r  r  r  r  Ú
NO_LINTINGÚCOLLECT_CARTESIAN_PRODUCTSÚWARN_LINTINGÚFROM_LINTINGr  r  r  rˆ  rˆ  Ì  s5   „ ñð €JØà!"Ððð €LØ2à-°Ñ<€Lðr  rˆ  c                  ó    — e Zd ZdZdd„Zdd„Zy)Ú
FromLinterzKrepresents current state for the "cartesian product" detection
    feature.Nc                óÄ  ‡	— | j                   }|syt        | j                  «      }t        |«      }|�|}|j                  |«       n|j	                  «       }t        j                  |g«      }|rg|re|j                  «       Š	|j                  ‰	«       |D �ch c]	  }‰	|v sŒ|’Œ }}|j                  ˆ	fd„|D «       «       |j                  |«       |r|rŒe|r||fS yc c}w )N©NNc              3  óH   •K  — | ]  }||j                  ‰«          –— Œ y ­wr  )Úindex)rE  ÚedgeÚnodes     €r  rG  z"FromLinter.lint.<locals>.<genexpr>  s"   øè ø€ ÒN¸D˜T d§j¡j°Ó&6Ð"6Õ7ÑNùó   ƒ")Úfromsr‰   ÚedgesÚremoveÚpopÚcollectionsÚdequeÚpopleftÚdiscardÚ
extendleftÚdifference_update)
r  Ústartr–  r—  Úthe_restÚ
start_withÚstackr“  Ú	to_remover”  s
            @r  ÚlintzFromLinter.lintì  sÙ   ø€ Ø—
‘
ˆÙØä�D—J‘J“ˆÜ�u“:ˆàÐØˆJØ�O‰O˜JÕ'à!Ÿ™›ˆJä×!Ñ! : ,Ó/ˆá™Ø—=‘=“?ˆDØ×Ñ˜TÔ"ð +0Ö@ $°4¸4²<šÐ@ˆIÐ@ð ×ÑÓNÀIÔNÔNØ×#Ñ# IÔ.ñ šñ  Ø˜ZÐ'Ð'àùò As   Â	CÂ Cc                óà   ‡ — ‰ j                  «       \  }}|rX|}|rSd}dj                  ˆ fd„|D «       «      }|j                  ||‰ j                  |   ¬«      }t	        j
                  |«       y y y )Nz£{stmt_type} statement has a cartesian product between FROM element(s) {froms} and FROM element "{start}".  Apply join condition(s) between each element to resolve.rá   c              3  óD   •K  — | ]  }d ‰j                   |   › d �–— Œ y­w)ú"N)r–  )rE  Úfrom_r  s     €r  rG  z"FromLinter.warn.<locals>.<genexpr>  s)   øè ø€ ò &Ø16�a˜Ÿ
™
 5Ñ)Ð*¨!Ô,ñ&ùó   ƒ )Ú	stmt_typer–  r   )r¥  r‘   rÚ   r–  r+   Úwarn)r  r«  r¡  r¢  r–  ÚtemplateÚ	froms_strÚmessages   `       r  r¬  zFromLinter.warn  s†   ø€ Ø#Ÿy™y›{Ñˆ�*ñ ØˆEÙð7ð ð !ŸI™Ió &Ø:?ô&ó �	ð #Ÿ/™/Ø'Ø#ØŸ*™* ZÑ0ð *ó �ô —	‘	˜'Õ"ð! ð r  r  )ÚSELECT)r  r  r  r  r¥  r¬  r  r  r  rŽ  rŽ  è  s   „ ñó#ôJ#r  rŽ  r–  r—  c                  ó¶  ‡ — e Zd ZU dZdZded<   	 dZded<   	 ded	<   	 d
Zd
ZdZ	ded<   dZ
ded<   dZded<   ej                  Zded<   	 ded<   ej                  Zded<   dZded<   	 dZded<   	 dZded<   	 ded<   	 dd
 ej&                  «       f	 	 	 	 	 	 	 	 	 d'd„Zd(ˆ fd„Zed „ «       Zd!„ Zed)d"„«       Zd*d#„Zd+d$„Z	 	 	 d,	 	 	 	 	 	 	 d-d%„Zed&„ «       Zˆ xZS ).ÚCompileda  Represent a compiled SQL or DDL expression.

    The ``__str__`` method of the ``Compiled`` object should produce
    the actual text of the statement.  ``Compiled`` objects are
    specific to their underlying database dialect, and also may
    or may not be specific to the columns referenced within a
    particular set of bind parameters.  In no case should the
    ``Compiled`` object be dependent on the actual values of those
    bind parameters, even though it may reference those values as
    defaults.
    NúOptional[ClauseElement]r;  Ú r
  Ústringrƒ  ÚstateFzOptional[CursorResultMetaData]Ú_cached_metadataz"Optional[List[ResultColumnsEntry]]Ú_result_columnsú Optional[SchemaTranslateMapType]Úschema_translate_maprs   Úexecution_optionsÚIdentifierPreparerÚpreparerr<   Ú_annotationszOptional[CompileState]r1  Údml_compile_stateúOptional[CacheKey]Ú	cache_keyÚfloatÚ	_gen_timec                óž  — || _         | j                   j                  | _        |r'|| _        | j                  j	                  |«      | _        |�Üt
        j                  | _        || _        |j                  | _
        |j                  | _        | j                  r)t        rt        |t        «      sJ ‚|j                  | _         | j"                  | j                  fi |¤Ž| _        |r/|€J ‚| j                  j'                  | j$                  |«      | _        t
        j(                  | _        nt
        j*                  | _        t-        «       | _        y)aû  Construct a new :class:`.Compiled` object.

        :param dialect: :class:`.Dialect` to compile against.

        :param statement: :class:`_expression.ClauseElement` to be compiled.

        :param schema_translate_map: dictionary of schema names to be
         translated when forming the resultant SQL

         .. seealso::

            :ref:`schema_translating`

        :param compile_kwargs: additional kwargs that will be
         passed to the initial call to :meth:`.Compiled.process`.


        N)ÚdialectÚidentifier_preparerr½  rº  Ú_with_schema_translaterƒ  r„  r¶  r;  Úsupports_executionÚcan_executer¾  r   Ú
isinstancer?   Ú_execution_optionsr»  Úprocessrµ  Ú_render_schema_translatesr…  r†  r   rÃ  ©r  rÅ  r;  rº  Úrender_schema_translateÚcompile_kwargss         r  Ú__init__zCompiled.__init__~  s  € ð4 ˆŒØŸ™×8Ñ8ˆŒÙØ(<ˆDÔ%Ø ŸM™M×@Ñ@Ø$óˆDŒMð Ð Ü&×0Ñ0ˆDŒJØ&ˆDŒNØ(×;Ñ;ˆDÔØ )× 6Ñ 6ˆDÔØ×ÒÝ Ü% i´Ô<Ð<Ð<Ø)2×)EÑ)E�Ô&Ø&˜$Ÿ,™, t§~¡~ÑH¸ÑHˆDŒKá&Ø+Ð7Ð7Ð7Ø"Ÿm™m×EÑEØ—K‘KÐ!5ó�”ô '×5Ñ5ˆD�Jä&×3Ñ3ˆDŒJä%›ˆ�r  c                ó@   •— | j                  «        t        ‰| �	  «       S r  )Ú_init_compiler_clsÚsuperÚ__init_subclass__)ÚclsÚ	__class__s    €r  rÕ  zCompiled.__init_subclass__·  s   ø€ Ø×ÑÔ Ü‰wÑ(Ó*Ð*r  c                 ó   — y r  r  ©rÖ  s    r  rÓ  zCompiled._init_compiler_cls»  s   € àr  c                óB   — t        j                  | t        |«      «      |‚r  ©r7   ÚUnsupportedCompilationErrorr  ©r  ÚelementÚerrÚkws       r  Úvisit_unsupported_compilationz&Compiled.visit_unsupported_compilation¿  s   € Ü×-Ñ-¨d´D¸³MÓBÈÐKr  c                ó   — t        «       ‚)z�Return a Compiled that is capable of processing SQL expressions.

        If this compiler is one, it would likely just return 'self'.

        ©ÚNotImplementedErrorrK  s    r  Úsql_compilerzCompiled.sql_compilerÂ  s   € ô "Ó#Ð#r  c                ó(   —  |j                   | fi |¤ŽS r  ©Ú_compiler_dispatch)r  ÚobjÚkwargss      r  rÌ  zCompiled.processÌ  s   € Ø%ˆs×%Ñ% dÑ5¨fÑ5Ð5r  c                óT   — | j                   t        j                  u r| j                  S y)z3Return the string text of the generated SQL or DDL.r´  )r¶  rƒ  r…  rµ  rK  s    r  Ú__str__zCompiled.__str__Ï  s#   € ð �:‰:œ×5Ñ5Ñ5Ø—;‘;Ðàr  c                ó   — t        «       ‚)zâReturn the bind params for this compiled object.

        :param params: a dict of string/object pairs whose values will
                       override bind values compiled in to the
                       statement.
        rã  ©r  ÚparamsÚextracted_parametersÚescape_namess       r  Úconstruct_paramszCompiled.construct_params×  s   € ô "Ó#Ð#r  c                ó"   — | j                  «       S )z0Return the bind params for this compiled object.©rò  rK  s    r  rï  zCompiled.paramsæ  s   € ð ×$Ñ$Ó&Ð&r  )
rÅ  rv   r;  r³  rº  r¹  rÏ  r2  rÐ  úMapping[str, Any])r"  r#  ©r"  ÚSQLCompiler)ré  rm   rê  r   r"  r
  ©r"  r
  ©NNT©rï  ú"Optional[_CoreSingleExecuteParams]rð  ú&Optional[Sequence[BindParameter[Any]]]rñ  r2  r"  z)Optional[_MutableCoreSingleExecuteParams]) r  r  r  r  r;  r  rµ  Úis_sqlÚis_ddlr·  r¸  rº  r+   Ú
EMPTY_DICTr»  r¾  r1  r¿  rÁ  ÚimmutabledictrÑ  rÕ  ÚclassmethodrÓ  rá  rO  rå  rÌ  rì  rò  rï  Ú__classcell__©r×  s   @r  r²  r²  *  s�  ø… ñ
ð *.€IÐ&Ó-ØØ€FˆCÓØ4àÓØ-à€FØ€Fà7;ÐÐ4Ó;à:>€OÐ7Ó>à=AÐÐ:ÓAà)-¯©Ð�Ó8ðð
 !Ó à$(§O¡O€L�/Ó3à,0€MÐ)Ó0ðð 15ÐÐ-Ó4ð	ð %)€IÐ!Ó(ð	ð Óðð BFØ(-Ø,>¨D×,>Ñ,>Ó,@ð7(àð7(ð +ð7(ð ?ð	7(ð
 "&ð7(ð *ó7(õr+ð ñó ðòLð ò$ó ð$ó6óð 6:ØGKØ!ð	$à2ð$ð Eð$ð ð	$ð
 
3ó$ð ñ'ó ô'r  r²  c                  ó<   — e Zd ZdZdZdd„Zdd„Z	 	 	 	 	 	 	 	 d	d„Zy)
ÚTypeCompilerz2Produces DDL specification for TypeEngine objects.z	visit_\w+c                ó   — || _         y r  )rÅ  )r  rÅ  s     r  rÑ  zTypeCompiler.__init__ñ  s	   € Øˆ�r  c                óÊ   — |j                   rE| j                  j                  |j                   v r#|j                   | j                  j                     } |j                  | fi |¤ŽS r  )Ú_variant_mappingrÅ  r  rè  ©r  r   rà  s      r  rÌ  zTypeCompiler.processô  sU   € à×"Ò"Ø—‘×!Ñ! U×%;Ñ%;Ñ;à×*Ñ*¨4¯<©<×+<Ñ+<Ñ=ˆEØ'ˆu×'Ñ'¨Ñ3°Ñ3Ð3r  c                ó0   — t        j                  | |«      |‚r  )r7   rÜ  rÝ  s       r  rá  z*TypeCompiler.visit_unsupported_compilationü  s   € ô ×-Ñ-¨d°GÓ<À#ÐEr  N)rÅ  rv   )r   r  rà  r   r"  r
  )rÞ  r   rß  Ú	Exceptionrà  r   r"  r   )r  r  r  r  Úensure_kwargrÑ  rÌ  rá  r  r  r  r  r  ì  s>   „ Ù<à€Lóó4ðFØðFØ!*ðFØ25ðFà	ôFr  r  c                  óF   — e Zd ZdZdZdZd	d„Zed„ «       Zed„ «       Z	d„ Z
y)
Ú_CompileLabelz;lightweight label object which acts as an expression.Label.Úlabel©rÞ  r  Ú
_alt_namesc                ó6   — || _         || _        |f|z   | _        y r  r  )r  Úcolr  Ú	alt_namess       r  rÑ  z_CompileLabel.__init__  s   € ØˆŒØˆŒ	Ø˜& 9Ñ,ˆ�r  c                ó.   — | j                   j                  S r  ©rÞ  Ú	proxy_setrK  s    r  r  z_CompileLabel.proxy_set  ó   € à�|‰|×%Ñ%Ð%r  c                ó.   — | j                   j                  S r  ©rÞ  r  rK  s    r  r  z_CompileLabel.type  ó   € à�|‰|× Ñ Ð r  c                ó   — | S r  r  ©r  rà  s     r  Ú
self_groupz_CompileLabel.self_group  ó   € Øˆr  N)r  )r  r  r  r  Ú__visit_name__Ú	__slots__rÑ  rO  r  r  r  r  r  r  r  r    sD   „ ñ Fà€NØ/€Ió-ð
 ñ&ó ð&ð ñ!ó ð!ór  r  c                  óP   — e Zd ZdZd ZdZd„ Zd„ Zed„ «       Z	ed„ «       Z
d„ Zd„ Zy	)
Úaggregate_orderby_inlinez2produce ORDER BY inside of function argument lists©rÞ  Úaggregate_order_byc                ó    — || _         || _        y r  r$  )r  rÞ  Úorderbys      r  rÑ  z!aggregate_orderby_inline.__init__%  s   € ØˆŒØ")ˆÕr  c                ó,   — t        | j                  «      S r  )ÚiterrÞ  rK  s    r  Ú__iter__z!aggregate_orderby_inline.__iter__)  s   € Ü�D—L‘LÓ!Ð!r  c                ó.   — | j                   j                  S r  r  rK  s    r  r  z"aggregate_orderby_inline.proxy_set,  r  r  c                ó.   — | j                   j                  S r  r  rK  s    r  r  zaggregate_orderby_inline.type0  r  r  c                ó   — | S r  r  r  s     r  r  z#aggregate_orderby_inline.self_group4  r  r  c                ó`   — t        | j                  j                  |«      | j                  «      S r  )r#  rÞ  Ú_with_binary_element_typer%  ©r  r   s     r  r/  z2aggregate_orderby_inline._with_binary_element_type7  s*   € Ü'Ø�L‰L×2Ñ2°5Ó9Ø×#Ñ#ó
ð 	
r  N)r  r  r  r  r   r!  rÑ  r*  rO  r  r  r  r/  r  r  r  r#  r#    sM   „ ñ =à/€NØ/€Iò*ò"ð ñ&ó ð&ð ñ!ó ð!òó
r  r#  c                  óJ   — e Zd ZdZdZdZd„ Zed„ «       Zed„ «       Z	d„ Z
d„ Zy	)
Úilike_case_insensitivea  produce a wrapping element for a case-insensitive portion of
    an ILIKE construct.

    The construct usually renders the ``lower()`` function, but on
    PostgreSQL will pass silently with the assumption that "ILIKE"
    is being used.

    .. versionadded:: 2.0

    Úilike_case_insensitive_operand©rÞ  Ú
comparatorc                ó4   — || _         |j                  | _        y r  r4  )r  rÞ  s     r  rÑ  zilike_case_insensitive.__init__O  s   € ØˆŒØ!×,Ñ,ˆ�r  c                ó.   — | j                   j                  S r  r  rK  s    r  r  z ilike_case_insensitive.proxy_setS  r  r  c                ó.   — | j                   j                  S r  r  rK  s    r  r  zilike_case_insensitive.typeW  r  r  c                ó   — | S r  r  r  s     r  r  z!ilike_case_insensitive.self_group[  r  r  c                óJ   — t        | j                  j                  |«      «      S r  )r2  rÞ  r/  r0  s     r  r/  z0ilike_case_insensitive._with_binary_element_type^  s!   € Ü%Ø�L‰L×2Ñ2°5Ó9ó
ð 	
r  N)r  r  r  r  r   r!  rÑ  rO  r  r  r  r/  r  r  r  r2  r2  >  sJ   „ ñ	ð 6€NØ'€Iò-ð ñ&ó ð&ð ñ!ó ð!òó
r  r2  c                  óÊ  — e Zd ZU dZeZ ej                  dddddddddœ«      Zde	d	<   	 d
e	d<   de	d<   dZ
eZdZde	d<   dZde	d<   dZde	d<   	 de	d<   	 dZde	d<   	 dZde	d<   	 dZde	d<   	 dZde	d<   de	d<   	 de	d <   	 d!e	d"<   	 dZde	d#<   	 dZde	d$<   	 dZde	d%<   	 d&e	d'<   	 d&e	d(<   	 d&e	d)<   	 d*e	d+<   	 dZde	d,<   	 dZde	d-<   	 dZde	d.<   	 dZde	d/<   	 dZde	d0<   	 dZde	d1<   	 dZd2e	d3<   	 dZd4e	d5<   	 dZd6e	d7<   dZ d8e	d9<   dZ!d:e	d;<    e"«       Z#d<e	d=<   	  e"«       Z$d<e	d><   	 ejJ                  Z&d?e	d@<   dAe	dB<   	 dZ'	 dZ(	 dZ)dCe	dD<   	 dZ*d6e	dE<   	 dZ+d6e	dF<   dZ,d6e	dG<   dZ-de	dH<   dIe	dJ<   dKe	dL<   dMe	dN<   de	dO<    e.j^                  dP«      Z0 e.j^                  dQ«      Z1 e.j^                  e1jd                  › dRe0jd                  › �«      Z3 e.j^                  dSe1jd                  › �«      Z4 e.j^                  dSe3jd                  › �«      Z5dTe	dU<   dVe	dW<   e6dX„ «       Z7e6dY„ «       Z8ddde9df	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dd[„Z:e;�dd\„«       Z<ejz                  �dd]„«       Z>e;d^„ «       Z?e;d_„ «       Z@e;d`„ «       ZAej„                  �dda„«       ZC�ddb„ZDejŠ                  �d dc„«       ZFeGj�                  dd„ «       ZIde„ ZJdf„ ZKej„                  	 	 �d!dg„«       ZLej„                  �d"dh„«       ZMdi„ ZNe;�d#dj„«       ZO	 	 �d$	 	 	 	 	 �d%dk„ZP	 	 	 	 	 	 	 �d&	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d'dl„ZQejŠ                  dm„ «       ZRe;dn„ «       ZS	 �d(	 	 	 	 	 �d)do„ZT ejª                  dp«      dq„ «       ZVdre	ds<   ej„                  �d*dt„«       ZWej„                   ejª                  du«      dv„ «       «       ZXej„                   ejª                  du«      dw„ «       «       ZY�d+dx„ZZ	 	 �d,dy„Z[�d(dz„Z\d{„ Z]	 �d(d|„Z^	 �d(d}„Z_	 	 	 	 	 	 �d-d~„Z`d„ Zad€„ Zb	 	 	 	 �d.	 	 	 	 	 	 	 	 	 	 	 	 	 �d/d�„Zcd‚„ Zddƒ„ Zed„„ Zfd…„ Zgd†„ Zhd‡„ Zi�d0dˆ„Zjd‰„ Zk�d0dŠ„Zl	 �d1d‹„Zm�d2dŒ„Zn�d3d�„Zo�d4dŽ„Zpd�„ Zqd�„ Zrd‘„ Zsd’„ Ztd“„ Zud”„ Zvd•„ Zwd–„ Zxd—„ Zyd˜„ Zzd™„ Z{dš„ Z|d›„ Z}dœ„ Z~d�„ Zdž„ Z€ddŸœd „Z�d¡„ Z‚d¢„ Zƒ	 �d0	 	 	 	 	 	 	 �d5d£„Z„d¤„ Z…d¥„ Z†�d6d¦„Z‡	 �d7d§„Zˆd¨„ Z‰d©„ ZŠdª„ Z‹	 �d,d«„ZŒd¬„ Z�d­„ ZŽd®„ Z�d¯„ Z�d°„ Z‘d±„ Z’d²„ Z“d³„ Z”	 �d0d´„Z•dµ„ Z–	 	 	 	 �d8d¶„Z—d·„ Z˜d¸„ Z™d¹„ Zšdº„ Z›d»„ Zœ	 �d(	 	 	 	 	 	 	 	 	 �d9d¼„Z�d½„ Zžd¾„ ZŸej„                  d¿„ «       Z dÀ„ Z¡dÁ„ Z¢dÂ„ Z£dÃ„ Z¤dÄ„ Z¥dÅ„ Z¦dÆ„ Z§dÇ„ Z¨dÈ„ Z©dÉ„ ZªdÊ„ Z«dË„ Z¬dÌ„ Z­dÍ„ Z®dÎ„ Z¯dÏ„ Z°dÐ„ Z±dÑ„ Z²dÒ„ Z³	 	 	 	 	 	 	 	 �d:dÓ„Z´	 	 	 	 	 	 	 	 �d:dÔ„Zµ	 	 	 	 	 	 	 	 �d:dÕ„Z¶ddÖœd×„Z·	 	 	 	 	 	 �d;dØ„Z¸dÙ„ Z¹eºdfdÚ„Z»	 	 	 	 	 	 �d<dÛ„Z¼dÜ„ Z½	 	 	 	 	 	 �d=dÝ„Z¾�d>dÞ„Z¿�d?dß„ZÀ	 	 	 	 	 	 �d@	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dAdà„ZÁdá„ ZÂddddd eÃ�jˆ                  d«      f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dBdâ„ZÅdã„ ZÆdä„ ZÇ	 	 	 	 	 	 	 	 	 �dCdå„ZÈdæ„ ZÉdç„ ZÊ�d(dè„ZËdé„ ZÌ	 �dDdê„ZÍdë„ ZÎdì„ ZÏ	 	 	 	 	 	 	 	 	 	 �dEdí„ZÐ	 �d0dî„ZÑ	 	 	 	 	 	 	 �dFdï„ZÒdð„ ZÓdñ„ ZÔ	 	 	 	 	 	 �dGdò„ZÕdó„ ZÖdô„ Z×dõe	dö<   eØ�j²                  s" ej                  d÷ e"«       fdø e"«       fg«      ZÚ	 �d(dù„ZÛ	 	 	 	 	 	 	 	 �dHdú„ZÜdZÝdZe	dû<   	 	 	 	 	 	 	 	 �dIdü„ZÞ	 	 	 	 �dJdý„Zßdþ„ Zàdÿ„ Zá�d „ Zâ	 	 �d1�d„Zã�d„ Zä�dK�d„Zå�d„ Zæ�d„ Zç�d„ Zè	 	 	 	 	 	 	 	 	 	 �dL�d„Zé�d„ Zê	 	 	 �dM�d	„Zë	 	 	 	 	 	 	 	 	 �dN�d
„Zì�d7�d„Zí�d„ Zî ej                  eï�jà                  eñ�jä                  eï�jæ                  eñ�jä                  eï�jè                  eñ�jä                  eï�jê                  eñ�jê                  eï�jì                  eñ�jì                  eï�jî                  eñ�jî                  i«      Zøeø�jó                  eï�jè                  eñ�jô                  i«      Zû	 	 	 	 �dO�d„Zü	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dP�d„Zý	 �dQ�d„Zþ�d„ Zÿ�d„ �Z 	 	 	 	 	 	 �dR�d„�Z	 	 	 	 	 	 �dS�d„�Z	 �d0	 	 	 	 	 	 	 �dT�d„�Z�d„ �Z�d„ �Z�d0�d„�Z�d„ �Z�d„ �Z�d„ �Z	y(U  r÷  z~Default implementation of :class:`.Compiled`.

    Compiles :class:`_expression.ClauseElement` objects into SQL strings.

    ÚPÚAÚZÚCÚ_)ú%ú(ú)ú:ú.ú[ú]ú zClassVar[Mapping[str, str]]Úbindname_escape_characterszClassVar[Pattern[str]]Ú_bind_translate_reÚ_bind_translate_charsTFr2  ÚisdeleteÚisinsertÚisupdatezOptional[List[Column[Any]]]Ú	postfetchr  zSequence[Column[Any]]Úinsert_prefetchÚupdate_prefetchNú&Optional[Sequence[ColumnElement[Any]]]Úimplicit_returningÚisplaintextzDict[str, BindParameter[Any]]ÚbindszDict[BindParameter[Any], str]Ú
bind_nameszList[_CompilerStackEntry]r£  Úreturning_precedes_valuesÚ'render_table_with_column_in_update_fromÚansi_bind_rulesr
  ÚbindtemplateÚcompilation_bindtemplateÚ_numeric_binds_identifier_charzList[ResultColumnsEntry]r¸  Ú_textual_ordered_columnsÚ_ad_hoc_textualÚ_ordered_columnsÚ_loose_column_name_matchingÚ_numeric_bindsÚ_render_postcompilezOptional[ExpandedState]Ú_post_compile_expanded_stateúOptional[str]Ú_pre_expanded_stringúOptional[List[str]]Ú_pre_expanded_positiontupzOptional[_InsertManyValues]Ú_insertmanyvaluesz!Optional[crud._CrudParamSequence]Ú_insert_crud_paramszFrozenSet[BindParameter[Any]]Úliteral_execute_paramsÚpost_compile_paramszutil.immutabledict[str, str]Úescaped_bind_nameszSet[str]Ú_escaped_bind_names_usedzbOptional[Tuple[Dict[BindParameter[Any], List[BindParameter[Any]]], Dict[str, BindParameter[Any]]]]Ú_cache_key_bind_matchr@  Ú_values_bindparamÚ_visited_bindparamÚinlinez"Optional[MutableMapping[CTE, str]]ÚcteszDict[Tuple[int, str], CTE]Úctes_by_level_namez/Dict[CTE, Tuple[int, str, selectable._CTEOpts]]Úlevel_name_by_cteÚctes_recursivez"__\[POSTCOMPILE_(\S+?)(~~.+?~~)?\]z%\(([^)]+?)\)sú|z%%|zFinal[bool]Ú_collect_paramszutil.immutabledict[str, Any]Ú_collected_paramsc                ó$   — | j                  «        y r  )Ú_init_bind_translaterÙ  s    r  rÓ  zSQLCompiler._init_compiler_cls   s   € à× Ñ Õ"r  c                ó¾   — t        j                  dj                  | j                  «      «      }t        j                  d|› d�«      | _        | j                  | _        y )Nr´  rF  rG  )ÚreÚescaper‘   rI  ÚcompilerJ  rK  )rÖ  Úregs     r  rz  z SQLCompiler._init_bind_translate¤  sF   € ä�i‰i˜Ÿ™ × >Ñ >Ó?Ó@ˆÜ!#§¡¨a°¨u°A¨JÓ!7ˆÔØ$'×$BÑ$BˆÕ!r  r   c                óŠ  — || _         || _        |r:|d   D �	ci c]  }	|	j                  |	“Œ }
}	|d   D �	ci c]  }	|	|	g“Œ }}	||
f| _        || _        || _        i | _        t        j                  «       | _	        g | _
        g | _        |j                  | _        | j                  rH|j                  j                  d«      x| _        }|r|j                  dk(  rdnd| _        t"        | _        nt&        |j                     | _        d| _        |j*                  xs |j,                  | _        t/        «       | _        i | _        i | _        |sd| _        t        j8                  | _        nd| _        t=        j>                  | ||fi |¤Ž | j@                  s| jB                  s| jD                  r�tF        rtI        |tJ        «      sJ ‚| j@                  s| jB                  rmtF        rtI        |tL        «      sJ ‚|jN                  rd| _(        nA| j                  r5| j@                  r"| jR                  jT                  r|jV                  rd| _(        t&        |j                     | _,        |rK| jZ                  j]                  |jZ                  j_                  «       D ��ci c]  \  }}|d	vr||“Œ c}}«       | j`                  tb        jd                  u rm| j                  r-| j                  r| jg                  «        n| ji                  «        | jj                  r'| jm                  dd¬
«      }| jo                  |d¬«       yyyc c}	w c c}	w c c}}w )a‚  Construct a new :class:`.SQLCompiler` object.

        :param dialect: :class:`.Dialect` to be used

        :param statement: :class:`_expression.ClauseElement` to be compiled

        :param column_keys:  a list of column names to be compiled into an
         INSERT or UPDATE statement.

        :param for_executemany: whether INSERT / UPDATE statements should
         expect that they are to be invoked in an "executemany" style,
         which may impact how the statement will be expected to return the
         values of defaults and autoincrement / sequences and similar.
         Depending on the backend and driver in use, support for retrieving
         these values may be disabled which means SQL expressions may
         be rendered inline, RETURNING may not be rendered, etc.

        :param kwargs: additional keyword arguments to be consumed by the
         superclass.

        r    rÛ   rÜ   rÖ   rD  NTF>   r¶  rÅ  r½  Ú
positionalrZ  ra  r[  ©rñ  Ú_no_postcompile)Ú_populate_self)8Úcolumn_keysrÁ  rF  rn  Úfor_executemanyÚlintingrU  r+   Úcolumn_dictrV  r£  r¸  r�  Ú
paramstyleÚ
startswithra  r\  Ú_pyformat_templater[  ÚBIND_TEMPLATESrr  Úlabel_lengthÚmax_identifier_lengthr5   Úanon_mapÚtruncated_namesÚ_truncated_countersrw  rÿ  rx  r²  rÑ  rM  rN  rL  r   rÊ  rI   rK   Ú_inlinerq  rÅ  Úinsert_executemany_returningÚ_return_defaultsrZ  Ú__dict__ÚupdateÚitemsr¶  rƒ  r…  Ú_process_numericÚ_process_positionalrb  rò  Ú#_process_parameters_for_postcompile)r  rÅ  r;  rÁ  r…  r†  r‡  Ú_supporting_againstrê  ÚbÚcksmÚckbmÚnbÚkÚvr<  s                   r  rÑ  zSQLCompiler.__init__ª  s   € ð@ 'ˆÔà"ˆŒáØ&/°¡lÖ3 �A—E‘E˜1‘HÐ3ˆDÐ3Ø$-¨a¡LÖ1˜q�A˜�s‘FÐ1ˆDÐ1Ø*.°¨ˆDÔ&ð
  /ˆÔàˆŒð ˆŒ
ô ×*Ñ*Ó,ˆŒð ˆŒ
à!ˆÔð "×,Ñ,ˆŒØ�?Š?Ø'.×'9Ñ'9×'DÑ'DÀYÓ'OÐOˆDÔ "Ùà"×-Ñ-Ð1AÒA‘CÀsð Ô3ô -?ˆDÕ)ä,:¸7×;MÑ;MÑ,NˆDÔ)àˆŒ	ð × Ñ ÒA G×$AÑ$Að 	Ôô (Ó)ˆŒð <>ˆÔØ35ˆÔ ÙØ#'ˆDÔ Ü%)§_¡_ˆDÕ"à#(ˆDÔ ä×Ñ˜$ ¨Ñ=°fÒ=à�=Š=˜DŸMšM¨T¯]ª]ÝÜ! )¬ZÔ8Ð8Ð8à�}Š} §¢Ý Ü% i´Ô<Ð<Ð<Ø×$Ò$Ø"&�D•KØ×)Ò)ØŸšàŸ™×AÒAØ%×6Ò6ð #'�D”Kä*¨7×+=Ñ+=Ñ>ˆÔáØ�M‰M× Ñ ð !4× <Ñ <× BÑ BÓ D÷á˜˜1Øðñ	ð �q‘Dóôð" �:‰:œ×5Ñ5Ñ5Ø�ŠØ×&Ò&Ø×)Ñ)Õ+à×,Ñ,Ô.à×'Ò'Ø!×2Ñ2Ø!&Ø$(ð 3ó �
ð
 ×8Ñ8Ø¨tð 9õ ð (ð 6ùòC 4ùÚ1ùó`s   ˜L5µL:ÊL?
c                óH   — | j                   €y| j                   j                  S )a×  When an INSERT is compiled with a single set of parameters inside
        a VALUES expression, the string is assigned here, where it can be
        used for insert batching schemes to rewrite the VALUES expression.

        .. versionchanged:: 2.0 This collection is no longer used by
           SQLAlchemy's built-in dialects, in favor of the currently
           internal ``_insertmanyvalues`` collection that is used only by
           :class:`.SQLCompiler`.

        N)rh  rS  rK  s    r  Úinsert_single_values_exprz%SQLCompiler.insert_single_values_exprA  s%   € ð ×!Ñ!Ð)Øà×)Ñ)×<Ñ<Ð<r  c                óÞ   — | j                   r| j                   S | j                  �Dt        | j                  «      r/| j                  j                  D �cg c]  }t	        |«      r|‘Œ c}S yc c}w )aâ  The effective "returning" columns for INSERT, UPDATE or DELETE.

        This is either the so-called "implicit returning" columns which are
        calculated by the compiler on the fly, or those present based on what's
        present in ``self.statement._returning`` (expanded into individual
        columns using the ``._all_selected_columns`` attribute) i.e. those set
        explicitly using the :meth:`.UpdateBase.returning` method.

        .. versionadded:: 2.0

        N)rS  r;  r-   Ú_all_selected_columnsr,   )r  Úcs     r  Úeffective_returningzSQLCompiler.effective_returningR  sg   € ð ×"Ò"Ø×*Ñ*Ð*Ø�^‰^Ð'¬F°4·>±>Ô,Bð Ÿ™×=Ñ=öàÜ$ QÔ'ò òð ð ùòs   ÁA*c                ó   — | j                   S )zVbackwards compatibility; returns the
        effective_returning collection.

        )r§  rK  s    r  Ú	returningzSQLCompiler.returningk  s   € ð ×'Ñ'Ð'r  c                ób   — 	 | j                   d   d   S # t        $ r}t        d«      |‚d}~ww xY w)aÿ  Return the current 'executable' that is being compiled.

        This is currently the :class:`_sql.Select`, :class:`_sql.Insert`,
        :class:`_sql.Update`, :class:`_sql.Delete`,
        :class:`_sql.CompoundSelect` object that is being compiled.
        Specifically it's assigned to the ``self.stack`` list of elements.

        When a statement like the above is being compiled, it normally
        is also assigned to the ``.statement`` attribute of the
        :class:`_sql.Compiler` object.   However, all SQL constructs are
        ultimately nestable, and this attribute should never be consulted
        by a ``visit_`` method, as it is not guaranteed to be assigned
        nor guaranteed to correspond to the current statement being compiled.

        éÿÿÿÿr)   z$Compiler does not have a stack entryN)r£  Ú
IndexError)r  Úies     r  Úcurrent_executablezSQLCompiler.current_executables  s;   € ð"	MØ—:‘:˜b‘> ,Ñ/Ð/øÜò 	MÜÐCÓDÈ"ÐLûð	Mús   ‚ ”	.�)©.c                óX   — t        | j                  «      t        | j                  «      z   S r  )ÚlistrP  rQ  rK  s    r  ÚprefetchzSQLCompiler.prefetch‰  s#   € ä�D×(Ñ(Ó)¬D°×1EÑ1EÓ,FÑFÐFr  c                ó   — i S r  r  rK  s    r  Ú_global_attributeszSQLCompiler._global_attributes�  s   € àˆ	r  c                óZ   — |j                   r|j                   | j                  z  | _        y y r  )Ú_paramsrx  )r  Úitems     r  Ú_add_to_paramszSQLCompiler._add_to_params‘  s'   € ð �<Š<Ø%)§\¡\°D×4JÑ4JÑ%JˆDÕ"ð r  c                óf   — t        j                  «       }|| _        i | _        i | _        d| _        |S )z’Initialize collections related to CTEs only if
        a CTE is located, to save on the overhead of
        these collections otherwise.

        F)r+   ÚOrderedDictrr  rs  rt  ru  )r  rr  s     r  Ú_init_cte_statezSQLCompiler._init_cte_state˜  s:   € ô *.×)9Ñ)9Ó);ˆØˆŒ	ð #%ˆÔð "$ˆÔà#ˆÔàˆr  c              #  óh  K  — | j                   | j                  }}g dc| _         | _        	 | j                  r| j                  d   }d|d<   nd}| j                   | j                  f–— |r|j                  d«       ||c| _         | _        y# r|j                  d«       ||c| _         | _        w xY w­w)z;special API to support the use case of 'nested result sets'Fr«  Tr3  N)r¸  r_  r£  r™  )r  Úresult_columnsÚordered_columnsÚentrys       r  Ú_nested_resultzSQLCompiler._nested_result°  sÂ   è ø€ ð × Ñ Ø×!Ñ!ð (ˆð 79¸%Ð3ˆÔ˜dÔ3ð	Ø�zŠzØŸ
™
 2™�Ø6:�Ð2Ò3à�Ø×&Ñ&¨×(=Ñ(=Ð=Ò=áØ—	‘	Ð6Ô7àØð 8ˆDÔ  $Õ"7øñ Ø—	‘	Ð6Ô7àØð 8ˆDÔ  $Õ"7üs   ‚(B2«=B Á(#B2Â$B/Â/B2c                óN  ‡‡	‡
‡— | j                   rJ ‚| j                  t        j                  u sJ ‚| j                  rJ ‚| j
                  j                  dk(  rdŠ	n| j
                  j                  dk(  sJ ‚dŠ	g Š
| j                  Š| j                  rQ| j                  j                  «       D ��ci c]  \  }}||“Œ
 c}}Št        | j                  «      t        ‰«      k(  sJ ‚i Š| j                  j                  r| j                  }n| j                  }dˆˆ	ˆ
ˆfd„}t        j                   ||| j"                  «      | _        ‰r&‰
D �cg c]  }‰j%                  ||«      ‘Œ c}| _         n‰
| _         | j&                  r˜g Š
t        j                   ||| j&                  j(                  «      }| j&                  j*                  D �cg c])  }|d   |d   t        j                   |||d   «      |d	   f‘Œ+ }}| j&                  j-                  ||¬
«      | _        y y c c}}w c c}w c c}w )NrÚ   ú%srÙ   r×   c                ó@  •— | j                  d«      }|r8‰j                  ||«      ‰vr| j                  d«      S ‰j                  |«       ‰S | j                  d«      r1‰j                  | j                  d«      «       | j                  d«      S | j                  d«      S )Nr    r   r6   )r    ÚgetÚappend)ÚmÚnormal_bindrU  ÚplaceholderÚ	positionsÚreverse_escapes     €€€€r  Úfind_positionz6SQLCompiler._process_positional.<locals>.find_positioná  s‰   ø€ ØŸ'™' !›*ˆKÙØ!×%Ñ% k°;Ó?ÀuÑLàŸ7™7 1›:Ð%Ø× Ñ  Ô-Ø"Ð"Ø—‘˜”à× Ñ  §¡¨£Ô,Ø—w‘w˜q“zÐ!ð —w‘w˜q“zÐ!r  r   r    r6   r(  ©rS  rT  )rÅ  zre.Match[str]r"  r
  )r@  r¶  rƒ  r…  ra  rÅ  r‰  rU  rl  r—  Úlenr½  Ú_double_percentsÚ_pct_escaped_positional_patternÚ_positional_patternr|  Úsubrµ  rÃ  rh  rS  rT  Ú_replace)r  r   r¡  Úpositional_patternrÊ  r  rS  rT  rU  rÇ  rÈ  rÉ  s           @@@@r  r™  zSQLCompiler._process_positionalÈ  s  û€ Ø×#Ò#Ð#Ð#Ø�z‰zœ]×9Ñ9Ñ9Ð9Ð9Ø×&Ò&Ð&Ð&à�<‰<×"Ñ" hÒ.Ø‰Kà—<‘<×*Ñ*¨gÒ5Ð5Ð5ØˆKàˆ	Ø—
‘
ˆà×"Ò"Ø/3×/FÑ/F×/LÑ/LÓ/N×O¡t q¨!˜a ™dÓOˆNÜ�t×.Ñ.Ó/´3°~Ó3FÒFÐFÐFàˆNà�=‰=×)Ò)Ø!%×!EÑ!EÑà!%×!9Ñ!9Ð÷	"ð 	"ô  —f‘fÐ/°ÀÇÁÓLˆŒáà;Dö Ø37�×"Ñ" 4¨Õ.ò ˆDÕð  )ˆDÔà×!Ò!ØˆIä!#§¡Ø"ØØ×&Ñ&×9Ñ9ó"Ðð ×/Ñ/×BÑBö"ð ð �a‘DØ�a‘DÜ—F‘FÐ-¨}¸aÀ¹dÓCØ�a‘Dò	ð"Ðð "ð &*×%;Ñ%;×%DÑ%DØ#5Ø#5ð &Eó &ˆDÕ"ð% "ùóG Pùò: ùò"s   Â/HÅ	HÇ.H"c                ó¾  ‡ ‡— ‰ j                   sJ ‚‰ j                  t        j                  u sJ ‚d}i Š‰ j                  r\‰ j
                  �Pt        j                  ˆ fd„‰ j                  j                  «       D «       ‰ j                  j                  «       «      }n‰ j                  j                  «       }|D ]R  }|‰v rŒ‰ j                  |   }|‰ j                  v s|‰ j                  v rd ‰|<   Œ9‰ j                  › |› �}|dz  }|‰|<   ŒT |‰ _        t        ‰«      ‰ _        ‰ j"                  rYt%        ‰«      }‰j'                  «       D ��ci c]"  \  }}‰ j"                  j)                  ||«      |“Œ$ c}}Št%        ‰«      |k(  sJ ‚‰ j*                  j,                  r‰ j.                  }	n‰ j0                  }	|	j3                  ˆfd„‰ j4                  «      ‰ _        ‰ j                  rl‰ j                  j6                  ‰z  }
‰ j                  j8                  D �cg c]  }|d   |d   d|d   f‘Œ }}‰ j                  j;                  |
|¬«      ‰ _        y y c c}}w c c}w )Nr    c              3  ó>   •K  — | ]  }|‰j                   vr|–— Œ y ­wr  )ro  )rE  r  r  s     €r  rG  z/SQLCompiler._process_numeric.<locals>.<genexpr>  s'   øè ø€ ò àØ 4×#9Ñ#9Ñ9ô ñùó   ƒc                ód   •— ‰j                  | j                  d«      | j                  d«      «      S ©Nr    r   ©rÃ  r    ©rÅ  Ú	param_poss    €r  ú<lambda>z.SQLCompiler._process_numeric.<locals>.<lambda>J  s"   ø€ �i—m‘m A§G¡G¨A£J°·±¸³
Ó;€ r  r   rÁ  r(  rË  )ra  r¶  rƒ  r…  rh  ro  Ú	itertoolsÚchainrV  ÚvaluesrU  rk  rj  r\  Únext_numeric_posr°  r@  rl  rÌ  r—  rÃ  r½  rÍ  Ú_pct_escaped_pyformat_patternÚ_pyformat_patternrÐ  rµ  rS  rT  rÑ  )r  Únumr¤   Ú	bind_nameÚbindÚphÚ
len_beforer  ÚposÚpyformat_patternrS  r¡  rT  rÚ  s   `            @r  r˜  zSQLCompiler._process_numeric  sk  ù€ Ø×"Ò"Ð"Ð"Ø�z‰zœ]×9Ñ9Ñ9Ð9Ð9àˆØ$&ˆ	à×!Ò! d×&<Ñ&<Ð&Hô —O‘Oóà $§¡× 6Ñ 6Ó 8ôð
 —‘×&Ñ&Ó(ó‰Eð —O‘O×*Ñ*Ó,ˆEàò 	*ˆIØ˜IÑ%ØØ—:‘:˜iÑ(ˆDà˜×0Ñ0Ñ0Ø˜4×6Ñ6Ñ6ð (,�	˜)Ò$à×;Ñ;Ð<¸S¸EÐB�Ø�q‘�Ø')�	˜)Ò$ð	*ð  !$ˆÔä 	›?ˆÔØ×"Ò"Ü˜Y›ˆJð "+§¡Ó!2÷á�D˜#ð ×'Ñ'×+Ñ+¨D°$Ó7¸Ñ<óˆIô �y“> ZÒ/Ð/Ð/à�=‰=×)Ò)Ø#×AÑAÑà#×5Ñ5Ðð '×*Ñ*Û;¸T¿[¹[ó
ˆŒð ×!Ò!ð ×&Ñ&×9Ñ9Øñð ð ×/Ñ/×BÑBö"àð �1‘�q˜‘t˜T 1 Q¡4Ò(ð"Ðð "ð
 &*×%;Ñ%;×%DÑ%Dà#5à#5ð	 &Eó &ˆDÕ"ð "ùó#ùò0"s   Å'IÈIc                óf   ‡ — ˆ fd„‰ j                   D «       D ��ci c]
  \  }}|�||“Œ c}}S c c}}w )Nc           	   3  ó:  •K  — | ]’  }|‰j                   vr‚‰j                  |   |j                  j                  s%|j                  j	                  ‰j
                  «      n5t        ˆfd „t        t        |j                  «      j                  D «       «      f–— Œ” y­w)c              3  óT   •K  — | ]  }|j                  ‰j                  «      –— Œ! y ­wr  )Ú_cached_bind_processorrÅ  )rE  Ú	elem_typer  s     €r  rG  z9SQLCompiler._bind_processors.<locals>.<genexpr>.<genexpr>p  s(   øè ø€ ò #à )ð &×<Ñ<¸T¿\¹\×Jñ#ùs   ƒ%(N)
rj  rV  r  Ú_is_tuple_typerì  rÅ  rJ  r	   r4   Útypes)rE  Ú	bindparamr  s     €r  rG  z/SQLCompiler._bind_processors.<locals>.<genexpr>j  sˆ   øè ø€ ò ð ð  D×$?Ñ$?Ñ?ð' —O‘O IÑ.ð  )Ÿ~™~×<Ò<ð "Ÿ™×=Ñ=¸d¿l¹lÔKä"ó #ä-1Ü )¨9¯>©>ó.ç#™eô	#ó ôñùs   ƒBB)rV  )r  rF  Úvalues   `  r  Ú_bind_processorszSQLCompiler._bind_processors`  sC   ø€ óð "&§¡ô÷
á��Uð. Ð ð1 �‰Jó
ð 	
ùó 
s   š-c                ó¬   — t        | j                  j                  «       «      j                  | j                  | j                  j                  «       «      S )a  Names that the individual elements of an expanding parameter
        may not take when the parameter is expanded at execution time.

        This is every bound parameter name in the statement, both in its
        compiled and in its escaped form.  See :ticket:`13695`.

        )Ú	frozensetrV  rÞ  r¨   rl  rK  s    r  Ú_expanded_bind_names_reservedz)SQLCompiler._expanded_bind_names_reserved„  sC   € ô ˜Ÿ™×/Ñ/Ó1Ó2×8Ñ8Ø×#Ñ# T×%<Ñ%<×%CÑ%CÓ%Eó
ð 	
r  c                ó2   — t        | j                  «      dkD  S ©Nr    )rÌ  r£  rK  s    r  Úis_subqueryzSQLCompiler.is_subquery‘  s   € Ü�4—:‘:‹ Ñ"Ð"r  c                ó   — | S r  r  rK  s    r  rå  zSQLCompiler.sql_compiler”  s   € àˆr  c                óL   — | j                  ||d¬«      }| j                  |«      S )aR  Return a new :class:`.ExpandedState` for a given parameter set.

        For queries that use "expanding" or other late-rendered parameters,
        this method will provide for both the finalized SQL string as well
        as the parameters that would be used for a particular parameter set.

        .. versionadded:: 2.0.0rc1

        Tr‚  )rò  rš  )r  rï  rñ  r<  s       r  Úconstruct_expanded_statez$SQLCompiler.construct_expanded_state˜  s:   € ð ×*Ñ*ØØ%Ø ð +ó 
ˆ
ð
 ×7Ñ7Øó
ð 	
r  c                ó$  — |�| j                   rJ ‚| j                   r| j                  }|r|s|}ni |¥|¥}| j                  rF|sD| j                  €J ‚|st	        | j                  j
                  «      S t        j                  d«      ‚|xr t        | j                  «      }|rq| j                  €t        j                  d«      ‚| j                  d   }	| j                  }
|
€J ‚|
\  }}t        |	|«      D ���ci c]  \  }}||   D ]  }||“Œ Œ }}}}nd}|�ri }| j                  j                  «       D ]ï  \  }}|r| j                  j!                  ||«      n|}|j"                  |v r||j"                     ||<   ŒG||v r	||   ||<   ŒT|rX|j$                  rL|r&t        j                  d|j"                  |fz  d¬«      ‚t        j                  d|j"                  z  d¬«      ‚|r|j!                  ||«      }n|}|j&                  r|j(                  ||<   Œá|j*                  ||<   Œñ |S i }| j                  j                  «       D ]Á  \  }}|r| j                  j!                  ||«      n|}|rX|j$                  rL|r&t        j                  d|j"                  |fz  d¬«      ‚t        j                  d|j"                  z  d¬«      ‚|r|j!                  ||«      }n|}|j&                  r|j(                  ||<   Œ³|j*                  ||<   ŒÃ |S c c}}}w )	z5return a dictionary of bind parameter keys and valuesNzÂcan't construct new parameters when render_postcompile is used; the statement is hard-linked to the original parameters.  Use construct_expanded_state to generate a new statement and parameters.zcThis compiled object has no original cache key; can't pass extracted_parameters to construct_paramsr    z@A value is required for bind parameter %r, in parameter group %dÚcd3x)Úcodez)A value is required for bind parameter %r)rw  rx  rb  rc  Údictr<  r7   rI  r2  rl  rÁ  ÚCompileErrorrn  ÚziprV  r—  rÃ  rF  ÚrequiredÚcallableÚeffective_valuerñ  )r  rï  rð  rñ  Ú_group_numberÚ_checkrƒ  rx  Úhas_escaped_namesÚorig_extractedÚ
ckbm_tuplerž  r@  rœ  Ú	extractedrä  Úresolved_extractedÚpdrð  r  Úescaped_nameÚvalue_params                         r  rò  zSQLCompiler.construct_params¯  s™  € ð Ð(Ø×+Ò+Ð+Ð+Ø×!Ò!Ø $× 6Ñ 6ÐáÙØ*‘à8Ð-Ð8°Ð8�à×#Ò#©OØ×4Ñ4Ð@Ð@Ð@ÙÜ˜D×=Ñ=×HÑHÓIÐIä×-Ñ-ð4óð ð )ÒJ¬T°$×2IÑ2IÓ-JÐáð �~‰~Ð%Ü×&Ñ&ðJóð ð
 "&§¡°Ñ!2�à×3Ñ3ˆJØÐ)Ð)Ð)Ø ‰GˆD�!ô %(¨Ð8LÓ$M÷"ð "á �A�yØ  ™Gò"ð ð �i‘ð"Øð"Ðó "ð "&ÐâØˆBØ#'§?¡?×#8Ñ#8Ó#:ò %=‘�	˜4ñ )ð ×+Ñ+×/Ñ/°°dÔ;àð ð —=‘= FÑ*Ø'-¨i¯m©mÑ'<�B�|Ò$Ø˜V‘^Ø'-¨d¡|�B�|Ò$á 	× 2Ò 2Ù$Ü!×5Ñ5ð4à(Ÿ}™}¨mÐ<ñ=ð "(ô	ð ô "×5Ñ5ØGØ'Ÿm™mñ,à!'ôð ñ *Ø&8×&<Ñ&<Ø% yó'™ð '0˜à ×)Ò)Ø+6×+FÑ+F˜˜<Ò(à+6×+<Ñ+<˜˜<Ò(ðK%=ðL ˆIàˆBØ#'§?¡?×#8Ñ#8Ó#:ò 9‘�	˜4ñ )ð ×+Ñ+×/Ñ/°°dÔ;àð ñ ˜i×0Ò0Ù$Ü!×5Ñ5ð4à(Ÿ}™}¨mÐ<ñ=ð "(ô	ð ô "×5Ñ5ØGØ'Ÿm™mñ,à!'ôð ñ &Ø"4×"8Ñ"8¸ÀIÓ"N‘Kà"+�Kà×%Ò%Ø'2×'BÑ'B�B�|Ò$à'2×'8Ñ'8�B�|Ò$ð=9ð@ ˆIùôg"s   Ã8Lc                óž  ‡‡‡‡	— | j                   Š‰j                  Š	‰j                  Š‰j                  Šˆˆˆˆ	fd„}i }| j                  }| j
                  D ]n  }||v rŒ|j                  j                  r<t        t        |j                  «      j                  D �cg c]
  } ||«      ‘Œ c}||<   ŒZ ||j                  «      ||<   Œp |S c c}w )Nc                óf   •— | j                  ‰«      j                  ‰«      }|�‰�|‰vr‰�|‰v r|S y r  )Ú_unwrapped_dialect_implÚget_dbapi_type)ÚtypÚdbtypeÚdbapirÅ  Úexclude_typesÚinclude_typess     €€€€r  Úlookup_typez<SQLCompiler._get_set_input_sizes_lookup.<locals>.lookup_typeC  sH   ø€ Ø×0Ñ0°Ó9×HÑHÈÓOˆFð Ð"Ø"Ð*¨f¸MÑ.IØ"Ð*¨f¸Ñ.Eà�àr  )rÅ  Úinclude_set_input_sizesÚexclude_set_input_sizesr  rj  rV  r  rî  r	   r4   rï  )
r  r  Ú
inputsizesrj  rð  r  r  rÅ  r  r  s
         @@@@r  Ú_get_set_input_sizes_lookupz'SQLCompiler._get_set_input_sizes_lookup:  sÈ   û€ à—,‘,ˆà×7Ñ7ˆØ×7Ñ7ˆà—‘ˆ÷
	ð ˆ
à!%×!<Ñ!<ÐàŸ™ò 
	DˆIØÐ2Ñ2Øà�~‰~×,Ò,ô  $¤I¨y¯~©~Ó>×DÑDö)àñ   Õ$ò)�
˜9Ò%ñ
 )4°I·N±NÓ(C�
˜9Ò%ð
	Dð Ðùò)s   ÂC
c                ó&   — | j                  d¬«      S )zýReturn the bind param dictionary embedded into this
        compiled object, for those values that are present.

        .. seealso::

            :ref:`faq_sql_expression_string` - includes a usage example for
            debugging use cases.

        F)r  rô  rK  s    r  rï  zSQLCompiler.paramsa  s   € ð ×$Ñ$¨EÐ$Ó2Ð2r  c                óD  ‡‡‡‡‡ ‡!— i }| j                   }|€| j                  }| j                  rg }| j                  }|€| j                  }ndx}}| j
                  }t        d|«      Š!t        d|«      }i }	i Š i }
t        | j                  «      }d}| j                  r|�|}| j                  rg }n| j                  j                  «       }| j                  }|D �]œ  Š|r|j                  ‰‰«      n‰}| j                  ‰   }|| j                  v r*|‰ vr%| j!                  ||j#                  |«      ¬«      ‰ |<   Œa|| j$                  v �r|‰ v r|
|   }d}n5|j#                  ‰«      }| j'                  ||||¬«      }|\  }}||
|<   |‰ |<   |j(                  rŒ¾|j+                  |«       |j,                  j.                  r9‰|v rP|‰   Št1        ‰«      Š|	j+                  ˆˆfd„t3        |«      D «       «       n|	j+                  ˆˆ!fd„|D «       «       |�|j5                  d„ |D «       «       n|�|j5                  d	„ |D «       «       |D ��cg c]  \  }}|‘Œ	 c}}|‰<   �Œˆ|€�ŒŒ|j7                  ‰«       �ŒŸ ˆ fd
„}t9        j:                  | j<                  ||«      }|�‘|€J ‚t3        || j>                  «      D ��ci c]  \  }}|| j@                  › |› �“Œ c}}Š| jB                  jD                  r| jF                  }n| jH                  }|j;                  ˆfd„|«      }|j5                  |«       tK        |||	||«      }|rR|| _         || _        |jL                  | _        | j                  rtO        |j                  xs d«      nd| _        || _(        |S c c}}w c c}}w )až  handle special post compile parameters.

        These include:

        * "expanding" parameters -typically IN tuples that are rendered
          on a per-parameter basis for an otherwise fixed SQL statement string.

        * literal_binds compiled with the literal_execute flag.  Used for
          things like SQL Server "TOP N" where the driver does not accommodate
          N as a bound parameter.

        Nr=  z/Mapping[str, Sequence[_BindProcessorType[Any]]]©Úrender_literal_value)Útaken_namesc              3  óN   •K  — | ]  \  }\  }}‰|‰z     �|‰|‰z     f–— Œ y ­wr  r  )rE  ÚidxrF  r@  Úelement_processorsrâ  s       €€r  rG  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>ì  s?   øè ø€ ò 2á$1 C©¨#¨qØ#5°c¸C±iÑ#@Ð#Lð "%Ð&8¸¸s¹Ñ&CÔ Dñ2ùs   ƒ"%c              3  ó:   •K  — | ]  \  }}‰‰v r	|‰‰   f–— Œ y ­wr  r  )rE  rF  r@  r  Úsingle_processorss      €€r  rG  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>ò  s1   øè ø€ ò .á &  QØ#Ð'8Ñ8ð !Ð"3°DÑ"9Ô:ñ.ùó   ƒc              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr  r  ©rE  r  r@  s      r  rG  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>ø  s   è ø€ ò 3Ù%, T¨1œDñ3ùó   ‚c              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr  r  r)  s      r  rG  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>ÿ  s   è ø€ Ò.M¹¸¸a¬tÑ.Mùr*  c                ó  •‡‡— | j                  d«      }‰|   }| j                  d«      rU| j                  d«      j                  d«      }|d   |d   cŠŠdj                  ˆˆfd„|j                  d«      D «       «      }|S )Nr    r6   ú~~r(  rá   c              3  ó.   •K  — | ]  }‰›|›‰›�–— Œ y ­wr  r  )rE  ÚexpÚbe_leftÚbe_rights     €€r  rG  z]SQLCompiler._process_parameters_for_postcompile.<locals>.process_expanding.<locals>.<genexpr>	  s    øè ø€ ò !àñ !(©©hÔ7ñ!ùs   ƒ)r    Úsplitr‘   )rÅ  rF  ÚexprÚtokr0  r1  Úreplacement_expressionss       @@€r  Úprocess_expandingzJSQLCompiler._process_parameters_for_postcompile.<locals>.process_expanding	  s~   ú€ Ø—'‘'˜!“*ˆCØ*¨3Ñ/ˆDð �w‰w�qŒzØ—g‘g˜a“j×&Ñ& tÓ,�Ø$'¨¡F¨C°©FÐ!�˜Ø—y‘yô !à#Ÿz™z¨$Ó/ô!ó �ð ˆKr  c                ód   •— ‰j                  | j                  d«      | j                  d«      «      S r×  rØ  rÙ  s    €r  rÛ  zASQLCompiler._process_parameters_for_postcompile.<locals>.<lambda>*	  s"   ø€ ˜)Ÿ-™-¨¯©°«
°A·G±G¸A³JÓ?€ r  r  ))re  rµ  r�  rg  r@  rò  r	   r‰   rõ  ra  rV  rÞ  rl  rÃ  rU  rj  Úrender_literal_bindparamr™  rk  Ú$_literal_execute_expanding_parameterÚliteral_executer–  r  rî  rÌ  Ú	enumerateÚextendrÄ  r|  rÐ  Ú_post_compile_patternrß  r\  r½  rÍ  rà  rá  r:  r;  r°  rc  )"r  r<  r„  Úexpanded_parametersÚpre_expanded_stringÚnew_positiontupÚpre_expanded_positiontupr>  Útuple_processorsÚnew_processorsÚto_update_setsÚexpanded_taken_namesÚnumeric_positiontupÚnamesÚebnr  Ú	parameterÚ	to_updaterÞ  Úleep_resÚreplacement_exprÚ
expand_keyr@  r6  r;  râ  rF  rè  Úexpanded_stater$  r  rÚ  r5  r&  s"                            `   @@@@@r  rš  z/SQLCompiler._process_parameters_for_postcompilen  s7  ý€ ð$ !Ðð #×7Ñ7ÐØÐ&Ø"&§+¡+Ðà�?Š?Ø ˆOà'+×'EÑ'EÐ$Ø'Ð/Ø+/×+;Ñ+;Ñ(ð :>Ð=ˆOÐ6à×*Ñ*ˆ
Ü Ø3°Zó
Ðô  Ø=¸zó
Ðð >@ˆà24ÐØ)+ˆô *-Ø×.Ñ.ó*
Ðð 48Ðà�?Š?Ð7ÐCØ#;ˆEØ×"Ò"Ø&(Ñ#à—O‘O×*Ñ*Ó,ˆEà×%Ñ%ˆØó K	-ˆDÙ25˜3Ÿ7™7 4¨Ô.¸4ˆLØŸ
™
 4Ñ(ˆIà˜D×7Ñ7Ñ7ØÐ'>Ñ>à×5Ñ5Ø%Ø1;·±ÀÓ1Mð 6ó ð ,¨LÑ9ð à˜D×4Ñ4Ò4ØÐ#:Ñ:Ø .¨|Ñ <�IØ!‘Fð (Ÿ^™^¨DÓ1�Fà#×HÑHØ$Ø!ØØ$8ð	  Ió  �Hð 3;Ñ/�IÐ/à3<�N <Ñ0Ø<LÐ+¨LÑ9à ×0Ó0Ø×%Ñ% iÔ0Ø —~‘~×4Ò4ØÐ#3Ñ3ð 2BÀ$Ñ1GÐ.Ü"%Ð&8Ó"9˜CØ*×1Ñ1ô 2ä5>¸yÓ5Iô2õ ð '×-Ñ-ô .à*3ô.ô ð
 +Ð6Ø+×2Ñ2ñ 3Ø09ô3õ ð )Ð4ð (×.Ñ.Ñ.MÀ9Ô.MÔMà8A÷1Ù'4 z°1š
ó1Ð'¨Ó-ð !Ò,Ø×&Ñ& tÖ,ðWK	-ôZ	ô —F‘FØ×&Ñ&Ð(9Ð;Nó
ˆ	ð Ð*Ø"Ð.Ð.Ð.ô !*Ø'¨×)>Ñ)>ó!÷á�C˜ð ˜×;Ñ;Ð<¸S¸EÐBÑBóˆIð �}‰}×-Ò-Ø#'×#EÑ#EÑ à#'×#9Ñ#9Ð ð
 )×,Ñ,Û?ÀóˆIð ×"Ñ"Ð#6Ô7ä&ØØØØØó
ˆñ ð )<ˆDÔ%Ø-EˆDÔ*Ø(×2Ñ2ˆDŒKð —?’?ô �^×/Ñ/Ò5°2Ô6àð Ôð
 1?ˆDÔ-àÐùóI1ùó6s   ÉNÊ=Nzsqlalchemy.engine.cursorc                ó€   — t         j                  j                  }|j                  j	                  | j
                  «      S )z(utility method used for unit tests only.)r+   Ú	preloadedÚengine_cursorrn   Ú_create_description_match_mapr¸  )r  Úcursors     r  Ú_create_result_mapzSQLCompiler._create_result_mapF	  s5   € ô —‘×-Ñ-ˆØ×*Ñ*×HÑHØ× Ñ ó
ð 	
r  Ú_BindNameForColProtocolÚ_get_bind_name_for_colc                ó   — | j                   }|S r  )rV  )r  Úgetters     r  Ú_within_exec_param_key_getterz)SQLCompiler._within_exec_param_key_getterQ	  s   € à×,Ñ,ˆØˆr  zsqlalchemy.engine.resultc           	     ó”  ‡‡	‡
‡‡‡— t         j                  j                  }| j                  }| j                  €J ‚| j                  j
                  }t        rt        |t        «      sJ ‚|j                  }|j                  D �cg c]!  }t        j                  d ||«      d «      |f‘Œ# c}Šd Š	|j                  Š‰�D‰j                  j                  | j                   d «      Š |‰«      Š
‰
| j"                  v r
ˆ
fd„}|Š	nd Š|j%                  |j                  D �cg c]  }|j&                  ‘Œ c}«      Šˆˆ	ˆˆˆfd„}|S c c}w c c}w )NrÃ  c                ó4   •— |j                  ‰| «      }|�|S | S r  ©rÃ  )Ú	lastrowidr<  Úparam_valueÚautoinc_keys      €r  Ú_autoinc_getterzPSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>._autoinc_getterz	  s)   ø€ Ø",§.¡.°¸iÓ"H�KØ"Ð.ð
  +Ð*ð  )Ð(r  c                ój   •‡ ‡— ‰� ‰‰ «      Š ‰ € ‰ˆfd„‰D «       «      S  ‰ˆˆˆ ˆfd„‰D «       «      S )a  given cursor.lastrowid value and the parameters used for INSERT,
            return a "row" that represents the primary key, either by
            using the "lastrowid" or by extracting values from the parameters
            that were sent along with the INSERT.

            c              3  ó4   •K  — | ]  \  }} |‰«      –— Œ y ­wr  r  )rE  rX  r  r<  s      €r  rG  zWSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.get.<locals>.<genexpr>™	  s   øè ø€ ÒL±[°V¸S™f Z×0ÑLùó   ƒc              3  óV   •K  — | ]   \  }}|‰u r‰�	 ‰‰‰«      n	‰n |‰«      –— Œ" y ­wr  r  )rE  rX  r  Úautoinc_colÚautoinc_getterr]  r<  s      €€€€r  rG  zWSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.get.<locals>.<genexpr>›	  sJ   øè ø€ ò ñ $˜ ð  +Ñ-ð  .Ð9ñ +¨9°jÔAá!*ñ $ JÓ/ó0ñùó   ƒ&)r  )r]  r<  re  rf  ÚgettersÚlastrowid_processorÚrow_fns   ``€€€€€r  rÃ  zDSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.getŽ	  sH   ú€ ð #Ð.Ù/°	Ó:�	àÐ ÙÓLÀGÔLÓLÐLáö ð (/ôó ð r  )r+   rP  Úengine_resultrY  r1  r;  r   rÊ  rG   r§   Úprimary_keyÚoperatorÚmethodcallerÚ_autoincrement_columnr  Ú_cached_result_processorrÅ  rU  Úresult_tuplerF  )r  ÚresultÚparam_key_getterr;  r§   r  r`  rÃ  re  rf  r_  rh  ri  rj  s           @@@@@@r  Ú+_inserted_primary_key_from_lastrowid_getterz7SQLCompiler._inserted_primary_key_from_lastrowid_getterV	  sB  ý€ ô —‘×-Ñ-ˆà×=Ñ=Ðà×!Ñ!Ð-Ð-Ð-Ø×&Ñ&×0Ñ0ˆ	åÜ˜i¬Ô0Ð0Ð0à—‘ˆð ×(Ñ(ö
àô ×"Ñ" 5Ñ*:¸3Ó*?ÀÓFÈÒLò
ˆð
 ˆØ×1Ñ1ˆØÐ"à"-×"2Ñ"2×"KÑ"KØ—‘˜dó#Ðñ +¨;Ó7ˆKð ˜dŸj™jÑ(ô
)ð "1‘ð #'Ðà×$Ñ$¸×9JÑ9JÖ%K°# c§g£gÒ%KÓLˆ÷	ð 	ð4 ˆ
ùòG
ùòN &Ls   Â&E ÄEc                ó’  ‡
‡— t         j                  j                  }| j                  €J ‚| j                  j                  }t
        rt        |t        «      sJ ‚| j                  }|j                  }| j                  }|€J ‚t        |«      D ��ci c]  \  }}||“Œ
 }}}t        d|j                  D �cg c]?  }||v rt        j                  ||   «      dfnt        j                   d ||«      d «      df‘ŒA c}«      Š
|j#                  |j                  D �cg c]  }|j$                  ‘Œ c}«      Šˆ
ˆfd„}	|	S c c}}w c c}w c c}w )Nz'List[Tuple[Callable[[Any], Any], bool]]TrÃ  Fc                ó,   •‡ ‡—  ‰ˆˆ fd„‰D «       «      S )Nc              3  óH   •K  — | ]  \  }}|r |‰«      n |‰«      –— Œ y ­wr  r  )rE  rX  Úuse_rowr<  Úrows      €€r  rG  zWSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.get.<locals>.<genexpr>Ð	  s-   øè ø€ ò á#�F˜Gñ  '‘�s”©F°:Ó,>Ó>ñùr•  r  )ry  r<  rh  rj  s   ``€€r  rÃ  zDSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.getÏ	  s   ú€ Ùô à'.ôó ð r  )r+   rP  rk  r1  r;  r   rÊ  rG   rY  r§   rS  r;  r	   rl  rm  Ú
itemgetterrn  rq  rF  )r  rr  r;  rs  r§   r©  r#  r  ÚretrÃ  rh  rj  s             @@r  Ú+_inserted_primary_key_from_returning_getterz7SQLCompiler._inserted_primary_key_from_returning_getterª	  sO  ù€ ô —‘×-Ñ-ˆà×!Ñ!Ð-Ð-Ð-Ø×&Ñ&×0Ñ0ˆ	åÜ˜i¬Ô0Ð0Ð0à×=Ñ=ÐØ—‘ˆà×+Ñ+ˆ	ØÐ$Ð$Ð$Ü(1°)Ó(<×=™H˜C ˆs�C‰xÐ=ˆÑ=äØ5ð !×,Ñ,öð ð ˜c‘zô ×(Ñ(¨¨S©Ó2°DÑ9ô !×-Ñ-Ø!Ñ#3°CÓ#8¸$óð ð	ñòó
ˆð" ×$Ñ$¸×9JÑ9JÖ%K°# c§g£gÒ%KÓLˆõ	ð ˆ
ùó7 >ùòùò &Ls   ÂD9Â3AD?
ÄEc                 ó   — y)zÅCalled when a SELECT statement has no froms, and no FROM clause is
        to be appended.

        Gives Oracle Database a chance to tack on a ``FROM DUAL`` to the string
        output.

        r´  r  rK  s    r  Údefault_fromzSQLCompiler.default_from×	  s   € ð r  c                ó
  — |�||fz  }||d<   ||d<    |j                   j                  | fi |¤Ž}|j                  D �]C  }|| j                  vrŒ| j                  |   }|j	                  |j                  |j
                     dd¬«      }| j                  |   }	|x| j                  |<   | j                  |	<   |	| j                  |<   | j                  j                  |d«       || j                  v r| xj                  |hz  c_        || j                  v r| xj                  |hz  c_	        | j                  }
|
sŒü|
\  }}|j                  D ]4  }|j
                  |v sŒ||j
                     }||   j                  |«       Œ6 �ŒF |S )a’  SQL compile the nested element of an _OverrideBinds with
        bindparams swapped out.

        The _OverrideBinds is not normally expected to be compiled; it
        is meant to be used when an already cached statement is to be used,
        the compilation was already performed, and only the bound params should
        be swapped in at execution time.

        However, there are test cases that exericise this object, and
        additionally the ORM subquery loader is known to feed in expressions
        which include this construct into new queries (discovered in #11173),
        so it has to do the right thing at compile time as well.

        NÚadd_to_result_mapÚresult_map_targetsTF)Úmaintain_keyr  )rÞ  rè  Ú	translaterU  Ú_with_valuerF  rV  r™  rk  rj  rn  Ú_cloned_setrÄ  )r  Úoverride_bindsr€  r�  rà  Úsqltextr   ÚbpÚnew_bpr  r	  rž  r�  Úcbs                 r  Úvisit_override_bindsz SQLCompiler.visit_override_bindsá	  s˜  € ð, Ð(ð  >Ð"3Ñ3ÐØ&7ˆBÐ"Ñ#Ø'9ˆBÐ#Ñ$ð <�.×(Ñ(×;Ñ;¸DÑGÀBÑGˆð  ×)Ñ)ó "	0ˆAØ˜Ÿ
™
Ñ"ØØ—‘˜A‘ˆBð —^‘^Ø×(Ñ(¨¯©Ñ0Ø!Øð $ó ˆFð —?‘? 2Ñ&ˆDØ/5Ð5ˆD�J‰J�q‰M˜DŸJ™J tÑ,Ø&*ˆD�O‰O˜FÑ#Ø�O‰O×Ñ  DÔ)à�T×-Ñ-Ñ-Ø×(Ò(¨V¨HÑ4Õ(Ø�T×0Ñ0Ñ0Ø×+Ò+°¨xÑ7Õ+à×3Ñ3ˆJÚØ'‘
��dØŸ.™.ò 0�BØ—v‘v ’~Ø! "§&¡&™\˜Ø˜R™Ÿ™¨Õ/ò0ð?"	0ðH ˆr  c                óH   — d |j                   j                  | fi |¤Žz   dz   S ©NrB  rC  ©rÞ  rè  )r  ÚgroupingÚasfromrê  s       r  Úvisit_groupingzSQLCompiler.visit_grouping1
  ó+   € ØÐ8�X×%Ñ%×8Ñ8¸ÑHÀÑHÑHÈ3ÑNÐNr  c                óH   — d |j                   j                  | fi |¤Žz   dz   S r�  rŽ  )r  r�  rê  s      r  Úvisit_select_statement_groupingz+SQLCompiler.visit_select_statement_grouping4
  r’  r  c                óô  — | j                   r§| j                  j                  r‘	 t        d| j                   d   d   «      }|j                  \  }}}|r|}	n|}	|j                  j                  }
|
�E|
j                  |	v r7|
j                  |	|
j                     «      r|j                  j                  |d<    | j                  |j                  fd|i|¤ŽS # t        $ r}t        j                  d«      |‚d }~ww xY w)Nú'Union[SelectState, CompoundSelectState]r«  r1  úECan't resolve label reference for ORDER BY / GROUP BY / DISTINCT etc.Úrender_label_as_labelÚwithin_columns_clause)r£  rÅ  Úsupports_simple_order_by_labelr	   ÚKeyErrorr7   r   Ú_label_resolve_dictrÞ  Ú_order_by_label_elementr  Úshares_lineagerÌ  )r  rÞ  r™  rê  r1  ÚkeÚ	with_colsÚ
only_fromsÚ	only_colsÚresolve_dictÚorder_by_elems              r  Úvisit_label_referencez!SQLCompiler.visit_label_reference7
  s  € ð �:Š:˜$Ÿ,™,×EÒEð	Ü $Ø=Ø—J‘J˜r‘N ?Ñ3ó!�ð ×1Ñ1ñ	ØØØá$Ø)‘à(�ð $ŸO™O×CÑCˆMð Ð)Ø!×&Ñ&¨,Ñ6Ø!×0Ñ0Ø  ×!3Ñ!3Ñ4ôð
 —O‘O×;Ñ;ð Ð.Ñ/ð ˆt�|‰|Ø�O‰Oñ
à"7ð
ð ñ
ð 	
øôA ò Ü×&Ñ&ð/óð ðûðús   ¤C Ã	C7ÃC2Ã2C7c                ó>  — | j                   s| j                  |j                  «      S 	 t        d| j                   d   d   «      }j                  \  }}}	 |r||j                     }	n||j                     }	|	|d<    | j                  |	fd|i|¤ŽS # t        $ r;}t        j                  |j                  dt        j                  |¬«       Y d }~Œ‹d }~ww xY w# t        $ r;}
t        j                  |j                  dt        j                  |
¬«       Y d }
~
y d }
~
ww xY w)Nr–  r«  r1  r—  )ÚextraÚexc_clsrß  r˜  r™  )r£  rÌ  Ú_text_clauser	   r›  r"   Ú_no_text_coercionrÞ  r7   r   rœ  )r  rÞ  r™  rê  r1  rŸ  r   r¡  r¢  r  rß  s              r  Úvisit_textual_label_referencez)SQLCompiler.visit_textual_label_referencef
  s*  € ð �zŠzà—<‘< × 4Ñ 4Ó5Ð5ð	Ü Ø9Ø—
‘
˜2‘˜Ñ/óˆMð ,9×+LÑ+LÑ(ˆ	�:˜yð	Ù$Ø  §¡Ñ1‘à §¡Ñ0�ð /2ˆFÐ*Ñ+Ø�4—<‘<ØñØ+@ðØDJñð øô; ò 		Ü×'Ñ'Ø—‘ð/ô ×(Ñ(Ø÷ò ûð		ûô" ò 		Ü×'Ñ'Ø—‘ð/ô ×(Ñ(Ø÷ò ûð		ús/   ©B Á!C Â	CÂ1CÃCÃ	DÃ!1DÄDc                óv  — |rt        j                  d«      ‚|xr | }	||u }
|
s|	rMt        |j                  t        j
                  «      r| j                  d|j                  «      }n|j                  }|	rˆ|�1 ||j                  ||f|j                  z   |z   |j                  «        |j                  j                  | fdddœ|¤Žt        t        j                     z   | j                  j                  |«      z   S |
r| j                  j                  |«      S  |j                  j                  | fddi|¤ŽS )Nz¥Using label() directly inside tstring is not supported as it is ambiguous how the label expression should be rendered without knowledge of how it's being used in SQLÚcolidentT)r™  Úwithin_label_clauser™  F)r7   r   rÊ  r  r$   rL   Ú_truncated_identifierr  r  rÞ  rè  Ú	OPERATORSr&   Úas_r½  Úformat_label)r  r  r€  r®  r™  r˜  r�  Úwithin_tstringrà  Úrender_label_with_asÚrender_label_onlyÚ	labelnames               r  Úvisit_labelzSQLCompiler.visit_label“
  s]  € ñ Ü×"Ñ"ðKóð ð "Ò=Ð*=Ð&=ð 	ð 2°UÐ:ÐáÑ 4Ü˜%Ÿ*™*¤h×&?Ñ&?Ô@Ø ×6Ñ6°zÀ5Ç:Á:ÓN‘	à!ŸJ™J�	áØ Ð,Ù!ØØ—J‘JØ˜IÐ&¨×)9Ñ)9Ñ9Ð<NÑNØ—J‘Jô	ð 1�—‘×0Ñ0Øðà*.Ø(,ñð ñ	ô œIŸM™MÑ*ñ+ð —-‘-×,Ñ,¨U°IÓ>ñ?ð	ñ Ø—=‘=×-Ñ-¨e°YÓ?Ð?à3�5—=‘=×3Ñ3ØñØ,1ðØ57ñð r  c                ó,   — t        j                  d«      ‚)Nz:Cannot compile Column object until its 'name' is assigned.©r7   r   ©r  r¬   s     r  Ú_fallback_column_namez!SQLCompiler._fallback_column_nameË
  s   € Ü×ÑØHó
ð 	
r  c                ó@   — |j                   } | j                  |fi |¤ŽS r  )Ú	_resolvedrÌ  )r  rÞ  rà  Úsql_elements       r  Úvisit_lambda_elementz SQLCompiler.visit_lambda_elementÐ
  s#   € Ø×'Ñ'ˆØˆt�|‰|˜KÑ.¨2Ñ.Ð.r  c                óZ  — |j                   x}}|€| j                  |«      }|j                  }	|	s,t        |t        j
                  «      r| j                  d|«      }|�C|||j                  f|z   }
|j                  r|
|j                  fz  }
 ||||
|j                  «       |	r| j                  |«      }n| j                  j                  |«      }|j                  }|�|r|j                  s|S | j                  j                  |«      }|r| j                  j!                  |«      dz   }nd}t"        rt        |t$        «      sJ ‚|j                   }|s|r	||v r||   }t        |t        j
                  «      r| j                  d|«      }|| j                  j                  |«      z   dz   |z   S )Nr­  rE  r´  Úalias)r  r»  Ú
is_literalrÊ  r$   rL   r¯  rF  Ú	_tq_labelr  Úescape_literal_columnr½  Úquoter§   Únamed_with_columnÚschema_for_objectÚquote_schemar   re   )r  r¬   r€  Úinclude_tabler�  Úambiguous_table_name_maprê  r  Ú	orig_namerÂ  Útargetsr§   Úeffective_schemaÚschema_prefixÚ	tablenames                  r  Úvisit_columnzSQLCompiler.visit_columnÔ
  sŸ  € ð "Ÿ;™;Ð&ˆˆyØˆ<Ø×-Ñ-¨fÓ5ˆDà×&Ñ&ˆ
Ùœj¨¬x×/HÑ/HÔIØ×-Ñ-¨j¸$Ó?ˆDàÐ(Ø˜t V§Z¡ZÐ0Ð3EÑEˆGØ×ÒØ˜F×,Ñ,Ð.Ñ.�á˜d I¨w¸¿¹ÔDáð ×-Ñ-¨dÓ3‰Dà—=‘=×&Ñ& tÓ,ˆDØ—‘ˆØˆ=¡°U×5LÒ5LØˆKà#Ÿ}™}×>Ñ>¸uÓEÐáà—M‘M×.Ñ.Ð/?Ó@À3ÑFñ ð !#�åÜ! %¬Ô9Ð9Ð9ØŸ
™
ˆIñ %Ù,ØÐ!9Ñ9à4°YÑ?�	ä˜)¤X×%>Ñ%>Ô?Ø ×6Ñ6°wÀ	ÓJ�	à  4§=¡=×#6Ñ#6°yÓ#AÑAÀCÑGÈ$ÑNÐNr  c                ób   — | j                   j                  |j                  |j                  «      S r  )r½  Úformat_collationÚ	collationÚcollation_schema©r  rÞ  rà  s      r  Úvisit_collationzSQLCompiler.visit_collation  s*   € Ø�}‰}×-Ñ-Ø×Ñ˜w×7Ñ7ó
ð 	
r  c                ó   — |j                   S r  ©r  )r  Ú
fromclauserê  s      r  Úvisit_fromclausezSQLCompiler.visit_fromclause  s   € Ø�‰Ðr  c                ó   — |j                   S r  rØ  )r  r’  rê  s      r  Úvisit_indexzSQLCompiler.visit_index  s   € Ø�z‰zÐr  c                óŒ   — ||d<   | j                   |d<    | j                  j                  j                  |j                  fi |¤ŽS )NÚtype_expressionrÆ  )r½  rÅ  Útype_compiler_instancerÌ  r  )r  Ú
typeclauserà  s      r  Úvisit_typeclausezSQLCompiler.visit_typeclause  sJ   € Ø *ˆÐÑØ$(§M¡MˆÐ Ñ!Ø:ˆt�|‰|×2Ñ2×:Ñ:Ø�O‰Oñ
Ø!ñ
ð 	
r  c                óV   — | j                   j                  r|j                  dd«      }|S ©NrA  ú%%©r½  rÍ  Úreplace©r  Útexts     r  Úpost_process_textzSQLCompiler.post_process_text!  ó$   € Ø�=‰=×)Ò)Ø—<‘<  TÓ*ˆDØˆr  c                óV   — | j                   j                  r|j                  dd«      }|S rã  rå  rç  s     r  rÄ  z!SQLCompiler.escape_literal_column&  rê  r  c           	     ó6  ‡ ‡‡— ‰ j                   r‰ j                  ‰«       ˆˆ ˆfd„}‰ j                  sd‰ _        |r |d d ‰ft        j
                  «       t        j                  d„ t        j                  |‰ j                  ‰j                  «      «      «      S )Nc                ó¨   •— | j                  d«      }|‰j                  v r  ‰j                  ‰j                  |   fi ‰¤ŽS  ‰j                  |fi ‰¤ŽS r÷  )r    Ú_bindparamsrÌ  Úbindparam_string)rÅ  r  rà  r  Ú
textclauses     €€€r  Údo_bindparamz2SQLCompiler.visit_textclause.<locals>.do_bindparam/  sW   ø€ Ø—7‘7˜1“:ˆDØ�z×-Ñ-Ñ-Ø#�t—|‘| J×$:Ñ$:¸4Ñ$@ÑGÀBÑGÐGà,�t×,Ñ,¨TÑ8°RÑ8Ð8r  Tc                ó$   — | j                  d«      S r÷  )r    )rÅ  s    r  rÛ  z.SQLCompiler.visit_textclause.<locals>.<lambda>A  s   € �a—g‘g˜a“j€ r  )rw  r·  r£  rT  r*   ÚNULLTYPEÚBIND_PARAMS_ESCrÐ  ÚBIND_PARAMSré  rè  )r  rð  r€  rà  rñ  s   `` ` r  Úvisit_textclausezSQLCompiler.visit_textclause+  sƒ   ú€ Ø×ÒØ×Ñ 
Ô+ö	9ð �zŠzØ#ˆDÔáñ ˜d D¨:¨-¼×9JÑ9JÔKô ×"Ñ"Ù Ü�O‰OØ˜d×4Ñ4°Z·_±_ÓEóó
ð 	
r  c                ó8   — | j                  |j                  «      S r  )ré  rè  rÕ  s      r  Úvisit_tstring_textzSQLCompiler.visit_tstring_textG  s   € Ø×%Ñ% g§l¡lÓ3Ð3r  c                óò   ‡ ‡— ‰ j                   r‰ j                  |«       ‰ j                  sd‰ _        |r |d d |ft        j
                  «       d‰d<   dj                  ˆˆ fd„|j                  D «       «      S )NTr³  r´  c              3  óD   •K  — | ]  } ‰j                   |fi ‰¤Ž–— Œ y ­wr  ©rÌ  )rE  Úpartrà  r  s     €€r  rG  z,SQLCompiler.visit_tstring.<locals>.<genexpr>Y  s!   øè ø€ ÒJ°D�|�t—|‘| DÑ/¨BÕ/ÑJùrª  )rw  r·  r£  rT  r*   ró  r‘   Úparts)r  Útstringr€  rà  s   `  `r  Úvisit_tstringzSQLCompiler.visit_tstringJ  sj   ù€ Ø×ÒØ×Ñ Ô(à�zŠzØ#ˆDÔáñ ˜d D¨7¨*´h×6GÑ6GÔHð  $ˆÐÑØ�w‰wÔJ¸G¿M¹MÔJÓJÐJr  c                ó\  — | j                   r| j                  |«       | j                   }|r| j                  n| j                  d   }t	        «       t	        «       |dœ}| j                  j                  |«       |j                  r| j                  ||«       |xs- |dk(  xr |j                  dd«      xs |j                  dd«      }|rp|j                  x| _
        | _        |j                   xr t        |j                  «      | _        |j                  D ]   }	| j                  |	d| j                   ¬«       Œ"  | j                  |j"                  fi |¤Ž}
| j$                  r.|st'        | j                  «      nd }| j)                  |¬	«      |
z   }
| j                  j+                  d«       |
S )
Nr«  ©r-  r,  r)   r   r4  Fr3  T)r™  r€  ©Únesting_level)rw  r·  r£  Ú_default_stack_entryr‰   rÄ  Ú_independent_ctesÚ_dispatch_independent_ctesrÃ  r�  r_  r]  r2  Úcolumn_argsr`  rÌ  Ú_add_to_result_maprÞ  rr  rÌ  Ú_render_cte_clauser™  )r  ÚtafÚcompound_indexr�  rà  Útoplevelr¾  Ú	new_entryÚpopulate_result_mapr¦  rè  r  s               r  Úvisit_textual_selectz SQLCompiler.visit_textual_select[  s—  € ð ×ÒØ×Ñ Ô$Ø—z‘z�>ˆÙ-5�×)Ò)¸4¿:¹:Àb¹>ˆô  #›uÜ›EØñ*
ˆ	ð
 	�
‰
×Ñ˜)Ô$à× Ò Ø×+Ñ+¨C°Ô4ð ò >à !Ñ#ò EØ—I‘IÐ<¸eÓDò>ð
 �y‰yÐ5°uÓ=ð 	ñ à—‘ðˆDÔ! DÔ$Að 47·>±>Ð/Aò 0ÄdØ—‘óGˆDÔ,ð —_‘_ò �Ø—‘ØØ*.Ø&*×&=Ñ&=ð õ ðð ˆt�|‰|˜CŸK™KÑ.¨2Ñ.ˆØ�9Š9Ù3;œC §
¡
œOÀˆMØ×*Ñ*¸Ð*ÓGÈ$ÑNˆDà�
‰
�‰�rÔàˆr  c                 ó   — y©NÚNULLr  ©r  r3  rà  s      r  Ú
visit_nullzSQLCompiler.visit_null‘  ó   € Ør  c                ó2   — | j                   j                  ryy)Nr˜   Ú1©rÅ  Úsupports_native_booleanr  s      r  Ú
visit_truezSQLCompiler.visit_true”  s   € Ø�<‰<×/Ò/Øàr  c                ó2   — | j                   j                  ryy)Nrž   Ú0r  r  s      r  Úvisit_falsezSQLCompiler.visit_falseš  s   € Ø�<‰<×/Ò/Øàr  c                óJ   ‡ ‡— |j                  d„ ˆˆ fd„|D «       D «       «      S )Nc              3  ó$   K  — | ]  }|r|–— Œ
 y ­wr  r  ©rE  Úss     r  rG  z7SQLCompiler._generate_delimited_list.<locals>.<genexpr>¡  s   è ø€ ò 
àÙô ñ
ùó   ‚c              3  óD   •K  — | ]  } |j                   ‰fi ‰¤Ž–— Œ y ­wr  rç  ©rE  r¦  rà  r  s     €€r  rG  z7SQLCompiler._generate_delimited_list.<locals>.<genexpr>£  s$   øè ø€ ÒI¸1Ð*�a×*Ñ*¨4Ñ6°2Õ6ÑIùrª  ©r‘   )r  r$   Ú	separatorrà  s   `  `r  Ú_generate_delimited_listz$SQLCompiler._generate_delimited_list   s&   ù€ Ø�~‰~ñ 
äIÀÔIô
ó 
ð 	
r  c                ót  ‡ ‡— t         j                  j                  t        j                  t         j
                  j                  t         j                  j                  |«      \  }}|dk(  r |d   j                  ‰ fi ‰¤ŽS t        t        j                     }|j                  d„ ˆˆ fd„|D «       D «       «      S )Nr    r   c              3  ó$   K  — | ]  }|r|–— Œ
 y ­wr  r  r   s     r  rG  z;SQLCompiler._generate_delimited_and_list.<locals>.<genexpr>²  s   è ø€ ò "àÙô ñ"ùr"  c              3  óD   •K  — | ]  } |j                   ‰fi ‰¤Ž–— Œ y ­wr  rç  r$  s     €€r  rG  z;SQLCompiler._generate_delimited_and_list.<locals>.<genexpr>´  s$   øè ø€ ÒL¸qÐ.˜!×.Ñ.¨tÑ:°rÕ:ÑLùrª  )r$   ÚBooleanClauseListÚ_process_clauses_for_booleanr&   Úand_rU   Ú
_singletonrR   rè  r°  r‘   )r  Úclausesrà  Úlccr&  s   ` `  r  Ú_generate_delimited_and_listz(SQLCompiler._generate_delimited_and_list§  s—   ù€ Ü×1Ñ1×NÑNÜ�N‰NÜ�N‰N×%Ñ%Ü�O‰O×&Ñ&Øó	
‰ˆˆWð �!Š8Ø0�7˜1‘:×0Ñ0°Ñ<¸Ñ<Ð<ä!¤)§.¡.Ñ1ˆIØ—>‘>ñ "äLÀGÔLô"ó ð r  c                ó.   — d | j                   |fi |¤Žz  S ©Nú(%s))Úvisit_clauselist)r  Ú
clauselistrà  s      r  Úvisit_tuplezSQLCompiler.visit_tuple¸  s    € ØÐ-˜×-Ñ-¨jÑ?¸BÑ?Ñ?Ð?r  c                ó>   —  | j                   |j                  dfi |¤ŽS ©NrH  ©r'  r/  rÕ  s      r  Úvisit_element_listzSQLCompiler.visit_element_list»  s    € Ø,ˆt×,Ñ,¨W¯_©_¸cÑHÀRÑHÐHr  c                ó>   —  | j                   |j                  dfi |¤ŽS )Nrá   r:  rÕ  s      r  Úvisit_order_by_listzSQLCompiler.visit_order_by_list¾  s    € Ø,ˆt×,Ñ,¨W¯_©_¸dÑIÀbÑIÐIr  c                ó†   — |j                   }|€d}nt        |j                      } | j                  |j                  |fi |¤ŽS r9  )rm  r°  r'  r/  )r  r6  rà  Úseps       r  r5  zSQLCompiler.visit_clauselistÁ  sG   € Ø×!Ñ!ˆØˆ;Ø‰Cä˜J×/Ñ/Ñ0ˆCà,ˆt×,Ñ,¨Z×-?Ñ-?ÀÑKÈÑKÐKr  c                ó  — |j                   }| j                  |dd «      }|r
 |||fi |¤ŽS 	 t        |   }d|d<    | j                  |j                  |fi |¤ŽS # t
        $ r}t        j                  | |«      |‚d }~ww xY w)NÚexpression_clauselistTÚ_in_operator_expression)rm  Ú_get_operator_dispatchr°  r'  r/  r›  r7   rÜ  )r  r6  rà  Ú	operator_ÚdispÚopstringrß  s          r  Úvisit_expression_clauselistz'SQLCompiler.visit_expression_clauselistÊ  s©   € Ø×'Ñ'ˆ	à×*Ñ*ØÐ.°ó
ˆñ Ù˜
 IÑ4°Ñ4Ð4ð	Ü  Ñ+ˆHð -1ˆBÐ(Ñ)Ø0�4×0Ñ0Ø×"Ñ" HñØ02ñð øô	 ò 	LÜ×1Ñ1°$¸	ÓBÈÐKûð	Lús   ­	A Á	A>Á"A9Á9A>c                ód  — d}|j                   �#| |j                   j                  | fi |¤Ždz   z  }|j                  D ]8  \  }}|d |j                  | fi |¤Žz   dz    |j                  | fi |¤Žz   dz   z  }Œ: |j                  �&|d |j                  j                  | fi |¤Žz   dz   z  }|dz  }|S )NzCASE rH  zWHEN z THEN zELSE ÚEND)rñ  rè  ÚwhensÚelse_)r  Úclauserê  ÚxÚcondrr  s         r  Ú
visit_casezSQLCompiler.visit_caseÝ  sí   € ØˆØ�<‰<Ð#ØÐ0�—‘×0Ñ0°Ñ@¸Ñ@À3ÑFÑFˆAØ"ŸL™Lò 	‰LˆD�&ØØØ)�$×)Ñ)¨$Ñ9°&Ñ9ñ:àñð ,�&×+Ñ+¨DÑ;°FÑ;ñ<ð ñ	ñ‰Að	ð �<‰<Ð#ØØÐ9˜&Ÿ,™,×9Ñ9¸$ÑIÀ&ÑIÑIÈCÑOñˆAð 	
ˆU‰
ˆØˆr  c                ó<   —  |j                   j                  | fi |¤ŽS r  )Útyped_expressionrè  )r  Útype_coercerà  s      r  Úvisit_type_coercezSQLCompiler.visit_type_coerceð  s    € Ø>ˆ{×+Ñ+×>Ñ>¸tÑJÀrÑJÐJr  c                ó  —  |j                   j                  | fi |¤Ž}t        j                  d|«      }d |j                  j                  | fi |¤Ž›d|r|j                  d«      n|›d|r|j                  d«      ›�S d›�S )Nz(.*)( COLLATE .*)zCAST(rã   r    rC  r6   r´  )rà  rè  r|  ÚmatchrL  r    )r  r	   rê  Útype_clauserU  s        r  Ú
visit_castzSQLCompiler.visit_castó  s…   € Ø8�d—o‘o×8Ñ8¸ÑHÀÑHˆÜ—‘Ð,¨kÓ:‰à*ˆD�K‰K×*Ñ*¨4Ñ:°6Ó:Ù#ˆE�K‰K˜ŒN¨Ñ4Ù#ˆE�K‰K˜‹NÐ+ð
ð 	
ð *,Ð+ð
ð 	
r  c                ó�  — |j                   t        j                  j                  u rd}nw|j                   t        j                  j                  u rd}nN | j
                  |j                  fi |¤Ž}|j                   t        j                  j                  u r|› d�}n|› d�}|j                  t        j                  j                  u rd}nw|j                  t        j                  j                  u rd}nN | j
                  |j                  fi |¤Ž}|j                  t        j                  j                  u r|› d�}n|› d�}|› d|› �S )NzUNBOUNDED PRECEDINGzCURRENT ROWz
 PRECEDINGz
 FOLLOWINGzUNBOUNDED FOLLOWINGrÞ   )
Ú
lower_typer$   ÚFrameClauseTypeÚ	UNBOUNDEDÚCURRENTrÌ  Ú
lower_bindÚ	PRECEDINGÚ
upper_typeÚ
upper_bind)r  Úframeclauserà  r’   Úvalr¦   s         r  Úvisit_frame_clausezSQLCompiler.visit_frame_clauseü  s)  € à×!Ñ!¤X×%=Ñ%=×%GÑ%GÑGØ(‰DØ×#Ñ#¤x×'?Ñ'?×'GÑ'GÑGØ ‰Dà�$—,‘,˜{×5Ñ5Ñ<¸Ñ<ˆCØ×%Ñ%¬×)AÑ)A×)KÑ)KÑKØ˜˜jÐ)‘à˜˜jÐ)�à×!Ñ!¤X×%=Ñ%=×%GÑ%GÑGØ)‰EØ×#Ñ#¤x×'?Ñ'?×'GÑ'GÑGØ!‰Eà�$—,‘,˜{×5Ñ5Ñ<¸Ñ<ˆCØ×%Ñ%¬×)AÑ)A×)KÑ)KÑKØ˜%˜zÐ*‘à˜%˜zÐ*�à��u˜U˜GÐ$Ð$r  c                ó´  —  |j                   j                  | fi |¤Ž}|j                  �!d | j                  |j                  fi |¤Ž› �}n\|j                  �!d | j                  |j                  fi |¤Ž› �}n/|j
                  �!d | j                  |j
                  fi |¤Ž› �}nd }|�<|j                  �0|d| j                  j                  |j                  t        «      z   z  }|›ddj                  d|j                  fd|j                  ffD ��cg c]*  \  }}|�#t        |«      r|›d	 |j                  | fi |¤Ž›�‘Œ, c}}|r|gng z   «      ›d
�S c c}}w )NzRANGE BETWEEN zROWS BETWEEN zGROUPS BETWEEN z	 EXCLUDE z OVER (rH  Ú	PARTITIONÚORDERz BY rC  )rÞ  rè  Úrange_rÌ  ÚrowsÚgroupsÚexcluder½  Úvalidate_sql_phraseÚ_WINDOW_EXCLUDE_REr‘   Úpartition_byÚorder_byrÌ  )r  Úoverrê  rè  rg  ÚwordrL  s          r  Ú
visit_overzSQLCompiler.visit_over  sq  € Ø.ˆt�|‰|×.Ñ.¨tÑ>°vÑ>ˆØ�;‰;Ð"Ø% l d§l¡l°4·;±;Ñ&IÀ&Ñ&IÐ%JÐK‰FØ�Y‰YÐ"Ø$ \ T§\¡\°$·)±)Ñ%F¸vÑ%FÐ$GÐH‰FØ�[‰[Ð$Ø& | t§|¡|°D·K±KÑ'JÀ6Ñ'JÐ&KÐL‰FàˆFàÐ $§,¡,Ð":Ø�k D§M¡M×$EÑ$EØ—‘Ô0ó%ñ ñ ˆFò
 Ø�H‰Hð
 % d×&7Ñ&7Ð8Ø  $§-¡-Ð0ð)÷ñ %˜˜fð Ð)¬c°&¬kò Ð6˜V×6Ñ6°tÑF¸vÒFòHóñ  &�F‘8¨2ñ	/õð
ð 	
ùós   Ä/Ec                ó~   —  |j                   j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›d�S )Nz WITHIN GROUP (ORDER BY rC  )rÞ  rè  rn  )r  Úwithingrouprê  s      r  Úvisit_withingroupzSQLCompiler.visit_withingroup6  sB   € à2ˆK×Ñ×2Ñ2°4ÑB¸6ÓBØ3ˆK× Ñ ×3Ñ3°DÑC¸FÓCð
ð 	
r  c                ó~   —  |j                   j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›d�S )Nz FILTER (WHERE rC  )Úfuncrè  Ú	criterion)r  Ú
funcfilterrê  s      r  Úvisit_funcfilterzSQLCompiler.visit_funcfilter<  s@   € à.ˆJ�O‰O×.Ñ.¨tÑ>°vÓ>Ø3ˆJ× Ñ ×3Ñ3°DÑC¸FÓCð
ð 	
r  c                óÈ  — | j                   j                  t        j                  u rt	        j
                  d«      ‚| j                   j                  t        j                  u ro|j                  j                  «       }t        j                  t        |j                  j                  |j                  «      «      |_         |j                  | fi |¤ŽS  | j                  |fi |¤ŽS )NzCthis dialect does not support ORDER BY within an aggregate function)rÅ  Úaggregate_order_by_styler~  r  r7   r   r€  rÞ  Ú_cloner$   ÚGroupingr#  Úclause_exprrn  rè  rt  )r  Úaggregateorderbyrê  Únew_fns       r  Úvisit_aggregateorderbyz"SQLCompiler.visit_aggregateorderbyB  sÌ   € Ø�<‰<×0Ñ0Ô4I×4NÑ4NÑNÜ×"Ñ"ð8óð ð
 �L‰L×1Ñ1Ü$×+Ñ+ñ,ð &×-Ñ-×4Ñ4Ó6ˆFÜ!)×!2Ñ!2Ü(Ø×&Ñ&×.Ñ.Ð0@×0IÑ0Ióó"ˆFÔð -�6×,Ñ,¨TÑ<°VÑ<Ð<à)�4×)Ñ)Ð*:ÑE¸fÑEÐEr  c                ó|   —  | j                   |j                  fi |¤Ž›d | j                   |j                  fi |¤Ž›�S )Nú
 ORDER BY )rÌ  rÞ  r%  rÕ  s      r  Úvisit_aggregate_orderby_inlinez*SQLCompiler.visit_aggregate_orderby_inlineW  s<   € àˆD�L‰L˜Ÿ™Ñ/¨BÓ/ØˆD�L‰L˜×3Ñ3Ñ:°rÒ:ð
ð 	
r  )Úuse_function_namec               ó  — t        |j                  dd «      }|€,t        j                  d| j                  j
                  z  «      ‚t        |«      }d|d<   t        |j                  «      }|dd \  }}|�g| j                  j                  t        j                  u rA|› d |j                  | fi |¤Ž› d |j                  | fi |¤Ž› d	 |j                  | fi |¤Ž› d
�S |› d |j                  | fi |¤Ž› d |j                  | fi |¤Ž› d
�S )Nr%  z:%s dialect does not support the aggregate_strings functionTr:  r   r6   rB  rá   rƒ  rC  )Úgetattrr/  r7   r   rÅ  r  rÿ  r°  r{  r~  r€  rè  )	r  Úfnr…  rà  rn  Úliteral_execÚclr3  Ú	delimiters	            r  Úvisit_aggregate_strings_funcz(SQLCompiler.visit_aggregate_strings_func]  sK  € ô ˜2Ÿ:™:Ð';¸TÓBˆàÐ$Ü×"Ñ"ØLØ—,‘,×#Ñ#ñ$óð ô
 ˜B“xˆØ*.ˆÐ&Ñ'ô �"—*‘*ÓˆØ˜Q˜q˜'‰ˆˆiàÐ Ø—‘×5Ñ5Ü$×+Ñ+ñ,ð %Ð% QÐ'> t×'>Ñ'>¸tÑ'JÀrÑ'JÐ&KÈ2Ø/�9×/Ñ/°ÑE¸ÑEÐFð GØ7˜H×7Ñ7¸ÑCÀÑCÐDÀAðGðð %Ð% QÐ'> t×'>Ñ'>¸tÑ'JÀrÑ'JÐ&KÈ2Ø/�9×/Ñ/°ÑE¸ÑEÐFÀaðIðr  c                óª   — | j                   j                  |j                  |j                  «      }d|›d |j                  j                  | fi |¤Ž›d�S )NzEXTRACT(râ   rC  )Úextract_maprÃ  Úfieldr3  rè  )r  Úextractrê  r�  s       r  Úvisit_extractzSQLCompiler.visit_extract‚  sH   € Ø× Ñ ×$Ñ$ W§]¡]°G·M±MÓB‰âØ+ˆG�L‰L×+Ñ+¨DÑ;°FÓ;ð
ð 	
r  c                ór   —  | j                   |j                  fi |¤Ž} | j                  |fi |¤Ž}d|›d|›�S )NrB  z).)Úvisit_functionrˆ  rÐ  )r  rÞ  rà  Úcompiled_fnÚcompiled_cols        r  Úvisit_scalar_function_columnz(SQLCompiler.visit_scalar_function_column‰  s?   € Ø)�d×)Ñ)¨'¯*©*Ñ;¸Ñ;ˆØ(�t×(Ñ(¨Ñ7°BÑ7‰Ú'©Ð6Ð6r  c           	     ó¼  — | j                   r| j                  |«       |�4 ||j                  |j                  |j                  f|j                  «       t	        | d|j                  j                  «       z  d «      }d|d<   |r ||fi |¤Ž}�n8t        j                  |j                  «       j                  d «      }|r|j                  ri|dz  }nc|j                  }| j                  j                  |«      st        |t        j                  «      r| j                  j!                  |«      n|}|dz   }dj#                  |j$                  D �cg c]T  }| j                  j                  |«      st        |t        j                  «      r| j                  j!                  |«      n|‘ŒV c}|gz   «      d | j&                  |fi |¤Žiz  }|j(                  r|dz  }|S c c}w )Nzvisit_%s_funcTÚwithin_aggregate_functionz%(expr)srE  r3  z WITH ORDINALITY)rw  r·  r  r  r‡  Úlowerrõ   rÃ  Ú_deannotater×  Ú	_has_argsr½  Ú_requires_quotes_illegal_charsrÊ  r$   r3   rÅ  r‘   ÚpackagenamesÚfunction_argspecÚ_with_ordinality)r  rv  r€  rê  rE  rè  r  r4  s           r  r“  zSQLCompiler.visit_functionŽ  sÂ  € ð ×ÒØ×Ñ Ô%ØÐ(Ù˜dŸi™i¨¯©°T·Y±Y°LÀ$Ç)Á)ÔLä�t˜_¨t¯y©y¯©Ó/@Ñ@À$ÓGˆð /3ˆÐ*Ñ+áÙ˜Ñ' Ñ'ŠDä—=‘= ×!1Ñ!1Ó!3×!=Ñ!=¸tÓDˆDÙØ—>’>Ø˜JÑ&‘Dà—y‘y�ð —}‘}×CÑCÀDÔIÜ! $¬×(<Ñ(<Ô=ð —M‘M×'Ñ'¨Ô-ð ð	 ð ˜jÑ(�Ø—8‘8ð  $×0Ñ0öð ð	  Ÿ=™=×GÑGÈÔLÜ% d¬H×,@Ñ,@ÔAð Ÿ™×+Ñ+¨CÔ0ð !ñ!òð �&ñ	óð Ð.˜×.Ñ.¨tÑ>°vÑ>Ð?ñ@ˆDð × Ò ØÐ&Ñ&ˆDØˆùòs   ÅAGc                ó8   — | j                  |j                  «      S r  )Úvisit_sequenceÚsequence)r  Ú
next_valuerà  s      r  Úvisit_next_value_funcz!SQLCompiler.visit_next_value_funcÀ  s   € Ø×"Ñ" :×#6Ñ#6Ó7Ð7r  c                óF   — t        d| j                  j                  z  «      ‚)Nz2Dialect '%s' does not support sequence increments.©rä  rÅ  r  ©r  r¢  rà  s      r  r¡  zSQLCompiler.visit_sequenceÃ  s$   € Ü!Ø@Ø�l‰l×Ññ ó
ð 	
r  c                ó<   —  |j                   j                  | fi |¤ŽS r  )r~  rè  )r  rv  rê  s      r  rž  zSQLCompiler.function_argspecÉ  s    € Ø2ˆt×Ñ×2Ñ2°4ÑB¸6ÑBÐBr  c           
     óÜ  ‡ ‡‡— ‰ j                   r‰ j                  |«       ‰ j                   } |j                  |‰ fi ‰¤Ž}|r‰ j                  s|‰ _        |j
                  }|r‰ j                  n‰ j                  d   }|xs | xr |j                  dd«      }	|dk(  r||d<   ‰ j                  j                  |d   |d   |||	dœ«       |j                  r‰ j                  |‰«       ‰ j                  |j                     }
d	|
z   d	z   j                  ˆˆˆ fd
„t        |j                  «      D «       «      }d‰d<   | ‰ j                   |fi t#        dd‰i‰¤Ž¤Žz  }| ‰ j$                  |fi ‰¤Žz  }|j&                  r| ‰ j(                  |fi ‰¤Žz  }‰ j*                  r/|st-        ‰ j                  «      nd }‰ j/                  |d¬«      |z   }‰ j                  j1                  d«       |S )Nr«  r4  Fr   r5  r-  r,  )r-  r,  r)   r1  r4  rH  c              3  óP   •K  — | ]  \  }} |j                   ‰f‰|d œ‰¤Ž–— Œ y­w))r�  r  Nrç  )rE  Úir¦  r�  rê  r  s      €€€r  rG  z4SQLCompiler.visit_compound_select.<locals>.<genexpr>ô  sA   øè ø€ ò ñ �A�qð %�×$Ñ$ØðØ!'¸ñØ=Cõñùs   ƒ#&rÉ  r�  T©r  Úinclude_following_stackr  )rw  r·  r£  Ú_compile_state_factoryr1  r;  r  rÃ  rÄ  r  r  Úcompound_keywordsÚkeywordr‘   r;  ÚselectsÚgroup_by_clauserÿ  Úorder_by_clauseÚ_has_row_limiting_clauseÚ_row_limit_clauserr  rÌ  r	  r™  )r  Úcsr�  r  rê  r  r1  Úcompound_stmtr¾  Úneed_result_mapr°  rè  r  s   ` ` `        r  Úvisit_compound_selectz!SQLCompiler.visit_compound_selectÌ  s  ú€ ð ×ÒØ×Ñ Ô#Ø—z‘z�>ˆà1˜×1Ñ1°"°dÑE¸fÑEˆá˜D×.Ò.Ø!.ˆDÔà%×/Ñ/ˆá-5�×)Ò)¸4¿:¹:Àb¹>ˆØ"ò 
ØÐò AØ—	‘	Ð8¸%Ó@ð 	ð ˜QÒØ "ˆE�*Ñà�
‰
×Ñà#(Ð):Ñ#;Ø % nÑ 5Ø Ø!.Ø0?ñô	
ð ×*Ò*Ø×+Ñ+¨M¸6ÔBà×(Ñ(¨¯©Ñ4ˆà�g‘ Ñ#×)Ñ)õô & b§j¡jÓ1ô	ó
ˆð #(ˆˆÑØÐ$�×$Ñ$ RÑI¬4Ñ+H°vÐ+HÀÑ+HÑIÑIˆØÐ$�×$Ñ$ RÑ2¨6Ñ2Ñ2ˆØ×&Ò&ØÐ*�D×*Ñ*¨2Ñ8°Ñ8Ñ8ˆDà�9Š9Ù3;œC §
¡
œOÀˆMà×'Ñ'Ø"/Ø,0ð (ó ð ñ	ð ð 	�
‰
�‰�rÔØˆr  c                óf   — |j                   � | j                  |fi |¤ŽS  | j                  |fi |¤ŽS r  )Ú_fetch_clauseÚfetch_clauseÚlimit_clause)r  r¶  rê  s      r  rµ  zSQLCompiler._row_limit_clause  s>   € Ø×ÑÐ'Ø$�4×$Ñ$ RÑ2¨6Ñ2Ð2à$�4×$Ñ$ RÑ2¨6Ñ2Ð2r  c                óR   — d|j                   ›d|›|rd|z   nd›�}t        | |d «      S )NÚvisit_r@  r´  )r  r‡  )r  rD  Ú
qualifier1Ú
qualifier2Úattrnames        r  rC  z"SQLCompiler._get_operator_dispatch  s5   � à×ÓÙÙ *ˆC�*Ò°Ð2ð
ˆô
 �t˜X tÓ,Ð,r  c                ó@   — d|j                   ›d|›�}t        | |d «      S )Nr¿  Ú_op_)Ú
visit_namer‡  )r  rD  rÀ  rÂ  s       r  Ú_get_custom_operator_dispatchz)SQLCompiler._get_custom_operator_dispatch  s!   � Ø'0×';Ó';¹ZÐHˆÜ�t˜X tÓ,Ð,r  c                ó¨  — |�||fz  }||d<   ||d<   |j                   t        j                  u r'|j                  dd«      st	        j
                  d«       |j                   ry|j                  rt        j                  d«      ‚| j                  |j                   dd«      }|r |||j                   fi |¤ŽS  | j                  |t        |j                      fi |¤ŽS |j                  rX| j                  |j                  dd	«      }|r |||j                  fi |¤ŽS  | j                  |t        |j                     fi |¤ŽS t        j                  d
«      ‚)Nr€  r�  r˜  FzœColumn-expression-level unary distinct() should not be used outside of an aggregate function. For general 'SELECT DISTINCT' support use select().distinct().zFUnary expression does not support operator and modifier simultaneouslyÚunaryrm  Úmodifierz,Unary expression has no operator or modifier)rm  r&   Údistinct_oprÃ  r+   r¬  rÉ  r7   r   rC  Ú _generate_generic_unary_operatorr°  Ú _generate_generic_unary_modifier)r  rÈ  r€  r�  rà  rE  s         r  Úvisit_unaryzSQLCompiler.visit_unary!  so  € ð Ð(Ø 5 (Ñ*ÐØ&7ˆBÐ"Ñ#Ø'9ˆBÐ#Ñ$à�>‰>œY×2Ñ2Ñ2¸2¿6¹6Ø'¨ô<
ô �I‰Ið+ôð �>Š>Ø�~Š~Ü×&Ñ&ð2óð ð ×.Ñ.Ø—‘ ¨óˆDñ Ù˜E 5§>¡>Ñ8°RÑ8Ð8à<�t×<Ñ<Øœ9 U§^¡^Ñ4ñØ8:ñð ð �^Š^Ø×.Ñ.Ø—‘ ¨óˆDñ Ù˜E 5§>¡>Ñ8°RÑ8Ð8à<�t×<Ñ<Øœ9 U§^¡^Ñ4ñØ8:ñð ô ×"Ñ"Ø>óð r  c           	     ó  — | j                   j                  rº | j                  |j                  fi |¤Ždz    | j                  t	        j
                  |j                  |j                  j                  j                  t        j                  t        j                  fv r|j                  j                  nt        j                  «       «      fi |¤Žz   S  | j                  |j                  fi |¤Ždz    | j                  |j                  fi |¤Žz   S )Nú / )rÅ  Údiv_is_floordivrÌ  r’   r$   ÚCastr¦   r  Ú_type_affinityr*   ÚNumericÚFloat©r  r«   rm  rà  s       r  Úvisit_truediv_binaryz SQLCompiler.visit_truediv_binaryQ  sñ   € Ø�<‰<×'Ò'à�—‘˜VŸ[™[Ñ/¨BÑ/Øñð �$—,‘,Ü—M‘MØŸ™ð  &Ÿ|™|×0Ñ0×?Ñ?Ü (× 0Ñ 0´(·.±.ÐAñ Bð #ŸL™L×-Ò-ô "*×!1Ñ!1Ó!3óñð ññ	ðð( �—‘˜VŸ[™[Ñ/¨BÑ/Øñà�$—,‘,˜vŸ|™|Ñ2¨rÑ2ñ3ðr  c                óì  — | j                   j                  rž|j                  j                  j                  t
        j                  u rn|j                  j                  j                  t
        j                  u r> | j                  |j                  fi |¤Ždz    | j                  |j                  fi |¤Žz   S d | j                  |j                  fi |¤Ždz    | j                  |j                  fi |¤Žz   z  S )NrÏ  z	FLOOR(%s))	rÅ  rÐ  r¦   r  rÒ  r*   ÚIntegerr’   rÌ  rÕ  s       r  Úvisit_floordiv_binaryz!SQLCompiler.visit_floordiv_binaryl  s×   € à�L‰L×(Ò(Ø—‘×!Ñ!×0Ñ0´H×4DÑ4DÑDØ—‘× Ñ ×/Ñ/´8×3CÑ3CÑCð �—‘˜VŸ[™[Ñ/¨BÑ/Øñà�$—,‘,˜vŸ|™|Ñ2¨rÑ2ñ3ðð Ø�—‘˜VŸ[™[Ñ/¨BÑ/Øñà�$—,‘,˜vŸ|™|Ñ2¨rÑ2ñ3ñð r  c                óÀ   — |j                   s| j                  j                  r | j                  |j                  fi |¤ŽS d | j                  |j                  fi |¤Žz  S )Nz%s = 1©Ú_is_implicitly_booleanrÅ  r  rÌ  rÞ  ©r  rÞ  rm  rà  s       r  Úvisit_is_true_unary_operatorz(SQLCompiler.visit_is_true_unary_operator~  sQ   € à×*Ò*Ø�|‰|×3Ò3à�4—<‘< §¡Ñ6°2Ñ6Ð6à˜l˜dŸl™l¨7¯?©?ÑA¸bÑAÑAÐAr  c                óÆ   — |j                   s| j                  j                  r d | j                  |j                  fi |¤Žz  S d | j                  |j                  fi |¤Žz  S )NúNOT %sz%s = 0rÛ  rÝ  s       r  Úvisit_is_false_unary_operatorz)SQLCompiler.visit_is_false_unary_operator‡  sV   € à×*Ò*Ø�|‰|×3Ò3à˜l˜dŸl™l¨7¯?©?ÑA¸bÑAÑAÐAà˜l˜dŸl™l¨7¯?©?ÑA¸bÑAÑAÐAr  c                óJ   — d| j                  |t        j                  ¬«      z  S )Nrà  )Úoverride_operator)Úvisit_binaryr&   Úmatch_oprÕ  s       r  Úvisit_not_match_op_binaryz%SQLCompiler.visit_not_match_op_binary�  s,   € Ø˜$×+Ñ+Ø¤i×&8Ñ&8ð ,ó 
ñ 
ð 	
r  c                ó>   — d | j                   |t        |   fi |¤Žz  S r3  )Ú_generate_generic_binaryr°  rÕ  s       r  Úvisit_not_in_op_binaryz"SQLCompiler.visit_not_in_op_binary•  s3   € ð Ð5˜×5Ñ5Ø”I˜hÑ'ñ
Ø+-ñ
ñ 
ð 	
r  c                ó  — |t         j                  u r*t        |«      dkD  rddj                  d„ |D «       «      z  S y|t         j                  u r*t        |«      dkD  rddj                  d„ |D «       «      z  S y| j                  |«      S )	Nr    z(%s)) OR (1 = 1rá   c              3  ó    K  — | ]  }d –— Œ y­w©r  Nr  ©rE  rÞ  s     r  rG  z6SQLCompiler.visit_empty_set_op_expr.<locals>.<genexpr>¡  ó   è ø€ Ò:¨œfÑ:ùó   ‚zNULL) OR (1 = 1z(%s)) AND (1 != 1c              3  ó    K  — | ]  }d –— Œ y­wrì  r  rí  s     r  rG  z6SQLCompiler.visit_empty_set_op_expr.<locals>.<genexpr>¨  rî  rï  zNULL) AND (1 != 1)r&   Ú	not_in_oprÌ  r‘   Úin_opÚvisit_empty_set_expr)r  r   Ú	expand_oprà  s       r  Úvisit_empty_set_op_exprz#SQLCompiler.visit_empty_set_op_expr�  s‹   € Øœ	×+Ñ+Ñ+Ü�5‹z˜AŠ~Ø(Ø—I‘IÑ:°EÔ:Ó:ñð ð )Øœ)Ÿ/™/Ñ)Ü�5‹z˜AŠ~Ø*Ø—I‘IÑ:°EÔ:Ó:ñð ð +à×,Ñ,¨UÓ3Ð3r  c                óF   — t        d| j                  j                  z  «      ‚)Nz3Dialect '%s' does not support empty set expression.r¦  ©r  Úelement_typesrà  s      r  ró  z SQLCompiler.visit_empty_set_expr¯  s$   € Ü!ØAØ�l‰l×Ññ ó
ð 	
r  c                óü  ‡ ‡‡	‡
— ‰j                   j                  ‰ j                  «      }|s†|j                  rO‰ j                  j                  rdnd‰ j                  ‰j                   j                  ‰j                  «      z   }d|fS ‰ j                  ‰j                   g‰j                  «      }d|fS |j                  sB|j                  r�t        |d   t        j                  «      rst        |d   t        t        f«      sZ|j                  rt        d«      ‚‰ j                  j                  rdnddj!                  ˆˆ fd„t#        |«      D «       «      z   }d|fS |rƒ‰ j$                  }|j'                  |«      }|r|j)                  d«      sJ d«       ‚|j)                  d«      j+                  d	«      }|d
   |d   cŠ	Š
dj!                  ˆ	ˆ
ˆˆ fd„|D «       «      }d|fS dj!                  ˆˆ fd„|D «       «      }d|fS )NúVALUES r´  r   z?bind_expression() on TupleType not supported with literal_bindsrá   c           	   3  óš   •K  — | ]B  \  }}d dj                  ˆfd„t        |‰j                  j                  «      D «       «      z  –— ŒD y­w)r4  rá   c              3  óH   •K  — | ]  \  }}‰j                  ||«      –— Œ y ­wr  r  )rE  rñ  Ú
param_typer  s      €r  rG  z[SQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>.<genexpr>Û  s*   øè ø€ ò á-˜E :ð ×1Ñ1°%¸×Dñùr•  N)r‘   r  r  rï  )rE  r«  Útuple_elementrI  r  s      €€r  rG  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>Ø  sQ   øè ø€ ò ñ %�A�}ð à—I‘Ió ä14Ø)¨9¯>©>×+?Ñ+?ó2ôó õñùs   ƒAAr6   ú)unexpected format for expanding parameterr-  r    r(  c              3  ób   •K  — | ]&  }‰›‰j                  |‰j                  «      ›‰›�–— Œ( y ­wr  ©r   r  )rE  rñ  r0  r1  rI  r  s     €€€€r  rG  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>î  s7   øè ø€ ò 3ð ñ	  Ø×1Ñ1°%¸¿¹ÔHÙ ô	ñ3ùs   ƒ,/c              3  óV   •K  — | ]   }‰j                  |‰j                  «      –— Œ" y ­wr  r  )rE  rñ  rI  r  s     €€r  rG  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>ø  s*   øè ø€ ò 3àð ×-Ñ-¨e°Y·^±^×Dñ3ùrg  r  )r  r  rÅ  rî  Útuple_in_valuesrõ  rï  rô  Ú_isnullrÊ  Úcollections_abcr   r
  ÚbytesÚ_has_bind_expressionrä  r‘   r;  r=  Úsearchr    r2  )r  rI  rÞ  Úbind_expression_templateÚtyp_dialect_implÚreplacement_expressionÚpost_compile_patternrÅ  r4  r0  r1  s   ``       @@r  Ú2_literal_execute_expanding_parameter_literal_bindsz>SQLCompiler._literal_execute_expanding_parameter_literal_bindsµ  s  û€ ð %Ÿ>™>×AÑAÀ$Ç,Á,ÓOÐáð
  ×.Ò.à!%§¡×!=Ò!=‘IÀ2Ø×0Ñ0Ø—N‘N×(Ñ(¨)×*=Ñ*=óñ*Ð&ðz Ð)Ð)Ð)ðm *.×)EÑ)EØ—^‘^Ð$ i×&9Ñ&9ó*Ð&ðl Ð)Ð)Ð)ðe ×,Ò,Ø×$Ò$Ü˜6 !™9¤o×&>Ñ&>Ô?Ü˜v a™y¬3´¨,Ô7à×4Ò4Ü)ð$óð ð "Ÿ\™\×9Ò9‘	¸rØ—	‘	ô ô )2°&Ó(9ôó ñ&Ð"ðN Ð)Ð)Ð)ñ1 (Ø'+×'AÑ'AÐ$Ø(×/Ñ/Ð0HÓI�Ù˜QŸW™WØôð ?à>ó?ð ð —g‘g˜a“j×&Ñ& tÓ,�Ø$'¨¡F¨C°©FÐ!�˜Ø)-¯©ö 3ð "(ô3ó *Ð&ð Ð)Ð)Ð)ð *.¯©ô 3à!'ô3ó *Ð&ð
 Ð)Ð)Ð)r  c               ó”  ‡ ‡‡‡‡‡‡— ‰j                   r‰ j                  ‰|«      S ‰ j                  }‰j                  j	                  |«      Š‰ j
                  r‰ j                  Šn‰ j                  Š‰ j                  j                  r‰j                  r	ˆˆˆ ˆfd„Šnˆfd„Šˆfd„}|smg Š‰j                  r4‰ j                  ‰j                  j                  ‰j                  «      }‰|fS ‰ j                  ‰j                  g‰j                  «      }‰|fS ‰j                  sB‰j                  rÄt        |d   t         j"                  «      r§t        |d   t$        t&        f«      sŽ‰j(                  rJ ‚t+        |d«      D ��	�
�cg c]+  \  }}	t+        |	d«      D ]  \  }
} ||›d|›d|
›�«      |f‘Œ Œ- c}}
}	}Š|j,                  rdndd	j/                  ˆˆfd
„t+        |«      D «       «      z   }‰|fS t+        |d«      D ��cg c]  \  }} ||›d|›�«      |f‘Œ c}}Šd	j/                  ˆfd„‰D «       «      }‰|fS c c}}
}	}w c c}}w )a¡  Render the per-element bound parameters of an expanding
        parameter.

        ``taken_names`` is a set of names the elements may not use; each
        name generated is checked against it and added to it.  The element
        names are normally ``<name>_<n>``, or ``<name>_<n>_<m>`` for tuples,
        which may be the name of another parameter in the same statement,
        e.g. a parameter ``x_1`` alongside the expanding parameter ``x``, or
        the element of another expanding parameter.  A colliding name is
        uniquified with a counter, rather than the element value replacing
        the value of the other parameter.  See :ticket:`13695`.

        c                óH   •— ‰j                  ‰j                  ‰‰d| iz  «      S ©Nr  )Úrender_bind_castr  )r  Úbind_templaterI  r  r
  s    €€€€r  Ú_render_bindtemplatezNSQLCompiler._literal_execute_expanding_parameter.<locals>._render_bindtemplate!  s,   ø€ Ø×,Ñ,Ø—N‘NØ$Ø! V¨T NÑ2óð r  c                ó   •— ‰d| iz  S r  r  )r  r  s    €r  r  zNSQLCompiler._literal_execute_expanding_parameter.<locals>._render_bindtemplate*  s   ø€ Ø$¨° ~Ñ5Ð5r  c                ód   •— | ‰v r| }d}| ‰v r|dz  }d||fz  } | ‰v rŒ‰j                  | «       | S )Nr   r    ú%s__%d)Úadd)rF  r!   Úcounterr!  s      €r  Ú_unique_namezFSQLCompiler._literal_execute_expanding_parameter.<locals>._unique_name-  sS   ø€ Ø�kÑ!Ø�Ø�Ø˜[Ñ(Ø˜q‘L�Gð
 # d¨G _Ñ4�Cð ˜[Ò(ð �O‰O˜CÔ ØˆJr  r   r    r@  rú  r´  rá   c              3  óz   •‡‡K  — | ]0  \  ŠŠd dj                  ˆˆˆˆfd„t        ‰«      D «       «      z  –— Œ2 y­w)r4  rá   c              3  ó^   •K  — | ]$  \  }} ‰‰‰t        ‰«      z  |z      d    «      –— Œ& y­w)r   N)rÌ  )rE  Újrñ  r  r«  rJ  rþ  s      €€€€r  rG  zMSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>.<genexpr>W  s@   øè ø€ ò ñ %˜A˜uñ -Ø% a¬#¨mÓ*<Ñ&<¸qÑ&@ÑAÀ!ÑD÷ñùs   ƒ*-N)r‘   r;  )rE  r«  rþ  r  rJ  s    @@€€r  rG  zCSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>T  sD   úè ø€ ò ñ %�A�}ð à—I‘Iö ô )2°-Ó(@ô	ó õñùs   …6;c              3  ó4   •K  — | ]  \  }} ‰|«      –— Œ y ­wr  r  )rE  rF  rñ  r  s      €r  rG  zCSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>e  s    øè ø€ ò /Ù.8¨c°5Ñ$ S×)ñ/ùrc  )r:  r  rÅ  r  r  ra  r[  rZ  Ú_bind_typing_render_castsr  rî  rõ  rï  rô  r  rÊ  r  r   r
  r  Ú	_is_arrayr;  r  r‘   )r  r  rI  rÞ  r!  rÅ  r  r  r«  rþ  r  rñ  r  r  rJ  r
  s   ` ` `       @@@@r  r9  z0SQLCompiler._literal_execute_expanding_parameterÿ  sb  þ€ ð  ×$Ò$Ø×JÑJØ˜6óð ð —,‘,ˆØ$Ÿ>™>×AÑAÀ'ÓJÐà×ÒØ ×9Ñ9‰Mà ×-Ñ-ˆMð �L‰L×2Ò2Ø ×1Ò1÷ð ô6ô	ñ ØˆIØ×.Ò.Ø)-×)EÑ)EØ—N‘N×(Ñ(¨)×*=Ñ*=ó*Ð&ðV Ð0Ð0Ð0ðO *.×)EÑ)EØ—^‘^Ð$ i×&9Ñ&9ó*Ð&ðN Ð0Ð0Ð0ðG ×,Ò,Ø×$Ò$Ü˜6 !™9¤o×&>Ñ&>Ô?Ü˜v a™y¬3´¨,Ô7à'×1Ò1Ð1Ð1ô )2°&¸!Ó(<÷ñ á$�A�}Ü )¨-¸Ó ;òñ �A�uñ ªD²!±QÐ7Ó8¸%Ò@ðØ@õˆIð %×4Ò4‘	¸"Ø—	‘	ô ô )2°&Ó(9ôó ñ&Ð"ð. Ð0Ð0Ð0ô !*¨&°!Ó 4÷á�A�uñ ª©qÐ1Ó2°EÒ:óˆIð &*§Y¡Yó /Ø<Eô/ó &Ð"ð Ð0Ð0Ð0ùõ;ùó*s   Æ0H<
ÈIc           	     ó¬  — |�rt        j                  |j                  «      râ|�w|d   }|j                  j	                  t        j                  t        |j                  j                  |gz   «      t        |j                  j                  |gz   «      «      «       ni|j                  j	                  t        j                  t        |j                  j                  «      t        |j                  j                  «      «      «       | j                  rMt        |j                  t        j                  «      r)t        |j                  t        j                  «      rd|d<   |xs |j                  }| j                  |dd «      }	|	r
 |	||fi |¤ŽS 	 t         |   }
 | j"                  ||
f||dœ|¤ŽS # t$        $ r}t'        j(                  | |«      |‚d }~ww xY w)NÚenclosing_lateralTr:  r«   )Úfrom_linterÚlateral_from_linter)r&   Úis_comparisonrm  r—  r–  rÜ  Úproductr.   r’   r/   r¦   rY  rÊ  r$   rN   rC  r°  rè  r›  r7   rÜ  )r  r«   rã  Úeager_groupingr"  r#  rà  r!  rD  rE  rF  rß  s               r  rä  zSQLCompiler.visit_binaryk  s³  € ò œ9×2Ñ2°6·?±?ÔCØ"Ð.Ø$&Ð':Ñ$;Ð!Ø#×)Ñ)×0Ñ0Ü×%Ñ%Ü!Ø"ŸK™K×5Ñ5Ð9JÐ8KÑKóô "Ø"ŸL™L×6Ñ6Ð:KÐ9LÑLóó	õ	ð ×!Ñ!×(Ñ(Ü×%Ñ%Ü! &§+¡+×";Ñ";Ó<Ü! &§,¡,×"<Ñ"<Ó=óôð × Ò Ü˜6Ÿ;™;¬×(>Ñ(>Ô?Ü˜6Ÿ<™<¬×)?Ñ)?Ô@à$(ˆBÐ Ñ!à%Ò8¨¯©ˆ	Ø×*Ñ*¨9°hÀÓEˆÙÙ˜ 	Ñ0¨RÑ0Ð0ðÜ$ YÑ/�ð 5�t×4Ñ4ØØðð !,Ø(;ñ	ð
 ñð øô ò PÜ×5Ñ5°d¸IÓFÈCÐOûðPús   Æ	F. Æ.	GÆ7GÇGc                ó<   —  | j                   |j                  fi |¤ŽS r  )rÌ  Úsql_functionrÝ  s       r  Ú&visit_function_as_comparison_op_binaryz2SQLCompiler.visit_function_as_comparison_op_binary£  s   € Øˆt�|‰|˜G×0Ñ0Ñ7°BÑ7Ð7r  c                ó&  — | j                   j                  r> | j                  |j                  fi |¤Ždz    | j                  |j                  fi |¤Žz   S  | j                  |j                  fi |¤Ždz    | j                  |j                  fi |¤Žz   S )Nz %% rß   )r½  rÍ  rÌ  r’   r¦   rÕ  s       r  Úvisit_mod_binaryzSQLCompiler.visit_mod_binary¦  s‘   € Ø�=‰=×)Ò)à�—‘˜VŸ[™[Ñ/¨BÑ/Øñà�$—,‘,˜vŸ|™|Ñ2¨rÑ2ñ3ðð �—‘˜VŸ[™[Ñ/¨BÑ/Øñà�$—,‘,˜vŸ|™|Ñ2¨rÑ2ñ3ðr  c                óÚ   — |j                   r| j                  |d«      }|r
 |||fi |¤ŽS |j                  |d<    | j                  |d| j	                  |j
                  «      z   dz   fi |¤ŽS )Nr«   r&  rH  )rÅ  rÆ  r&  rè  rÄ  rF  ©r  rÞ  rm  rà  rE  s        r  Úvisit_custom_op_binaryz"SQLCompiler.visit_custom_op_binary´  sƒ   € Ø×ÒØ×5Ñ5°hÀÓIˆDÙÙ˜G XÑ4°Ñ4Ð4à'×6Ñ6ˆÐÑØ,ˆt×,Ñ,ØØ�$×,Ñ,¨X×->Ñ->Ó?Ñ?À#ÑEñ
ð ñ
ð 	
r  c                ó¶   — |j                   r| j                  |d«      }|r
 |||fi |¤ŽS  | j                  || j                  |j                  «      dz   fi |¤ŽS ©NrÈ  rH  )rÅ  rÆ  rË  rÄ  rF  r-  s        r  Úvisit_custom_op_unary_operatorz*SQLCompiler.visit_custom_op_unary_operatorÁ  sj   € Ø×ÒØ×5Ñ5°hÀÓHˆDÙÙ˜G XÑ4°Ñ4Ð4à4ˆt×4Ñ4Ø�T×/Ñ/°×0AÑ0AÓBÀSÑHñ
ØLNñ
ð 	
r  c                ó¶   — |j                   r| j                  |d«      }|r
 |||fi |¤ŽS  | j                  |d| j                  |j                  «      z   fi |¤ŽS r0  )rÅ  rÆ  rÌ  rÄ  rF  r-  s        r  Úvisit_custom_op_unary_modifierz*SQLCompiler.visit_custom_op_unary_modifierË  sj   € Ø×ÒØ×5Ñ5°hÀÓHˆDÙÙ˜G XÑ4°Ñ4Ð4à4ˆt×4Ñ4Ø�S˜4×5Ñ5°h×6GÑ6GÓHÑHñ
ØLNñ
ð 	
r  c                óè   — |j                  dd«      }d|d<   |j                  |d<    |j                  j                  | fd|i|¤Ž|z    |j                  j                  | fd|i|¤Žz   }|r|rd|z  }|S )NrB  FTÚ
_binary_opr&  r4  )rÃ  rm  r’   rè  r¦   )r  r«   rF  r&  rà  rB  rè  s          r  rè  z$SQLCompiler._generate_generic_binaryÕ  s¨   € ð #%§&¡&Ð)BÀEÓ"JÐà(,ˆÐ$Ñ%Ø!Ÿ?™?ˆˆ<Ñà*ˆF�K‰K×*Ñ*ØñØ%3ðØ79ñð ñð .ˆf�l‰l×-Ñ-ØñØ%3ðØ79ññ	ð 	ñ #¡~Ø˜D‘=ˆDØˆr  c                óB   — | |j                   j                  | fi |¤Žz   S r  rŽ  ©r  rÈ  rF  rà  s       r  rË  z,SQLCompiler._generate_generic_unary_operatorî  s$   € ØÐ:˜%Ÿ-™-×:Ñ:¸4ÑFÀ2ÑFÑFÐFr  c                óB   —  |j                   j                  | fi |¤Ž|z   S r  rŽ  r7  s       r  rÌ  z,SQLCompiler._generate_generic_unary_modifierñ  s#   € Ø/ˆu�}‰}×/Ñ/°Ñ;¸Ñ;¸hÑFÐFr  c                óL   — t        j                  dt        j                  ¬«      S )Nz'%')r   )r$   Úliteral_columnr*   Ú
STRINGTYPErK  s    r  Ú_like_percent_literalz!SQLCompiler._like_percent_literalô  s   € ä×&Ñ& u´H×4GÑ4GÔHÐHr  c                óD   — d |j                   j                  | fi |¤Ž› d�S )Nzlower(rC  rŽ  rÕ  s      r  Ú$visit_ilike_case_insensitive_operandz0SQLCompiler.visit_ilike_case_insensitive_operandø  s)   € ØÐ:˜Ÿ™×:Ñ:¸4ÑFÀ2ÑFÐGÀqÐIÐIr  c                óÀ   — |j                  «       }| j                  }|j                  |j                  «      j                  |«      |_         | j                  ||fi |¤ŽS r  ©r|  r<  Úconcatr¦   Úvisit_like_op_binary©r  r«   rm  rà  Úpercents        r  Úvisit_contains_op_binaryz$SQLCompiler.visit_contains_op_binaryû  sQ   € Ø—‘“ˆØ×,Ñ,ˆØ—~‘~ f§l¡lÓ3×:Ñ:¸7ÓCˆŒØ(ˆt×(Ñ(¨°Ñ@¸RÑ@Ð@r  c                óÀ   — |j                  «       }| j                  }|j                  |j                  «      j                  |«      |_         | j                  ||fi |¤ŽS r  ©r|  r<  rA  r¦   Úvisit_not_like_op_binaryrC  s        r  Úvisit_not_contains_op_binaryz(SQLCompiler.visit_not_contains_op_binary  sQ   € Ø—‘“ˆØ×,Ñ,ˆØ—~‘~ f§l¡lÓ3×:Ñ:¸7ÓCˆŒØ,ˆt×,Ñ,¨V°XÑDÀÑDÐDr  c                ó  — |j                  «       }| j                  }t        |j                  «      |_        |j	                  t        |j
                  «      «      j	                  |«      |_         | j                  ||fi |¤ŽS r  ©r|  r<  r2  r’   rA  r¦   Úvisit_ilike_op_binaryrC  s        r  Úvisit_icontains_op_binaryz%SQLCompiler.visit_icontains_op_binary  sl   € Ø—‘“ˆØ×,Ñ,ˆÜ,¨V¯[©[Ó9ˆŒØ—~‘~Ü" 6§<¡<Ó0ó
ç
‰&�‹/ð 	Œð *ˆt×)Ñ)¨&°(ÑA¸bÑAÐAr  c                ó  — |j                  «       }| j                  }t        |j                  «      |_        |j	                  t        |j
                  «      «      j	                  |«      |_         | j                  ||fi |¤ŽS r  ©r|  r<  r2  r’   rA  r¦   Úvisit_not_ilike_op_binaryrC  s        r  Úvisit_not_icontains_op_binaryz)SQLCompiler.visit_not_icontains_op_binary  sl   € Ø—‘“ˆØ×,Ñ,ˆÜ,¨V¯[©[Ó9ˆŒØ—~‘~Ü" 6§<¡<Ó0ó
ç
‰&�‹/ð 	Œð .ˆt×-Ñ-¨f°hÑEÀ"ÑEÐEr  c                ó¢   — |j                  «       }| j                  }|j                  |j                  «      |_         | j                  ||fi |¤ŽS r  )r|  r<  Ú_rconcatr¦   rB  rC  s        r  Úvisit_startswith_op_binaryz&SQLCompiler.visit_startswith_op_binary  sH   € Ø—‘“ˆØ×,Ñ,ˆØ×'Ñ'¨¯©Ó5ˆŒØ(ˆt×(Ñ(¨°Ñ@¸RÑ@Ð@r  c                ó¢   — |j                  «       }| j                  }|j                  |j                  «      |_         | j                  ||fi |¤ŽS r  )r|  r<  rS  r¦   rH  rC  s        r  Úvisit_not_startswith_op_binaryz*SQLCompiler.visit_not_startswith_op_binary  sH   € Ø—‘“ˆØ×,Ñ,ˆØ×'Ñ'¨¯©Ó5ˆŒØ,ˆt×,Ñ,¨V°XÑDÀÑDÐDr  c                óè   — |j                  «       }| j                  }t        |j                  «      |_        |j	                  t        |j
                  «      «      |_         | j                  ||fi |¤ŽS r  )r|  r<  r2  r’   rS  r¦   rL  rC  s        r  Úvisit_istartswith_op_binaryz'SQLCompiler.visit_istartswith_op_binary%  s^   € Ø—‘“ˆØ×,Ñ,ˆÜ,¨V¯[©[Ó9ˆŒØ×'Ñ'Ô(>¸v¿|¹|Ó(LÓMˆŒØ)ˆt×)Ñ)¨&°(ÑA¸bÑAÐAr  c                óè   — |j                  «       }| j                  }t        |j                  «      |_        |j	                  t        |j
                  «      «      |_         | j                  ||fi |¤ŽS r  )r|  r<  r2  r’   rS  r¦   rP  rC  s        r  Úvisit_not_istartswith_op_binaryz+SQLCompiler.visit_not_istartswith_op_binary,  s^   € Ø—‘“ˆØ×,Ñ,ˆÜ,¨V¯[©[Ó9ˆŒØ×'Ñ'Ô(>¸v¿|¹|Ó(LÓMˆŒØ-ˆt×-Ñ-¨f°hÑEÀ"ÑEÐEr  c                ó¢   — |j                  «       }| j                  }|j                  |j                  «      |_         | j                  ||fi |¤ŽS r  r@  rC  s        r  Úvisit_endswith_op_binaryz$SQLCompiler.visit_endswith_op_binary3  sF   € Ø—‘“ˆØ×,Ñ,ˆØ—~‘~ f§l¡lÓ3ˆŒØ(ˆt×(Ñ(¨°Ñ@¸RÑ@Ð@r  c                ó¢   — |j                  «       }| j                  }|j                  |j                  «      |_         | j                  ||fi |¤ŽS r  rG  rC  s        r  Úvisit_not_endswith_op_binaryz(SQLCompiler.visit_not_endswith_op_binary9  sF   € Ø—‘“ˆØ×,Ñ,ˆØ—~‘~ f§l¡lÓ3ˆŒØ,ˆt×,Ñ,¨V°XÑDÀÑDÐDr  c                óè   — |j                  «       }| j                  }t        |j                  «      |_        |j	                  t        |j
                  «      «      |_         | j                  ||fi |¤ŽS r  rK  rC  s        r  Úvisit_iendswith_op_binaryz%SQLCompiler.visit_iendswith_op_binary?  s\   € Ø—‘“ˆØ×,Ñ,ˆÜ,¨V¯[©[Ó9ˆŒØ—~‘~Ô&<¸V¿\¹\Ó&JÓKˆŒØ)ˆt×)Ñ)¨&°(ÑA¸bÑAÐAr  c                óè   — |j                  «       }| j                  }t        |j                  «      |_        |j	                  t        |j
                  «      «      |_         | j                  ||fi |¤ŽS r  rO  rC  s        r  Úvisit_not_iendswith_op_binaryz)SQLCompiler.visit_not_iendswith_op_binaryF  s\   € Ø—‘“ˆØ×,Ñ,ˆÜ,¨V¯[©[Ó9ˆŒØ—~‘~Ô&<¸V¿\¹\Ó&JÓKˆŒØ-ˆt×-Ñ-¨f°hÑEÀ"ÑEÐEr  c                ó  — |j                   j                  dd «      } |j                  j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›�|�%d| j                  |t        j                  «      z   z   S dz   S )Nr}  z LIKE ú ESCAPE r´  ©Ú	modifiersrÃ  r’   rè  r¦   r   r*   r;  ©r  r«   rm  rà  r}  s        r  rB  z SQLCompiler.visit_like_op_binaryM  s‘   € Ø×!Ñ!×%Ñ% h°Ó5ˆð +ˆF�K‰K×*Ñ*¨4Ñ6°2Ó6Ø+ˆF�L‰L×+Ñ+¨DÑ7°BÒ7ð
ð
 Ð!ð ˜×2Ñ2°6¼8×;NÑ;NÓOÑOñ	
ð 	
ð ñ
ð 	
r  c                ó  — |j                   j                  dd «      } |j                  j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›�|�%d| j                  |t        j                  «      z   z   S dz   S )Nr}  z
 NOT LIKE rd  r´  re  rg  s        r  rH  z$SQLCompiler.visit_not_like_op_binaryY  s�   € Ø×!Ñ!×%Ñ% h°Ó5ˆà*ˆF�K‰K×*Ñ*¨4Ñ6°2Ó6Ø+ˆF�L‰L×+Ñ+¨DÑ7°BÒ7ð
ð
 Ð!ð ˜×2Ñ2°6¼8×;NÑ;NÓOÑOñ	
ð 	
ð ñ
ð 	
r  c                óÖ   — |t         j                  u rD|j                  «       }t        |j                  «      |_        t        |j
                  «      |_         | j                  ||fi |¤ŽS r  )r&   Úilike_opr|  r2  r’   r¦   rB  rÕ  s       r  rL  z!SQLCompiler.visit_ilike_op_binaryd  sW   € Ø”y×)Ñ)Ñ)Ø—]‘]“_ˆFÜ0°·±Ó=ˆFŒKÜ1°&·,±,Ó?ˆFŒLð )ˆt×(Ñ(¨°Ñ@¸RÑ@Ð@r  c                óÖ   — |t         j                  u rD|j                  «       }t        |j                  «      |_        t        |j
                  «      |_         | j                  ||fi |¤ŽS r  )r&   Únot_ilike_opr|  r2  r’   r¦   rH  rÕ  s       r  rP  z%SQLCompiler.visit_not_ilike_op_binarym  sW   € Ø”y×-Ñ-Ñ-Ø—]‘]“_ˆFÜ0°·±Ó=ˆFŒKÜ1°&·,±,Ó?ˆFŒLð -ˆt×,Ñ,¨V°XÑDÀÑDÐDr  c                ój   — |j                   j                  dd«      } | j                  ||rdndfi |¤ŽS )NrÈ   Fz BETWEEN SYMMETRIC z	 BETWEEN ©rf  rÃ  rè  ©r  r«   rm  rà  rÈ   s        r  Úvisit_between_op_binaryz#SQLCompiler.visit_between_op_binaryv  sA   € Ø×$Ñ$×(Ñ(¨°eÓ<ˆ	Ø,ˆt×,Ñ,Ø©YÑ)¸Kñ
ØKMñ
ð 	
r  c                ój   — |j                   j                  dd«      } | j                  ||rdndfi |¤ŽS )NrÈ   Fz NOT BETWEEN SYMMETRIC z NOT BETWEEN rn  ro  s        r  Úvisit_not_between_op_binaryz'SQLCompiler.visit_not_between_op_binary|  sD   € Ø×$Ñ$×(Ñ(¨°eÓ<ˆ	Ø,ˆt×,Ñ,ØÙ)2Ñ%¸ñ
ð ñ
ð 	
r  c                óZ   — t        j                  d| j                  j                  z  «      ‚©Nz/%s dialect does not support regular expressions©r7   r   rÅ  r  rÕ  s       r  Úvisit_regexp_match_op_binaryz(SQLCompiler.visit_regexp_match_op_binary„  ó,   € ô ×ÑØ=Ø�l‰l×Ññ ó
ð 	
r  c                óZ   — t        j                  d| j                  j                  z  «      ‚rt  ru  rÕ  s       r  Ú visit_not_regexp_match_op_binaryz,SQLCompiler.visit_not_regexp_match_op_binaryŒ  rw  r  c                óZ   — t        j                  d| j                  j                  z  «      ‚)Nz;%s dialect does not support regular expression replacementsru  rÕ  s       r  Úvisit_regexp_replace_op_binaryz*SQLCompiler.visit_regexp_replace_op_binary”  s,   € ô ×ÑØIØ�l‰l×Ññ ó
ð 	
r  )Úbindmarkersc               ó–   — |€t        j                  d«      ‚|||j                  j                  <   d|j                  j                  › d�S )NzMDML target objects may only be used with compiled INSERT or UPDATE statementsz__BINDMARKER_~~r-  )r7   r   r¬   rF  )r  rÞ  r|  rà  s       r  Úvisit_dmltargetcopyzSQLCompiler.visit_dmltargetcopyœ  sP   € ØÐÜ×"Ñ"ð7óð ð
 +2ˆ�G—N‘N×&Ñ&Ñ'Ø  §¡×!3Ñ!3Ð 4°BÐ7Ð7r  c           	     óò  — |rE|j                   €9|j                  €-| j                  �!| j                  j                  d¬«      | _        |sî|j                  j                  | j                  «      }	|	j                  r½|	j                  |«      }
 | j                  |
fd||xr |j                   ||dœ|¤Ž}|j                  rvt        j                  d|«      }|sJ d«       ‚d|j                  d«      ›d|j                  d	«      ›d
|j                  d«      ›d�}|r | j                  |fd|dœ|¤Ž}d|› d�S |S |s3|xs |j                  xs |xr | j                   }|xs |j                  }nd}|r) | j                  |fddi|¤Ž}|j                  rd|› d�}|S | j#                  |«      }|| j$                  v �r5| j$                  |   }||u�r!|j&                  s|j&                  rb|j(                  j+                  |j(                  «      s=|j,                  j+                  |j,                  «      st/        j0                  d|z  «      ‚|j                  |j                  k7  rt/        j0                  d|›d�«      ‚|j2                  s|j2                  r]|j2                  r!|j2                  rt/        j0                  d«      ‚t/        j0                  d|j4                  › d|j4                  › d�«      ‚|x| j$                  |j4                  <   | j$                  |<   | j6                  }|rH|\  }}|j,                  D ]4  }|j4                  |v sŒ||j4                     }||   j9                  |«       Œ6 |j:                  rd| _        |r8|rd| _        |r| xj@                  |hz  c_         n| xjB                  |hz  c_!         | jD                  |f||j                  |j                  dœ|¤Ž}|j                  rd|› d�}|S )NT)r^  )Úskip_bind_expressionr™  Úliteral_bindsr:  Úrender_postcompilez&^(.*)\(__\[POSTCOMPILE_(\S+?)\]\)(.*)$rÿ  z(__[POSTCOMPILE_r6   r-  r    z~~REPL~~r(  z~~]))r™  r	  rB  rC  Fr™  zIBind parameter '%s' conflicts with unique bind parameter of the same namez"Can't reuse bound parameter name 'zê' in both 'expanding' (e.g. within an IN expression) and non-expanding contexts.  If this parameter is to receive a list/array value, set 'expanding=True' on it for expressions that aren't IN, otherwise use a different parameter name.a)  Encountered unsupported case when compiling an INSERT or UPDATE statement.  If this is a multi-table UPDATE statement, please provide string-named arguments to the values() method with distinct names; support for multi-table UPDATE statements that target multiple tables for UPDATE is very limitedzbindparam() name 'zÌ' is reserved for automatic usage in the VALUES or SET clause of this insert/update statement.   Please use a name other than column name when using bindparam() with insert() or update() (for example, 'b_z').)Úpost_compileÚ	expandingÚbindparam_type)#rñ  r  rh  rÑ  r  Údialect_implrÅ  r  Úbind_expressionrÌ  r„  r|  rU  r    r8  r:  rY  Ú_truncate_bindparamrU  r´   r  Úintersectionr…  r7   r   Ú_is_crudrF  rn  rÄ  Ú
isoutparamÚhas_out_parametersrb  rj  rk  rï  )r  rð  r™  r�  r€  r:  r‚  Úis_upsert_setrê  Úimplr‡  ÚwrappedrÅ  r{  rƒ  r  Úexistingr	  rž  r�  rˆ  rŠ  s                         r  Úvisit_bindparamzSQLCompiler.visit_bindparam¦  sH  € ñ Ø—‘Ð'Ø×"Ñ"Ð*Ø×&Ñ&Ð2à%)×%;Ñ%;×%DÑ%DØ,0ð &Eó &ˆDÔ"ñ $Ø—>‘>×.Ñ.¨t¯|©|Ó<ˆDØ×(Ò(Ø"&×"6Ñ"6°yÓ"A�Ø&˜$Ÿ,™,Ø#ðà)-Ø*?Ø"/Ò"K¸	×8KÑ8KÐ4KØ$3Ø'9ñð ñ�ð ×&Ò&ô Ÿ™ØAÀ7ó�Añ ÐIÐIÓI™1àŸ™ �
ØŸ™ �
ØŸ™ �
ð�Gñ %Ø;˜d×;Ñ;Ø%ðà26Ø5<ñð %ñ	˜ð "# 3 % q˜zÐ)à�áàò DØ×,Ñ,òDà)ÒB¨d×.BÑ.Bð ð
 +ÒA¨i×.AÑ.A‰Là ˆLáØ/�$×/Ñ/ØñØ15ðØ9?ñˆCð ×"Ò"Ø˜#˜˜a�j�ØˆJà×'Ñ'¨	Ó2ˆà�4—:‘:ÒØ—z‘z $Ñ'ˆHØ˜yÒ(à—_’_¨	×(8Ò(8Ø$×.Ñ.×;Ñ;Ø!×+Ñ+ôð %×0Ñ0×=Ñ=Ø!×-Ñ-ôô ×*Ñ*ðAØCGñHóð ð ×'Ñ'¨9×+>Ñ+>Ò>Ü×*Ò*ò :>ð@óð ð ×&Ò&¨)×*<Ò*<Ø×(Ò(¨Y×-?Ò-?ô "×.Ñ.ð&ó
ð 
ô "×.Ñ.Ø0°·±°ð @"ð #,§-¡- °ð5ó	ð 	ð 8AÐ@ˆ�
‰
�9—=‘=Ñ! D§J¡J¨tÑ$4ð ×/Ñ/ˆ
áØ#‰JˆD�$Ø×+Ñ+ò /�Ø—6‘6˜T’>Ø˜bŸf™f™�BØ˜‘H—O‘O IÕ.ð/ð
 ×ÒØ&*ˆDÔ#áÙ!Ø+/�Ô(áØ×+Ò+°	¨{Ñ:Ö+à×(Ò(¨Y¨KÑ7Õ(à#ˆd×#Ñ#Øð
à%Ø×)Ñ)Ø$Ÿ>™>ñ	
ð
 ñ
ˆð ×ÒØ�c�U˜!�*ˆCàˆ
r  c                ó   — t        «       ‚r  rã  )r  r   Ú
dbapi_typer‡  s       r  r  zSQLCompiler.render_bind_castV  s   € Ü!Ó#Ð#r  c                óT  — |t         ur|}nÚ| j                  r2|j                  | j                  v r| j                  |j                     }nœ|j                  €„|j
                  €x|j                  dd «      }|rC|t        j                  t        j                  fvr!t        j                  d|j                  f«        | j                  t        j                  fi |¤ŽS |j                  }|j                   r| j"                  } ||||¬«      \  }}	|	S | j%                  ||j&                  «      S )Nr5  z‰Bound parameter '%s' rendering literal NULL in a SQL expression; comparisons to NULL should not use operators outside of 'is' or 'is not')r	  )r2   rw  rF  rx  rñ  r  rÃ  r&   Úis_Úis_notr+   Úwarn_limitedrÌ  r*   ró  r  r„  r  r   r  )
r  rð  r   r	  rà  rñ  ÚopÚleeprJ  rL  s
             r  r8  z$SQLCompiler.render_literal_bindparamY  s  € ð  ¤vÑ-Ø(‰EØ×!Ò! i§m¡m°t×7MÑ7MÑ&Mð ×*Ñ*¨9¯=©=Ñ9‰Eà�‰Ð&¨9×+=Ñ+=Ð+EØ—V‘V˜L¨$Ó/�Ù˜"¤Y§]¡]´I×4DÑ4DÐ$EÑEÜ×%Ñ%ð@ð #Ÿ™Ð(ô	ð $�t—|‘|¤H×$5Ñ$5Ñ<¸Ñ<Ð<Ø×-Ñ-ˆEà×ÒØ×JÑJˆDÙ*.ØØØ)Aô+Ñ'ˆIÐ'ð
 $Ð#à×,Ñ,¨U°I·N±NÓCÐCr  c                ó¢  — |€9|j                   s-| j                  t        j                  j	                  «       «      S |j                  | j                  «      }|r		  ||«      S t        j                  dt        j                  |«      › d|› �«      ‚# t        $ r5}t        j                  dt        j                  |«      › d|› d�«      |‚d}~ww xY w)a  Render the value of a bind parameter as a quoted literal.

        This is used for statement sections that do not accept bind parameters
        on the target driver/database.

        This should be implemented by subclasses using the quoting services
        of the DBAPI.

        Nz Could not render literal value "z" with datatype z); see parent stack trace for more detail.z:No literal value renderer is available for literal value ")Úshould_evaluate_nonerÌ  r$   rT   Ú	_instanceÚ_cached_literal_processorrÅ  r  r7   r   Úsql_utilÚ_repr_single_value)r  rñ  r   Ú	processorÚes        r  r   z SQLCompiler.render_literal_value~  sä   € ð ˆ= ×!;Ò!;ð —<‘<¤§¡× 7Ñ 7Ó 9Ó:Ð:à×3Ñ3°D·L±LÓAˆ	Ùð	Ù  Ó'Ð'ô ×"Ñ"ðÜ×/Ñ/°Ó6Ð7ð 8!Ø!& ð)óð øô ò Ü×&Ñ&ðÜ ×3Ñ3°EÓ:Ð;ð <%à�gð #ð#óð ðûðús   ÁB Â	CÂ0C	Ã	Cc                óÎ   — || j                   v r| j                   |   S |j                  }t        |t        j                  «      r| j                  d|«      }|| j                   |<   |S )Nrð  )rV  rF  rÊ  r$   rL   r¯  )r  rð  rã  s      r  rˆ  zSQLCompiler._truncate_bindparam¥  s^   € Ø˜Ÿ™Ñ'Ø—?‘? 9Ñ-Ð-à—M‘Mˆ	Ü�i¤×!:Ñ!:Ô;Ø×2Ñ2°;À	ÓJˆIð &/ˆ�‰˜	Ñ"àÐr  c                ó”  — ||f| j                   v r| j                   ||f   S |j                  | j                  «      }t        |«      | j                  dz
  kD  r]| j
                  j                  |d«      }|dt        | j                  dz
  d«       dz   t        |«      dd  z   }|dz   | j
                  |<   n|}|| j                   ||f<   |S )Né   r    r   r@  r6   )	r�  Ú	apply_mapr�  rÌ  r�  r‘  rÃ  ÚmaxÚhex)r  Úident_classr  Úanonnamer  Ú	truncnames         r  r¯  z!SQLCompiler._truncated_identifier²  sà   € ð ˜Ð $×"6Ñ"6Ñ6Ø×'Ñ'¨°dÐ(;Ñ<Ð<à—>‘> $§-¡-Ó0ˆäˆx‹=˜4×,Ñ,¨qÑ0Ò0Ø×.Ñ.×2Ñ2°;ÀÓBˆGà˜œS ×!2Ñ!2°QÑ!6¸Ó:Ð;Øñä�g“,˜q˜rÐ"ñ#ð ð
 5<¸a±KˆD×$Ñ$ [Ò1à ˆIØ4=ˆ×Ñ˜k¨4Ð0Ñ1ØÐr  c                ó    — || j                   z  S r  ©r�  ©r  r  s     r  Ú
_anonymizezSQLCompiler._anonymizeÇ  s   € Ø�d—m‘mÑ#Ð#r  c                ó˜  — 	 | j                   |   S # t        $ r Y nw xY w| j                   r| j                  }nt        «       x| _        }||v s||k7  rD|| j                  v r6|}d}||v s|| j                  v r |dz  }d||fz  }||v rŒ|| j                  v rŒ |j                  |«       | j                   j                  ||i«      | _         |S )aœ  Record the escaped form of a bind name, uniquifying it against
        the names already in use.

        Distinct bind names can escape to the same string, e.g. parameters
        named ``"a.b"`` and ``"a_b"`` both escape to ``a_b``.  As the escaped
        name is what keys the parameter dictionary handed to the driver, the
        second parameter would otherwise overwrite the first and its value be
        silently discarded.  A counter is appended so that the two remain
        distinct.  The ``.key`` of each :class:`.BindParameter` is untouched,
        so parameter dictionaries passed by the caller are unaffected.

        See :ticket:`13534`.

        r   r    r  )rl  r›  rm  r‰   rU  r  r¨   )r  Úescaped_fromr  Úusedr!   r  s         r  Ú_escaped_bind_namezSQLCompiler._escaped_bind_nameÊ  sä   € ð	Ø×*Ñ*¨<Ñ8Ð8øÜò 	Ùð	úð ×"Ò"Ø×0Ñ0‰Dä36³5Ð8ˆDÔ)¨Dà�4‰<˜D LÒ0°T¸T¿Z¹ZÑ5GØˆDØˆGØ˜$‘, $¨$¯*©*Ñ"4Ø˜1‘�Ø 4¨ /Ñ1�ð ˜$’, $¨$¯*©*Ò"4ð 	�‰�ŒØ"&×"9Ñ"9×"?Ñ"?Ø˜4Ð ó#
ˆÔð ˆs   ‚ ‘	œc                óê  ‡ — |�|j                  |«       |�|j                  |«       |s[‰ j                  j                  |«      r$‰ j                  j	                  ˆ fd„|«      }	|}|	}n‰ j
                  r|‰ j                  v r|}|r‰ j                  ||«      }|rGd|z  }
|r|
S |�:|j                  ‰ j                  «      }|j                  r‰ j                  |||
«      }
|
S ‰ j                  t        j                  u r‰ j                  d|iz  }
n‰ j                   d|iz  }
|�P‰ j                  j"                  r:|j                  ‰ j                  «      }|j                  r‰ j                  |||
«      }
|
S )Nc                ó@   •— ‰j                   | j                  d«         S )Nr   )rK  r    )rÅ  r  s    €r  rÛ  z.SQLCompiler.bindparam_string.<locals>.<lambda>
  s   ø€ ˜d×8Ñ8¸¿¹À»ÑD€ r  z__[POSTCOMPILE_%s]r  )r  rÄ  rJ  r  rÐ  rl  rm  r²  r  rÅ  Úrender_literal_castr  r¶  rƒ  r„  r[  rZ  r  )r  r  rƒ  r„  r°  r…  Úaccumulate_bind_namesÚvisited_bindparamrà  Únew_namer{  Ú	type_impls   `           r  rï  zSQLCompiler.bindparam_stringð  s€  ø€ ð !Ð,Ø!×%Ñ% dÔ+ØÐ(Ø×$Ñ$ TÔ*áØ×&Ñ&×-Ñ-¨dÔ3ð  ×2Ñ2×6Ñ6ÛDØó�ð  $�Ø‘à×'Ò'Ø˜D×9Ñ9Ñ9ð  $�áØ×*Ñ*¨<¸Ó>ˆDÙØ&¨Ñ-ˆCÙð �
ð Ð)Ø*×BÑBØ—L‘Ló�	ð ×0Ò0Ø×/Ñ/°À	È3ÓO�CØˆJØ�Z‰Zœ=×2Ñ2Ñ2Ø×/Ñ/°6¸4°.Ñ@‰Cà×#Ñ# v¨t nÑ4ˆCð Ð&Ø—‘×6Ò6à&×>Ñ>¸t¿|¹|ÓLˆIØ×)Ò)Ø×+Ñ+¨N¸IÀsÓK�àˆ
r  c                óÂ   — |j                  «       }|j                  dd «       t        |j                  |j                  «      D ]  \  }} |j
                  | fd|i|¤Ž Œ y )NÚcte_opts)Úcopyr™  r  r  Ú_independent_ctes_optsrè  )r  Ústmtrà  Úlocal_kwÚcteÚopts         r  r  z&SQLCompiler._dispatch_independent_ctes8  sb   € Ø—7‘7“9ˆØ�‰�Z Ô&ÜØ×"Ñ" D×$?Ñ$?ó
ò 	C‰HˆC�ð #ˆC×"Ñ" 4ÑB°#ÐB¸ÓBñ	Cr  c                óN
  ‡ — ‰ j                  «       }	|	‰ j                  u sJ ‚||d<   |j                  }
t        |
t        j
                  «      r‰ j                  d|
«      }
d}d}|j                  «       }|j                  xs |j                  }|‰ j                  v r­‰ j                  |   \  }}}||
k(  sJ ‚||
f}‰ j                  |   }|j                  r±|j                  rt        j                  d«      ‚||
f}|rt        ‰ j                  «      nd}||
fx}}‰ j                  |= |‰ j                  |<   ||fz   ‰ j                  |<   n=|rt        ‰ j                  «      nd}||
f}|‰ j                  v r‰ j                  |   }nd }|�¯||u }||j                  u s||u rd}n–||j                  u r-|	|= |j                  «       }||u sJ ‚||u sJ ‚‰ j                  |= n[t!        |«      t!        |«      k(  s)|j"                  €|j"                  �|j%                  |«      rd}nt        j                  d|
z  «      ‚|s|sy |j&                  �O|j&                  }|j&                  j                  }t        |t        j
                  «      r‰ j                  d|«      }n|}d }|�r¹|‰ j                  |<   ||fz   ‰ j                  |<   |‰ j                  vr ‰ j(                  |fi |¤Ž |�ss||	v�rn|j*                  rd‰ _        ‰ j.                  j1                  ||
«      }|j*                  s|j2                  j4                  r^|j2                  }|j7                  d«      D �����cg c]  \  }}}}}|s|xs |‘Œ }}}}}}|dd	j9                  ˆ fd
„|D «       «      z  z  }|j;                  dd«      du sJ ‚‰ j                  s |j2                  j<                  ‰ fd|i|¤ŽS  ‰ j>                  ||j@                  fi |¤Ž}  |j2                  j<                  ‰ fddi|¤Ž}!|d| ›d|!›d�z  }|jB                  r$|d ‰ j>                  ||jB                  fi |¤Žz   z  }||	|<   |rÅ|r|
|jD                  |jG                  «       <   |s|r‰ j.                  j1                  ||
«      S |rh‰ j.                  j1                  ||«      }‰ j.                  jI                  |
«      r‰ j.                  jK                  |
«      }
|‰ jM                  |
«      z  }|S ‰ j.                  j1                  ||
«      S y c c}}}}}w )NÚvisiting_cterÁ  TFz6CTE is stated as 'nest_here' in more than one locationr    z5Multiple, unrelated CTEs found with the same name: %rr4  rá   c              3  ól   •K  — | ]+  }‰j                   j                  |‰j                  ¬ «      –— Œ- y­w)r¬  N)r½  Úformat_label_namer�  )rE  Úidentr  s     €r  rG  z(SQLCompiler.visit_cte.<locals>.<genexpr>ä  s8   øè ø€ ò "ð !&ð !ŸM™M×;Ñ;Ø %°·±ð <÷ ñ"ùs   ƒ14Úsubqueryr�  rã   z
(rC  rH  )'rº  rr  r  rÊ  r$   rL   r¯  Ú_get_reference_cteÚnestingrt  rs  r7   r   rÌ  r£  Ú	_restatesÚhashÚ_is_clone_ofÚcompareÚ
_cte_aliasÚ	visit_cteÚ	recursiveru  r½  Úformat_aliasrÞ  Úname_cte_columnsÚ_generate_columns_plus_namesr‘   rÃ  rè  Ú_generate_prefixesÚ	_prefixesÚ	_suffixesr–  r.   Ú_requires_quotesrÅ  Úget_render_as_alias_suffix)"r  rÀ  r�  ÚashintÚ	fromhintsrÃ  r"  r»  rê  Ú	self_ctesÚcte_nameÚ
is_new_cteÚembedded_in_current_named_cteÚ_reference_cterÉ  Ú	cte_levelr@  Úexisting_cte_optsÚcte_level_nameÚexisting_cteÚold_level_nameÚnew_level_nameÚexisting_cte_reference_cteÚpre_alias_cteÚcte_pre_alias_namerè  Ú
col_sourceÚ
proxy_nameÚfallback_label_namer¦  ÚrepeatedÚ
recur_colsÚprefixesr¢   s"   `                                 r  rÏ  zSQLCompiler.visit_cte@  s¯  ø€ ð ×(Ñ(Ó*ˆ	Ø˜DŸI™IÑ%Ð%Ð%à!$ˆˆ~Ñà—8‘8ˆä�h¤× 9Ñ 9Ô:Ø×1Ñ1°'¸8ÓDˆHàˆ
Ø(-Ð%à×/Ñ/Ó1ˆà—+‘+Ò1 ×!1Ñ!1ˆð ˜T×3Ñ3Ñ3Ø.2×.DÑ.DØñ/Ñ+ˆI�qÐ+ð ˜’=Ð �=à'¨Ð2ˆNØ×2Ñ2°>ÑBˆLð
 ×ÒØ$×,Ò,Ü×*Ñ*ð1óð ð
 #,¨XÐ!6�Ù/6œC §
¡
œO¸A�	Ø3<¸hÐ2GÐG� à×+Ñ+¨NÐ;Ø:F�×'Ñ'¨Ñ7Ø9GØðKñ :�×&Ñ& ~Ò6ñ
 ,3œ˜DŸJ™Jœ¸ˆIØ'¨Ð2ˆNà ×!8Ñ!8Ñ8Ø#×6Ñ6°~ÑF‘à#�àÐ#Ø,8¸LÐ,HÐ)ð �l×,Ñ,Ñ,°°|Ñ0CØ"‘
Ø §¡Ñ.ð ˜lÐ+à-9×-LÑ-LÓ-NÐ*à1°^ÑCÐCÐCØ1°\ÑAÐAÐAà×*Ñ*Ð+EÑFô
 ˜#“Y¤$ |Ó"4Ò4ð  ×,Ñ,Ð8Ø+×8Ñ8ÐDð  ŸK™K¨Ô5ð "'‘Jô
 ×*Ñ*ð,Ø.6ñ7óð ñ
 ™jØà�>‰>Ð%ØŸN™NˆMØ!$§¡×!4Ñ!4ÐÜÐ,¬h×.GÑ.GÔHØ%)×%?Ñ%?ØÐ/ó&Ñ"ð  ˆMØ!%ÐâØ69ˆD×#Ñ# NÑ3Ø5CØðGñ 6ˆD×"Ñ" >Ñ2ð  D§I¡IÑ-Ø�—‘˜}Ñ7°Ò7â%¨#°YÒ*>Ø—=’=Ø*.�DÔ'Ø—}‘}×1Ñ1°#°xÓ@�Ø—=’= C§K¡K×$@Ò$@Ø!$§¡�Jð" )×EÑEÀdÓK÷"ò "ñØØ&Ø/ØØ$á'ð ,Ò9¨zÑ9ð"�Jô "ð  ˜FØŸ	™	ó "ð *4ô	"ó ññ �Dð —z‘z *¨eÓ4¸Ñ=Ð=Ð=à—z’zð :˜3Ÿ;™;×9Ñ9ØñØ%+ðØ/5ñð ð  7˜t×6Ñ6Ø˜SŸ]™]ñ Ø.4ñ �Hð ;˜CŸK™K×:Ñ:ØñØ%)ðØ-3ñ�Eñ ªhºÐ>Ñ>�Dà—=’=Ø˜CÐ"9 $×"9Ñ"9Ø˜SŸ]™]ñ#Ø.4ñ#ñ ñ �Dð "&�	˜#‘áÙØ5=�×!Ñ! #§-¡-£/Ñ2áÑ"?Ø—}‘}×1Ñ1°#°xÓ@Ð@á!Ø—}‘}×1Ñ1°#Ð7IÓJ�Ø—=‘=×1Ñ1°(Ô;Ø#Ÿ}™}×2Ñ2°8Ó<�HØ˜×7Ñ7¸ÓAÑA�Ø�à—}‘}×1Ñ1°#°xÓ@Ð@àùöG"s   ÍTc                óˆ   — |j                   rd |d<   |j                  r | j                  |fi |¤ŽS  | j                  |fi |¤ŽS )Nr"  )Újoins_implicitlyÚ_is_lateralÚvisit_lateralÚvisit_aliasrÕ  s      r  Úvisit_table_valued_aliasz$SQLCompiler.visit_table_valued_alias  sN   € Ø×#Ò#Ø $ˆBˆ}ÑØ×ÒØ%�4×%Ñ% gÑ4°Ñ4Ð4à#�4×#Ñ# GÑ2¨rÑ2Ð2r  c                ó(   —  | j                   |fi |¤ŽS r  )rÐ  rÕ  s      r  Úvisit_table_valued_columnz%SQLCompiler.visit_table_valued_column   s   € Ø ˆt× Ñ  Ñ/¨BÑ/Ð/r  c           
     ó¾  ‡ ‡‡— |r&d‰vr‰j                   sJ ‚‰‰d<   |	rd‰vr	d‰v r|	‰d<   |�@|j                  ‰u r2 ‰j                  j                  ‰ f|||||‰dœ‰¤Ž}|r
|s|rd|›d�}|S ‰‰d<   |s|s|
rMt        ‰j                  t
        j                  «      r‰ j                  d‰j                  «      }n‰j                  }|r‰ j                  j                  ‰«      S |s|
rØ|	r|	j                  ‰j                  «       <    ‰j                  j                  ‰ fd|d	œ‰¤Ž}|rd|›d�}|‰ j                  ‰ j                  j                  ‰«      «      z   }‰j                  r8‰j                  r,|d
dj                  ˆˆˆ fd„‰j                   D «       «      z  z  }|r‰|v r‰ j#                  |‰|‰   |«      }|S  ‰j                  j                  ‰ fd|i‰¤ŽS )Nr!  r#  )r�  rÙ  ÚiscrudrÚ  ÚlateralÚenclosing_aliasrB  rC  rú  rÁ  T©r�  rù  r4  rá   c              3  óð   •K  — | ]m  }‰j                   j                  |j                  «      ›‰j                  r4d  ‰j                  j
                  j                  |j                  fi ‰¤Žz  nd›�–— Œo y­w)ú %sr´  N)r½  rÅ  r  Ú_render_derived_w_typesrÅ  rß  rÌ  r  )rE  r  rÁ  rê  r  s     €€€r  rG  z*SQLCompiler.visit_alias.<locals>.<genexpr>k  s{   øè ø€ ò ð  ð !ŸM™M×/Ñ/°·±Ô9ð $)×#@Ò#@ð	 !&Ø"M $§,¡,×"EÑ"E×"MÑ"MØ$'§H¡Hñ#"Ø06ñ#"ò!"ð
 &(ð!(ô	ñùs   ƒA3A6rù  )rñ  rÞ  rè  rÊ  r  r$   rL   r¯  r½  rÑ  r–  r.   rØ  Ú_supports_derived_columnsÚ_render_derivedr‘   r¦  Úformat_from_hint_text)r  rÁ  r�  rÙ  rø  rÚ  rÇ  rù  rú  r"  r³  rê  r¢   Ú
alias_namer{  s   ``         `   r  ró  zSQLCompiler.visit_alias#  s3  ú€ ñ Ø"¨&Ñ0ð ×(Ò(Ð(Ð(Ø.3�Ð*Ñ+ñ
 Ø)°Ñ7Ø'¨6Ñ1à0;�Ð,Ñ-àÐ&¨?×+BÑ+BÀeÑ+KØ4�E—M‘M×4Ñ4Øð	àØØØ#ØØ %ñ	ð ñ	ˆEñ ™V¡wøÚ"'Ð)�ØˆLà(-ˆFÐ$Ñ%á‘V™~Ü˜%Ÿ*™*¤h×&?Ñ&?Ô@Ø!×7Ñ7¸ÀÇÁÓL‘
à"ŸZ™Z�
áØ—=‘=×-Ñ-¨e°ZÓ@Ð@Ù‘~ÙØ7A�×!Ñ! %§/¡/Ó"3Ñ4à4�E—M‘M×4Ñ4ØðØ!¨7ñØ6<ñˆEò Ú"'Ð)�à˜$×9Ñ9Ø—‘×*Ñ*¨5°*Ó=óñ ˆCð ×.Ò.°5×3HÒ3HØ�vØ—I‘Iõ ð $)§7¡7ôó ññ �ñ$ ˜U iÑ/Ø×0Ñ0Ø˜ 	¨%Ñ 0°&ó�ð ˆJð 4�5—=‘=×3Ñ3ØñØ%ðØ)/ñð r  c                ó2   — d|d<    | j                   |fi |¤ŽS )NTrÇ  ©ró  )r  rÇ  rà  s      r  Úvisit_subqueryzSQLCompiler.visit_subqueryˆ  s#   € Øˆˆ:‰Øˆt×Ñ Ñ/¨BÑ/Ð/r  c                ó8   — d|d<   d | j                   |fi |¤Žz  S )NTrù  z
LATERAL %sr  )r  Úlateral_rà  s      r  rò  zSQLCompiler.visit_lateralŒ  s)   € Øˆˆ9‰ØÐ.˜d×.Ñ.¨xÑ>¸2Ñ>Ñ>Ð>r  c                óÖ   —  | j                   |fddi|¤Ž›d |j                  «       j                  | fi |¤Ž›�}|j                  �#|d |j                  j                  | fi |¤Žz  z  }|S )Nr�  Tz TABLESAMPLE z REPEATABLE (%s))ró  Ú_get_methodrè  Úseed)r  Útablesampler�  rà  rè  s        r  Úvisit_tablesamplezSQLCompiler.visit_tablesample�  sƒ   € àˆD×Ñ˜[Ñ<°Ð<¸Ó<Ø8ˆK×#Ñ#Ó%×8Ñ8¸ÑDÀÒDð
ˆð
 ×ÑÐ'ØÐ&Ø3�× Ñ ×3Ñ3°DÑ?¸BÑ?ññ ˆDð ˆr  c                ó–   ‡ ‡‡— ‰j                  d‰j                  «       dj                  ˆˆˆ fd„‰j                  D «       «      }d|› �S )Nr�  rá   c           	   3  ó¨   •K  — | ]I  }|D ]B  } ‰j                   t        j                  |d ‰j                  iŽj	                  «       fi ‰¤Ž–— ŒD ŒK y­w)rï  N)rÌ  r$   r   Ú_column_typesr  )rE  ÚchunkÚelemrÞ  rà  r  s      €€€r  rG  z-SQLCompiler._render_values.<locals>.<genexpr>Ÿ  sk   øè ø€ ò 	
ð Øò	
ð ð ˆD�L‰LÜ—‘Ø26ðØ!×/Ñ/ñç‘*“,ñð õ	ð	
ðñ	
ùó   ƒAArú  )Ú
setdefaultr�  r‘   Ú_data)r  rÞ  rà  Útupless   ``` r  Ú_render_valueszSQLCompiler._render_values�  sG   ú€ Ø
�‰�o w×'<Ñ'<Ô=Ø—‘õ 	
ð !Ÿ™ô	
ó 	
ˆð ˜˜Ð!Ð!r  c           
     óÊ  ‡ ‡— |j                   r‰ j                  |‰«        ‰ j                  |fi ‰¤Ž}|j                  rd }nMt	        |j
                  t        j                  «      r‰ j                  d|j
                  «      }n|j
                  }|j                  rd}nd}|rÀ|r!|�|nd|j                  |j                  «       <   |�1|j                  |u r#|j                  rt        j                  d«      ‚|S |r`d‰d<   |›d|›d	‰ j                  ‰ j                   j#                  |«      «      ›d
dj%                  ˆˆ fd„|j&                  D «       «      ›d	�}|S |›d|›d	�}|S )NrÞ  zLATERAL r´  z(unnamed VALUES element)z5Can't use a LATERAL VALUES expression inside of a CTEFrÉ  rB  rC  ú (rá   c              3  óD   •K  — | ]  } |j                   ‰fi ‰¤Ž–— Œ y ­wr  rç  r$  s     €€r  rG  z+SQLCompiler.visit_values.<locals>.<genexpr>Ò  s+   øè ø€ ò "à !ð 1˜A×0Ñ0°Ñ<¸Õ<ñ"ùrª  )r  r  r  Ú_unnamedrÊ  r  r$   rL   r¯  rñ  r–  r.   rÞ  r7   r   rØ  r½  rÅ  r‘   Úcolumns)	r  rÞ  r�  r"  rÃ  rà  r¡  r  rù  s	   `    `   r  Úvisit_valueszSQLCompiler.visit_values«  s\  ù€ ð ×$Ò$Ø×+Ñ+¨G°RÔ8àˆD×Ñ Ñ.¨2Ñ.ˆà×ÒØ‰DÜ˜Ÿ™¤h×&?Ñ&?Ô@Ø×-Ñ-¨h¸¿¹ÓE‰Dà—<‘<ˆDà×ÒØ ‰GàˆGáÙà Ð,‘DÐ2Lð ×!Ñ! '×"3Ñ"3Ó"5Ñ6ð Ð'¨L×,@Ñ,@ÀGÑ,KØ×&Ò&Ü×*Ñ*ØOóð ð$ ˆñ Ø&+��?Ñ#âÚØ×3Ñ3°D·M±M×4GÑ4GÈÓ4MÕNàŸ	™	ô "à%,§_¡_ô"õ ð
�ð ˆò !(ªÐ+�Øˆr  c                ó0   — d | j                   |fi |¤Ž› d�S r�  )r  rÕ  s      r  Úvisit_scalar_valueszSQLCompiler.visit_scalar_valuesÜ  s%   € ØÐ&�4×&Ñ& wÑ5°"Ñ5Ð6°aÐ8Ð8r  c                ó   — d|z   S )Nrã   r  )r  Úalias_name_texts     r  rØ  z&SQLCompiler.get_render_as_alias_suffixß  s   € Ø˜Ñ'Ð'r  c                óÆ   — |sJ ‚|�|dk(  rd| _         d| _        |j                  rt        j                  d«      ‚| j
                  j                  t        ||||«      «       y )NÚ*FTzxMost backends don't support SELECTing from a tuple() object.  If this is an ORM query, consider using the Bundle object.)r_  r^  rî  r7   r   r¸  rÄ  r	  r  s        r  r  zSQLCompiler._add_to_result_mapâ  sk   € ñ ˆˆwàˆ?˜g¨šnØ$)ˆDÔ!Ø#'ˆDÔ Ø×ÒÜ×"Ñ"ð4óð ð
 	×Ñ×#Ñ#Ü˜w¨¨g°uÓ=õ	
r  c                ó8   —  | j                   d||d|€i n|fi |¤ŽS )aL  Render a column with necessary labels inside of a RETURNING clause.

        This method is provided for individual dialects in place of calling
        the _label_select_column method directly, so that the two use cases
        of RETURNING vs. SELECT can be disambiguated going forward.

        .. versionadded:: 1.4.21

        NF)Ú_label_select_column)r  r¾  r¬   r  Úcolumn_clause_argsrà  s         r  Ú_label_returning_columnz#SQLCompiler._label_returning_columnû  s:   € ð )ˆt×(Ñ(ØØØØØ$Ð,‰BÐ2Dñ
ð ñ
ð 	
r  c                óÔ  ‡‡— ‰j                   j                  | j                  «      }|j                  r|s|r|j	                  ‰«      }n‰}|r#| j
                  }|
r|Šˆfd„}n|‰ur|Šˆˆfd„}nd}|	sJ d«       ‚t        ‰t        j                  «      r-|‰ur%t        |‰j                  ‰j                  f¬«      }�nƒ|}�n|r%|€J d«       ‚t        |||‰j                  f¬«      }�nX|‰urd}nút        ‰t        j                  «      r"|xr ‰j                   xr ‰j                  du}n¾t        ‰t        j                   «      rd}n¡t        ‰t        j"                  «      r\‰j$                  t&        j(                  t&        j*                  fv xr | j                  j,                   xs ‰j/                  «       xs |}n+t        ‰t        j0                  «      s‰j2                  €d}nd}|rS|s|
rJ ‚‰j4                  }t        |t        j6                  «      st        j6                  |«      n|}t        |||f¬«      }n|}|j9                  |	||d¬	«        |j:                  | fi |¤ŽS )
z.produce labeled columns present in a select().c                ó   •—  ‰| || f|«       y r  r  )r  r  r  r   r  s       €r  r€  z;SQLCompiler._label_select_column.<locals>.add_to_result_map6  s   ø€ Ù& w°°w°jÀ%ÕHr  c                ó$   •—  ‰| |‰f|z   |«       y r  r  )r  r  r  r   r  r¬   s       €€r  r€  z;SQLCompiler._label_select_column.<locals>.add_to_result_map>  s   ø€ Ù&Ø ¨ y°7Ñ':¸Eõr  NzX_label_select_column is only relevant within the columns clause of a SELECT or RETURNING)r  z*proxy_name is required if 'name' is passedTF)r™  r€  rÉ  r³  )r  r†  rÅ  Ú_has_column_expressionÚcolumn_expressionr  rÊ  r$   rS   r  r  rÞ  rÃ  rP   rÂ  r§   Ú
TextClauseÚUnaryExpressionrm  r&   Úis_falseÚis_truer  Ú_wraps_unnamed_columnÚNamedColumnÚ_non_anon_labelÚ_anon_name_labelrL   r–  rè  )r  r³   r¬   r  r�  r%  r  rê  rë  r™  Úcolumn_is_repeatedÚneed_column_expressionsrÉ  rŽ  Úcol_exprr€  Úresult_exprÚrender_with_labelr  s     `               @r  r$  z SQLCompiler._label_select_column  s´  ù€ ð  �{‰{×'Ñ'¨¯©Ó5ˆà×&Ò&Ù#Ñ':à×-Ñ-¨fÓ5‰HàˆHáð
 !%× 7Ñ 7Ðñ
 "Ø%6Ð"õIð
  Ñ'Ø%6Ð"öð !%Ðñ %ð 	
ð:ó	
Ð$ô �fœhŸn™nÔ-Ø˜vÑ%Ü+Ø˜fŸk™k°f·n±nÐ5Fô’ð '’áð Ð&ð<à;ó<Ø&ô (ØØàð ×$Ñ$ðôŠKð& ˜vÑ%ð %)Ñ!Ü˜F¤H×$9Ñ$9Ô:ð ò 1Ø"×-Ñ-Ð-ò1àŸ™¨DÐ0ñ "ô
 ˜F¤H×$7Ñ$7Ô8Ø$)Ñ!Ü˜F¤H×$<Ñ$<Ô=ðP Ÿ™Ü%×.Ñ.´	×0AÑ0AÐBðCò Eà $§¡× DÑ DÐDò
ð ×3Ñ3Ó5ò
ð ñ "ô" ˜v¤x×';Ñ';Ô<ð ×*Ñ*Ð2à$(Ñ!à$)Ð!á Ù*ñ
  2Ð1Ð1Ø*0×*AÑ*AÐ'ô &Ø+¬X×-FÑ-Fôô ×-Ñ-Ð.AÔBð -ð $ô ,ØÐ1¸j¸]ô‘ð '�à×!Ñ!Ø"7Ø/Ø'Ø ð	 	"ô 	
ð .ˆ{×-Ñ-¨dÑIÐ6HÑIÐIr  c                ó>   — | j                  ||«      }|r|d|z   z  }|S r9  )Úget_from_hint_text)r  r‡  r§   Úhintrø  Úhinttexts         r  r  z!SQLCompiler.format_from_hint_textä  s*   € Ø×*Ñ*¨5°$Ó7ˆÙØ�s˜X‘~Ñ%ˆGØˆr  c                 ó   — y r  r  )r  Úbyfromss     r  Úget_select_hint_textz SQLCompiler.get_select_hint_textê  ó   € Ør  c                 ó   — y r  r  ©r  r§   rè  s      r  r:  zSQLCompiler.get_from_hint_textí  s   € ð r  c                 ó   — y r  r  rB  s      r  Úget_crud_hint_textzSQLCompiler.get_crud_hint_textò  r@  r  c                ó$   — dj                  |«      S r9  r%  )r  Ú
hint_textss     r  Úget_statement_hint_textz#SQLCompiler.get_statement_hint_textõ  s   € Ø�x‰x˜
Ó#Ð#r  r0  r  r-  r,  c                óÒ   — | j                    }|r| j                  n| j                   d   }|j                  || ||¬«      }| j                  |||«      \  }}	|j	                  ||	¬«      S )Nr«  rû  ©Úexplicit_correlate_fromsÚimplicit_correlate_froms)r£  r  r®  Ú_enclosing_correlate_fromsÚ_get_display_froms)
r  Úselect_stmtr�  rù  rà  r  r¾  r1  ÚexplicitÚimplicits
             r  Ú_display_froms_for_selectz%SQLCompiler._display_froms_for_selectÿ  s‚   € ð —z‘z�>ˆÙ-5�×)Ò)¸4¿:¹:Àb¹>ˆà#×:Ñ:Ø˜ f°gð ;ó 
ˆð "×<Ñ<Ø�6˜7ó
Ñˆ�(ð ×/Ñ/Ø%-Ø%-ð 0ó 
ð 	
r  c                óh   — |d   }|d   }|r#|s!|j                  |«      t        j                  fS ||fS )a[  Given the stack entry of an enclosing statement, return the
        explicit and implicit correlate FROMs for a SELECT that's embedded
        within it, as passed to :meth:`.SelectState._get_display_froms`.

        explicit_correlate_froms: FROMs of enclosing SELECTs that this SELECT
        may correlate to when explicit correlation is used, i.e.
        :meth:`.Select.correlate` or :meth:`.Select.correlate_except`.
        Includes the FROMs of all enclosing SELECTs.

        implicit_correlate_froms: FROMs of enclosing SELECTs that this SELECT
        will correlate to automatically, assuming auto-correlation is in
        effect.  Includes only the FROMs of the immediately enclosing SELECT,
        and is empty if this SELECT is a subquery in a FROM clause that's not
        LATERAL.  Is always a subset of explicit_correlate_froms.

        r-  r,  )Ú
differencer+   Ú	EMPTY_SET)r  r¾  r�  rù  r-  r,  s         r  rL  z&SQLCompiler._enclosing_correlate_froms  sC   € ð&  Ð 1Ñ2ˆØ˜^Ñ,ˆá™'Ø"×-Ñ-¨lÓ;¼T¿^¹^ÐKÐKà" LÐ0Ð0r  Útranslate_select_structurec	                óv	  ‡(— |�J d«       ‚| j                   r| j                  |«       d|	d<    |j                  || f||dœ|	¤Ž}
|
j                  |	d<   |
j                  }| j
                   }|r| j                  s|
| _        |d uxs |}| j                  rB | j                  |fd|i|	¤Ž}||ur)|
}|}|} |j                  || f||dœ|	¤Ž}
|
j                  }|r| j                  n| j
                  d   }|xs& |j                  dd«      xs |j                  d	d«      x}}|rd}|sd
|	v r|	d
= | j                  ||
||||«      }|	j                  «       }|j                  dddœ«       d}|j                  �' | j                  |j                  fi |	¤Ž}|�||dz   z  }|j                  r| j!                  |«      \  }}|r||dz   z  }nd }|j"                  r| j%                  ||	«       |j&                  r!| | j(                  ||j&                  fi |	¤Žz  }| | j*                  |fi |	¤Žz  }|j,                  �' | j                  |j,                  fi |	¤Ž}|�||dz   z  }|
j.                  D �����cg c]#  \  }}}}}| j1                  ||||||||||¬«
      ‘Œ% c}}}}}D �cg c]  }|�|‘Œ }}|r«|�©t3        t5        |
j.                  D � ����cg c]
  \  } }}}}|‘Œ c}}}}} j.                  D � ����cg c]
  \  } }}}}|‘Œ c}}}}} «      «      Š(| j6                  D � ��!�"cg c]'  \  } }}!}"t9        | |t;        ˆ(fd„|!D «       «      |"«      ‘Œ) c}"}!}} | _        | j=                  |||
|||||	«      }|j>                  �' | j                  |j>                  fi |	¤Ž}#|#r|d|#z   z  }|j@                  rQ|j@                  D �$�%cg c]!  \  }$}%|$d| jB                  jD                  fv r|%‘Œ# }&}$}%|&r|d| jG                  |&«      z   z  }| jH                  r2|r|r.|stK        | j
                  «      nd }'| jM                  |'¬«      |z   }|jN                  r$|d | j(                  ||jN                  fi |	¤Žz   z  }| j
                  jQ                  d«       |S c c}}}}}w c c}w c c}}}}} w c c}}}}} w c c}"}!}} w c c}%}$w )NzpSQLAlchemy 1.4 requires use of the translate_select_structure hook for structural translations of SELECT objectsFr™  rû  rÊ  r�  r«  r4  r3  r€  )r®  r™  zSELECT rH  )r  rê  rë  r4  r5  c              3  óB   •K  — | ]  }‰j                  ||«      –— Œ y ­wr  r\  )rE  Úorƒ  s     €r  rG  z+SQLCompiler.visit_select.<locals>.<genexpr>î  s   øè ø€ Ò$F¸Q Y§]¡]°1°a×%8Ñ$Fùs   ƒr"  r  ))rw  r·  r®  Ú_ambiguous_table_name_mapr;  r£  r1  rU  r  rÃ  Ú_setup_select_stackr¼  r–  Ú_post_select_clauserÌ  Ú_hintsÚ_setup_select_hintsr  r  rÕ  rÔ  Úget_select_precolumnsÚ_pre_columns_clauseÚcolumns_plus_namesr$  rÿ  r  r¸  r	  rJ  Ú_compose_select_bodyÚ_post_body_clauseÚ_statement_hintsrÅ  r  rG  rr  rÌ  r	  rÖ  r™  ))r  rN  r�  Úinsert_intorÚ  r  Úselect_wraps_forrù  r"  rê  r1  r  Úis_embedded_selectÚnew_select_stmtÚcompile_state_wraps_forr¾  r  r5  r–  r%  rè  ÚpscÚ	hint_textÚbyfromÚpccr  rê  rë  r¬   rì  r¦  Úinner_columnsrF  ré  r   ÚpbcÚdialect_nameÚhtÚper_dialectr  rƒ  s)                                           @r  Úvisit_selectzSQLCompiler.visit_select7  sÞ  ø€ ð  Ð'ð 	
ð-ó	
Ð'ð
 ×ÒØ×Ñ Ô,ð +0ˆÐ&Ñ'à:˜×:Ñ:Ø˜ð
Ø&,°gñ
ØAGñ
ˆð ×3Ñ3ð 	Ð)Ñ*ð $×-Ñ-ˆà—z‘z�>ˆá˜D×.Ò.Ø!.ˆDÔà+°4Ð7ÒF¸;Ðð
 ×*Ò*Ø=˜d×=Ñ=ØñØ$*ðØ.4ñˆOð  kÑ1Ø*7Ð'Ø#.Ð Ø-�à B × BÑ BØØð!ð "Ø#ñ	!ð
 ñ!�ð ,×5Ñ5�á-5�×)Ò)¸4¿:¹:Àb¹>ˆð ò >Ø�y‰yÐ7¸Ó?ò>à�y‰yÐ5°uÓ=ð	
ÐÐ5ñ Ø"'Ðñ
 #Ð':¸fÑ'DØÐ*Ð+à×(Ñ(Ø˜¨¨v°wÀó
ˆð $Ÿ[™[›]ÐØ×!Ñ!Ø$)ÀEÑJô	
ð ˆà×*Ñ*Ð6Ø�$—,‘,˜{×>Ñ>ÑIÀ&ÑIˆCØˆØ˜˜c™	Ñ!�à×ÒØ $× 8Ñ 8¸Ó EÑˆI�vÙØ˜	 C™Ñ'‘àˆFà×(Ò(Ø×+Ñ+¨K¸Ô@à× Ò ØÐ+�D×+Ñ+Ø˜[×2Ñ2ñØ6<ññ ˆDð 	Ð*�×*Ñ*¨;ÑA¸&ÑAÑAˆà×*Ñ*Ð6Ø�$—,‘,˜{×>Ñ>ÑIÀ&ÑIˆCØˆØ˜˜c™	Ñ!�ð0 #×5Ñ5÷'ò ñØØØ'ØØð# ×)Ñ)ØØØ'ØØ&ØØ)Ø(;Ø'/Ø,Cð *õ öö
àð* ˆ}ò- ð
ˆð 
ñ4 Ð#3Ð#?ô Üð +×=Ñ=÷	ò 	ñØØ&Ø/Ø Ø$ò ö	ð$ 5×GÑG÷	ò 	ñØØ&Ø/Ø Ø$ò ö	óóˆIð: .2×-AÑ-A÷	$ñ $ñ *�C˜˜s Eô #Ø˜œuÓ$FÀ#Ô$FÓFÈõõ$ˆDÔ ð ×(Ñ(ØØØØØØØØó	
ˆð ×(Ñ(Ð4Ø�$—,‘,˜{×<Ñ<ÑGÀÑGˆCÙØ˜˜c™	Ñ!�à×'Ò'ð +6×*FÑ*F÷á&�\ 2Ø C¨¯©×):Ñ):Ð#;Ñ;ò ðˆKñ ñ
 Ø˜˜d×:Ñ:¸;ÓGÑGÑG�ð �9Š9Ñ0±HÙ3;œC §
¡
œOÀˆMØ×*Ñ*¸Ð*ÓGÈ$ÑNˆDà× Ò Ø�CÐ1˜$×1Ñ1Ø˜[×2Ñ2ñØ6<ññ ñ ˆDð 	�
‰
�‰�rÔàˆùöCùò
ùö@	ùö	ùõ$ùó0s$   É/(RÊ RËRË4R$Ì#,R-
Ï &R5c                óþ   — |j                   j                  «       D ���ci c];  \  \  }}}|d| j                  j                  fv r||d|j	                  | d¬«      iz  “Œ= }}}}| j                  |«      }||fS c c}}}w )Nr"  r  T)rÙ  )r\  r—  rÅ  r  rè  r?  )r  r³   r©  rÅ  r<  rk  rj  s          r  r]  zSQLCompiler._setup_select_hints  s�   € ð /5¯m©m×.AÑ.AÓ.C÷
ð 
ñ +Ñ �˜ (Ø˜3 §¡× 1Ñ 1Ð2Ñ2ð �8Ø�u×/Ñ/°¸TÐ/ÓBÐCñDñ Dð
ˆò 
ð ×-Ñ-¨fÓ5ˆ	Ø˜&Ð Ð ùô
s   ŸA A8c           	     óÈ  — |dk(  r||d<   nf|rd|d   }t        |j                  «      }t        |j                  «      |k7  r2t        j                  dd||dz   t        |j                  «      fz  «      ‚| j                  |||«      \  }	}
|j                  |	|
¬«      }t        t        |Ž «      }|j                  |d   «      }||||dœ}| j                  j                  |«       |S )Nr   r5  z}All selectables passed to CompoundSelect must have identical numbers of columns; select #%d has %d columns, select #%d has %dr    rI  r-  )r,  r-  r)   r1  )rÌ  r¥  r`  r7   r   rL  rM  r‰   r/   r¨   r£  rÄ  )r  r³   r1  r¾  r�  rù  r  r5  ÚnumcolsrO  rP  r–  Únew_correlate_fromsÚall_correlate_fromsr  s                  r  rZ  zSQLCompiler._setup_select_stack&  s  € ð ˜QÒØ &ˆE�*ÒÙØ˜ZÑ(ˆHÜ˜(×8Ñ8Ó9ˆGä�=×3Ñ3Ó4¸Ò?Ü×&Ñ&ð!ð
 ØØ&¨Ñ*Ü˜F×8Ñ8Ó9ð	ñ		óð ð "×<Ñ<Ø�6˜7ó
Ñˆ�(ð ×0Ñ0Ø%-Ø%-ð 1ó 
ˆô
 "¤-°Ð"7Ó8ÐØ1×7Ñ7ØÐ#Ñ$ó
Ðð
 0Ø2Ø Ø*ñ	*
ˆ	ð 	�
‰
×Ñ˜)Ô$àˆr  c	                ó’  — |dj                  |«      z  }| j                  t        z  r1t        i t	        «       «      }	| j                  t
        z  }
|r|	| _        nd }	d}
|s|j                  «       }|r€|dz  }|j                  r8|dj                  |D �cg c]  } |j                  | fd||	dœ|¤Ž‘Œ c}«      z  }nJ|dj                  |D �cg c]  } |j                  | fd|	dœ|¤Ž‘Œ c}«      z  }n|| j                  «       z  }|j                  r) | j                  |j                  fd|	i|¤Ž}|r|d|z   z  }|
r|	€J ‚|	j                  «        |j                  r| | j                  |fi |¤Žz  }|j                   r' | j                  |j                   fi |¤Ž}|r|d	|z   z  }|j"                  �' | j$                  |j"                  fi |¤Ž}|�|d
|z   z  }|j&                  r| | j(                  |fi |¤Žz  }|j*                  r| | j,                  |fi |¤Žz  }|j.                  �| | j0                  |fi |¤Žz  }|S c c}w c c}w )Nrá   Fz 
FROM T)r�  rÚ  r"  ©r�  r"  r"  z 
WHERE z	 
HAVING z 
)r‘   r‡  rŠ  rŽ  r‰   r‹  r"  Úrstripr\  rè  r~  Ú_where_criteriar1  r¬  Ú_group_by_clausesr²  Ú_having_criteriaÚ_post_criteria_clauserÌ  Ú_order_by_clausesr³  r´  rµ  Ú_for_update_argÚfor_update_clause)r  rè  r³   r1  rm  r–  rk  r  rê  r"  Úwarn_lintingÚfÚtrl  s                 r  ra  z SQLCompiler._compose_select_bodyT  sÂ  € ð 	�—	‘	˜-Ó(Ñ(ˆà�<‰<Ô4Ò4Ü$ R¬«Ó/ˆKØŸ<™<¬,Ñ6ˆLÙØ#.�Õ àˆKØ ˆLñ Ø—;‘;“=ˆDáØ�JÑˆDà�}Š}Ø˜Ÿ	™	ð "'ö	ð ð -˜×,Ñ,Ø ðà#'Ø&,Ø(3ñ	ð
 %óò	óñ ‘ð ˜Ÿ	™	ð "'öð ð -˜×,Ñ,Ø ðà#'Ø(3ñð %ó	òó
ñ 
‘ð �D×%Ñ%Ó'Ñ'ˆDà×!Ò!Ø1�×1Ñ1Ø×&Ñ&ñØ4?ðØCIñˆAñ Ø˜ a™Ñ'�áØÐ*Ð*Ð*Ø×ÑÔà×#Ò#ØÐ(�D×(Ñ(¨Ñ:°6Ñ:Ñ:ˆDà×"Ò"Ø1�×1Ñ1Ø×'Ñ'ñØ+1ñˆAñ Ø˜ qÑ(Ñ(�à×'Ñ'Ð3Ø�$—,‘,˜v×;Ñ;ÑF¸vÑFˆCØˆØ˜ ™Ñ#�à×#Ò#ØÐ(�D×(Ñ(¨Ñ:°6Ñ:Ñ:ˆDà×*Ò*ØÐ*�D×*Ñ*¨6Ñ<°VÑ<Ñ<ˆDà×!Ñ!Ð-ØÐ*�D×*Ñ*¨6Ñ<°VÑ<Ñ<ˆDàˆùò{	ùòs   ÂH?
Ã
I
c                óN   ‡ ‡— dj                  ˆˆ fd„|D «       «      }|r|dz  }|S )NrH  c              3  ó„   •K  — | ]7  \  }}|d v s|‰j                   j                  k(  r |j                  ‰fi ‰¤Ž–— Œ9 y­w))Nr"  N)rÅ  r  rè  )rE  Úprefixro  rà  r  s      €€r  rG  z1SQLCompiler._generate_prefixes.<locals>.<genexpr>¹  sH   øè ø€ ò 
á$�˜Ø˜{Ñ*¨l¸d¿l¹l×>OÑ>OÒ.Oð &ˆF×%Ñ% dÑ1¨bÕ1ñ
ùs   ƒ=A r%  )r  r¾  rî  rà  rL  s   `  ` r  rÔ  zSQLCompiler._generate_prefixes¸  s1   ù€ Ø—‘ô 
à(0ô
ó 
ˆñ
 Ø�c‰MˆFØˆr  c                óv  — | j                   sy|r§|dkD  r¢t        j                  «       }t        | j                   j	                  «       «      D ]g  }| j
                  |j                  «          \  }}}|j                  xs |j                  }||k(  xs |xr ||dz   k(  }	|r|	sŒV| j                   |   ||<   Œi n| j                   }|syt        |D �cg c]  }|j                  ‘Œ c}«      }
| j                  |
«      dz   }|dj                  |j                  «       D �cg c]  }|‘Œ c}«      z  }|dz  }|r{|dkD  rvt        |j	                  «       «      D ]Z  }| j
                  |j                  «          \  }}}| j                   |= | j                  ||f= | j
                  |j                  «       = Œ\ |S c c}w c c}w )zå
        include_following_stack
            Also render the nesting CTEs on the next stack. Useful for
            SQL structures like UNION or INSERT that can wrap SELECT
            statements containing nesting CTEs.
        r´  r    rH  ú, 
z
 )rr  r+   r¹  r°  Úkeysrt  rÈ  rÉ  r�   rÐ  Úget_cte_preambler‘   rÞ  rs  )r  r  r­  rr  rÀ  rà  rÜ  r»  rÉ  Úis_rendered_levelru  Úcte_textÚtxts                r  r	  zSQLCompiler._render_cte_clauseÂ  s¾  € ð �yŠyØñ ˜]¨QÒ.Ü×#Ñ#Ó%ˆDÜ˜DŸI™IŸN™NÓ,Ó-ò +�Ø04×0FÑ0FØ×*Ñ*Ó,ñ1Ñ-�	˜8 Xð Ÿ+™+Ò9¨×)9Ñ)9�Ø$-°Ñ$>ò %Ø+ÒN°	¸]ÈQÑ=NÑ0Nð "ñ  Ñ$5Øà ŸI™I c™N��S’	ñ+ð —9‘9ˆDáØÜ°tÖ<°˜cŸm›mÒ<Ó=ˆà×(Ñ(¨Ó8¸3Ñ>ˆØ�F—K‘K°·±³Ö >¨¢Ò >Ó?Ñ?ˆØ�EÑˆá˜]¨QÒ.Ü˜DŸI™I›KÓ(ò E�Ø04×0FÑ0FØ×*Ñ*Ó,ñ1Ñ-�	˜8 Xð —I‘I˜c�NØ×+Ñ+¨Y¸Ð,AÐBØ×*Ñ*¨3×+AÑ+AÓ+CÑDðEð ˆùò =ùò !?s   ÃF1Ä	F6
c                ó
   — |ryy)NzWITH RECURSIVEÚWITHr  )r  rÐ  s     r  r‹  zSQLCompiler.get_cte_preamble÷  s   € ÙØ#àr  c                óh   — |j                   rt        j                  dd¬«       |j                  rdS dS )zcCalled when building a ``SELECT`` statement, position is just
        before column list.

        a  DISTINCT ON is currently supported only by the PostgreSQL dialect.  Use of DISTINCT ON for other backends is currently silently ignored, however this usage is deprecated, and will raise CompileError in a future release for all backends that do not support this syntax.z1.4)Úversionræ   r´  )Ú_distinct_onr+   Úwarn_deprecatedÚ	_distinct©r  r³   rà  s      r  r^  z!SQLCompiler.get_select_precolumnsý  s:   € ð
 ×ÒÜ× Ñ ð3ð
 õð %×.Ò.ˆ{Ð6°BÐ6r  c                óx   —  | j                   |j                  t        t        j                     fi |¤Ž}|rd|z   S y)z5allow dialects to customize how GROUP BY is rendered.z
 GROUP BY r´  )r'  r|  r°  r&   Úcomma_op)r  r³   rà  Úgroup_bys       r  r²  zSQLCompiler.group_by_clause  sG   € ð 1�4×0Ñ0Ø×$Ñ$¤i´	×0BÑ0BÑ&Cñ
ØGIñ
ˆñ Ø (Ñ*Ð*àr  c                óx   —  | j                   |j                  t        t        j                     fi |¤Ž}|rd|z   S y)z5allow dialects to customize how ORDER BY is rendered.rƒ  r´  )r'  r  r°  r&   r˜  )r  r³   rà  rn  s       r  r³  zSQLCompiler.order_by_clause  sG   € ð 1�4×0Ñ0Ø×$Ñ$¤i´	×0BÑ0BÑ&Cñ
ØGIñ
ˆñ Ø (Ñ*Ð*àr  c                 ó   — y)Nz FOR UPDATEr  r–  s      r  r�  zSQLCompiler.for_update_clause$  s   € Ør  c               óî   — |j                  dt        j                  |«      ¬«      D �����	cg c]"  \  }}}}}	 | j                  |||f||	||dœ|¤Ž‘Œ$ }
}}}}}	ddj	                  |
«      z   S c c}	}}}}w )NT)Úcols)rë  r4  r  rê  ú
RETURNING rá   )rÓ  r!   Ú_select_iterablesr&  r‘   )r  r¾  Úreturning_colsr  rà  r  rê  rë  r¬   rì  r  s              r  Úreturning_clausezSQLCompiler.returning_clause'  s¥   € ð2 ×2Ñ2Øœ4×1Ñ1°.ÓAð 3ó ÷#
ò 
ñØØØ#ØØð )ˆD×(Ñ(ØØØ#ð	ð %8Ø#+ØØ%ñ	ð ó	ð
ˆô 
ð, ˜dŸi™i¨Ó0Ñ0Ð0ùö-
s   ­'A.c                óè   — d}|j                   �#|d | j                  |j                   fi |¤Žz   z  }|j                  �4|j                   €|dz  }|d | j                  |j                  fi |¤Žz   z  }|S )Nr´  z
 LIMIT z

 LIMIT -1z OFFSET )Ú_limit_clauserÌ  Ú_offset_clause)r  r³   rà  rè  s       r  r½  zSQLCompiler.limit_clauseG  s„   € ØˆØ×ÑÐ+Ø�K , $§,¡,¨v×/CÑ/CÑ"JÀrÑ"JÑJÑJˆDØ× Ñ Ð,Ø×#Ñ#Ð+Ø˜Ñ%�Ø�J  §¡¨f×.CÑ.CÑ!JÀrÑ!JÑJÑJˆDØˆr  c                ó¨  — |€|j                   }|j                  }ndddœ}d}|j                  �K|j                  }|r!|j                  |«      r|j	                  «       } | j
                  |fi |¤Ž}	|d|	z  z  }n|r|dz  }|�O|r!|j                  |«      r|j	                  «       }|d | j
                  |fi |¤Ž›|d   rdnd›d	|d
   rdnd›�z  }|S )NF)rD  Ú	with_tiesr´  z
 OFFSET %s ROWSz
 OFFSET 0 ROWSz
 FETCH FIRST rD  z PERCENTz ROWS r¦  z	WITH TIESÚONLY)r»  Ú_fetch_clause_optionsr¤  Ú_simple_int_clauseÚrender_literal_executerÌ  )
r  r³   r¼  Úrequire_offsetÚ"use_literal_execute_for_simple_intrà  Úfetch_clause_optionsrè  Úoffset_clauseÚ
offset_strs
             r  r¼  zSQLCompiler.fetch_clauseQ  s  € ð ÐØ!×/Ñ/ˆLØ#)×#?Ñ#?Ñ à/4À5Ñ#IÐ àˆà× Ñ Ð,Ø"×1Ñ1ˆMá2Ø×-Ñ-¨mÔ<à -× DÑ DÓ F�Ø%˜Ÿ™ mÑ:°rÑ:ˆJØÐ'¨*Ñ4Ñ4‰DÙØÐ&Ñ&ˆDàÐ#á2Ø×-Ñ-¨lÔ;à+×BÑBÓD�ÙØ�—‘˜\Ñ0¨RÒ0Ø2°9Ò=‘
À2ÑEØ3°KÒ@‘ÀfÐLðñ ˆDð
 ˆr  c                óv  — |r|j                   |j                  |<   |s|s|
�r| j                  j                  |«      }|rG|rE| j                  j	                  |«      dz   | j                  j                  |j                  «      z   }n”| j                  j                  |j                  «      }|	�|	j                  |ur_|s]|r[|j                  |v rM| j                  d||j                     «      }|| j                  | j                  j                  d |«      «      z   }|r||v r| j                  ||||   |«      }|S y)NrE  rÁ  r´  )Úfullnamer–  r½  rÇ  rÈ  rÅ  r  rÞ  r¯  rØ  rÑ  r  )r  r§   r�  rø  rÙ  rÚ  Ú
use_schemar"  rÊ  rú  r³  rê  rÍ  r{  Ú	anon_names                  r  Úvisit_tablezSQLCompiler.visit_tablez  s;  € ñ Ø',§~¡~ˆK×Ñ˜eÑ$á‘Vš~Ø#Ÿ}™}×>Ñ>¸uÓEÐáÑ.à—M‘M×.Ñ.Ð/?Ó@Øñà—m‘m×)Ñ)¨%¯*©*Ó5ñ6ñ ð —m‘m×)Ñ)¨%¯*©*Ó5�ð (Ð/Ø*×2Ñ2¸%Ñ?á,Ù0ØŸ
™
Ð&>Ñ>à $× :Ñ :ØÐ!9¸%¿*¹*Ñ!Eó!�Ið  × ?Ñ ?ØŸ™×2Ñ2°4¸ÓCó!ñ �Cñ ˜U iÑ/Ø×0Ñ0Ø˜ 	¨%Ñ 0°&ó�ð ˆJàr  c                óæ  — |ri|j                   j                  t        j                  t	        |j
                  j                  «      t	        |j                  j                  «      «      «       |j                  rd}n|j                  rd}nd} |j
                  j                  | fd|dœ|¤Ž|z    |j                  j                  | fd|dœ|¤Žz   dz    |j                  j                  | fd|i|¤Žz   S )Nz FULL OUTER JOIN z LEFT OUTER JOIN z JOIN Try  ú ON r"  )r—  r–  rÜ  r%  r.   r’   r/   r¦   r�   Úisouterrè  Úonclause)r  r‘   r�  r"  rê  Ú	join_types         r  Ú
visit_joinzSQLCompiler.visit_join°  s
  € ÙØ×Ñ×$Ñ$Ü×!Ñ!Ü˜dŸi™i×5Ñ5Ó6Ü˜dŸj™j×6Ñ6Ó7óôð �9Š9Ø+‰IØ�\Š\Ø+‰Ià ˆIà(ˆD�I‰I×(Ñ(ØðØ!¨{ñØ>Dñð ñð ,ˆd�j‰j×+Ñ+ØðØ!¨{ñØ>Dññ	ð ñð /ˆd�m‰m×.Ñ.ØñØ"-ðØ17ññð	
r  c                ó"  — |j                   j                  «       D ���ci c]%  \  \  }}}|d| j                  j                  fv r||“Œ' }}}}|j                  |v r+| j                  ||j                  ||j                     d«      }||fS c c}}}w )Nr"  T)r\  r—  rÅ  r  r§   r  )r  r¾  Ú
table_textr§   rÅ  rj  Údialect_hintss          r  Ú_setup_crud_hintszSQLCompiler._setup_crud_hintsÎ  sž   € ð 04¯{©{×/@Ñ/@Ó/B÷
ð 
á+Ñ �˜ )Ø˜3 §¡× 1Ñ 1Ð2Ñ2ð �9Ñð
ˆò 
ð
 �:‰:˜Ñ&Ø×3Ñ3Ø˜DŸJ™J¨°d·j±jÑ(AÀ4óˆJð ˜jÐ(Ð(ùô
s   Ÿ*B
c                ó¤  — | j                   j                  }|j                  }|j                  }|€y|j                  r'| j
                  j                  |j                  d«      }n&| j                  j                  |j                  d«      }||z  r|S |j                  r3t        j                  d|d   › d| j                   j                  › d�«      ‚y)a)  given a :class:`.Table`, return a usable sentinel column or
        columns for this dialect if any.

        Return None if no sentinel columns could be identified, or raise an
        error if a column was marked as a sentinel explicitly but isn't
        compatible with this dialect.

        Nr   zColumn z@ can't be explicitly marked as a sentinel column when using the a�   dialect, as the particular type of default generation on this column is not currently compatible with this dialect's specific INSERT..RETURNING syntax which can receive the server-generated value in a deterministic way.  To remove this error, remove insert_sentinel=True from primary key autoincrement columns; these columns are automatically used as sentinels for supported dialects in any case.)rÅ  Ú"insertmanyvalues_implicit_sentinelÚ _sentinel_column_characteristicsr  Ú
is_autoincÚ_sentinel_col_autoinc_lookuprÃ  Údefault_characterizationÚ _sentinel_col_non_autoinc_lookupÚis_explicitr7   rI  r  )r  r§   Úsentinel_optsÚsentinel_characteristicsÚ	sent_colsÚbitmasks         r  Ú_get_sentinel_column_for_tablez*SQLCompiler._get_sentinel_column_for_tableý  sß   € ð Ÿ™×GÑGˆØ#(×#IÑ#IÐ à,×4Ñ4ˆ	àÐØà#×.Ò.Ø×7Ñ7×;Ñ;Ø(×AÑAÀ1ó‰Gð ×;Ñ;×?Ñ?Ø(×AÑAÀ1óˆGð ˜7Ò"ØÐà#×/Ò/ô ×)Ñ)Ø˜) A™,˜ð (>à—<‘<×$Ñ$Ð%ð &@ð
@óð ð r  c              #  ó8  ‡ ‡‡@‡A‡B‡C‡DK  — ‰ j                   }|€J ‚|j                  sd }	nt        j                  |j                  Ž }	t	        |«      }
|j
                  r‰ j                  j                  sd}d}nz‰ j                  j                  r2|r5‰ j                  r)|j                  �|j                  r|j                  sd}d}n-|j                  r|j                  s‰ j                  rd}d}nd}d}|rNt        t        dt!        ||«      «      d«      D ]*  \  }\  }}t#        ||‰|g|	r	 |	|«      gng d||
||«
      –— Œ, y |r,t%        j&                  ‰ j(                  j*                  |¬«      }nd }|j,                  }|r ||«      }d|› d�}|j/                  |d«      }‰ j                  j0                  }|rAt	        ‰ j2                  «      }t	        |j4                  «      }||z
  }t7        |||z
  |z  «      }t        d	t9        |«      «      }t        d	t9        |«      «      }d }d}|
|z  |
|z  rdnd
z   }|j4                  }|€J ‚|r$|D ����cg c]  \  }}}}|| ||«      |f‘Œ }}}}}d
xŠCŠD‰ j:                  s¢‰ j<                  r‰ j<                  ŠAni ŠAt?        |d
   «      } ˆAˆ fd„Š@|j                  rd}!nd}!ddjA                  ˆ@fd„|D «       «      › |!› d�}"| jC                  ˆAfd„|D «       «      }#| jE                  |#«      D �ci c]  }||d
   |   “Œ }$}dŠBnúd}"t?        «       }#i }$|j                  rd|› d�ŠBnd|› d�ŠBt?        «       }%|j4                  D ]  }&|%jG                  |&d   «       Œ |%r]‰ jH                  }'|'€J ‚t        |'«      D �(�)ch c]  \  }(})|)|%v r|(’Œ }*}(})t7        |*«      ŠCtK        |*«      dz   ŠDt	        |*«      ‰D‰Cz
  k(  sJ ‚‰ jL                  r9tO        jP                  ‰ jR                  «      }+tO        jT                  |+› d�d‰B«      ŠB|�r[|d
| },|d
| }-g |d
| g |d
| |r|}.nt	        |,«      }.‰r,ˆfd„tW        |.«      D «       D �/�0�1cg c]  \  }/}0}1|/|0|1f‘Œ }}0}/}1‰ j:                  �r|jX                  }2|2t	        |,d
   «      k(  rdx}3}4|,}5n|,d
   d ‰C }3|,d
   ‰Dd  }4ˆCˆDfd„|,D «       }5|j                  r'djA                  ˆBfd„t        |,«      D «       «      d d }6n‰B|.z  d d }6‰ jL                  r9|2d
kD  r4|4rJ ‚‰Cdz   }7|2|.z  |7z   }8t[        ˆ fd„tW        |7|8«      D «       «      }9|6|9z  }6|j/                  d|6«      }:t[        t\        j^                  ja                  |5«      «      };|3|;z   |4z   };nÁg }<|$jc                  «       };t        |,«      D ]€  \  }=}|"j/                  dte        |=«      «      }>|j                  r|>j/                  dte        |=«      «      }>|<jg                  |>«       |;jG                  |#D �ci c]  }|› d|=› �||   “Œ c}«       Œ‚ |j/                  ddjA                  |<«      «      }:t#        |:|;||,|	r|-D �?cg c]
  }? |	|?«      ‘Œ c}?ng |.|||d«
      –— |dz  }|r�ŒZy y c c}}}}w c c}w c c})}(w c c}1}0}/w c c}w c c}?w ­w)NTFzKSequence[Tuple[_DBAPISingleExecuteParams, _MutableCoreSingleExecuteParams]]r    ©rº  rB  rC  Ú__EXECMANY_TOKEN__zList[Sequence[Any]]r   c                ó    •— | D ]G  }‰j                  ||«      }|j                  ‰j                  d|iz  ‰j                  d|› d�iz  «      }ŒI |S )Nr  Ú__EXECMANY_INDEX__)rÃ  ræ  rZ  )rŠ  Ú	formattedrF  rl  r  s      €€r  Úapply_placeholderszISQLCompiler._deliver_insertmanyvalues_batches.<locals>.apply_placeholdersÞ  sl   ø€ Øò �CØ,×0Ñ0°°cÓ:�CØ )× 1Ñ 1Ø×)Ñ)¨V°S¨MÑ9Ø×)Ñ)Ø! c UÐ*<Ð#=Ð>ñ?ó!‘Iðð !Ð r  z, _IMV_VALUES_COUNTERr´  rá   c              3  ó:   •K  — | ]  \  }}}} ‰||«      –— Œ y ­wr  r  )rE  r@  rÑ  Ú	bind_keysrÒ  s       €r  rG  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>ì  s(   øè ø€ ò 6á.�A�q˜) Yñ # 9¨i×8ñ6ùr'  c              3  óZ   •K  — | ]"  \  }}}}|D ]  }‰j                  ||«      –— Œ Œ$ y ­wr  r\  )rE  r@  rÔ  rF  rl  s       €r  rG  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>ñ  sC   øè ø€ ò 4á&�A�q˜!˜YØ$ò4ð ð #×&Ñ& s¨C×0ð4Ø0ñ4ùó   ƒ(+z, _IMV_VALUES_COUNTER), z), r(  z\d+rÁ  c              3  óH   •K  — | ]  }‰D ]  \  }}}|› d |› �||f–— Œ Œ y­w)r@  Nr  )rE  r’  rF  Úlen_r  Úgeneric_setinputsizess        €r  rG  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>8  sF   øè ø€ ò /à!Ø.Cò/ñ +˜C  sð  ˜5  % Ð)¨4°Ô5ð/Ø5ñ/ùr•  r  c              3  ó(   •K  — | ]	  }|‰‰ –— Œ y ­wr  r  )rE  rœ  Úexpand_pos_lower_indexÚexpand_pos_upper_indexs     €€r  rG  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>M  s"   øè ø€ ò &àð Ð0Ð1GÔHñ&ùs   ƒc              3  óZ   •K  — | ]"  \  }}‰j                  d t        |«      «      –— Œ$ y­w)Ú_IMV_VALUES_COUNTERN)ræ  r
  )rE  r«  r@  Úexecutemany_values_w_commas      €r  rG  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>T  s3   øè ø€ ò  ñ !%  1ð 7×>Ñ>Ø 5´s¸1³v÷ñ ùrÖ  éþÿÿÿc              3  ó>   •K  — | ]  }‰j                   › |› �–— Œ y ­wr  )r\  )rE  r«  r  s     €r  rG  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>q  s)   øè ø€ ò &àð  ×>Ñ>Ð?À¸sÔCñ&ùrÕ  ÚEXECMANY_INDEX__rÞ  Ú__)4rh  r\  rm  rz  rÌ  rR  rÅ  Úsupports_default_metavalueÚsupports_multivalues_insertr¸  rZ  rX  r_  r^  r;  r	   r  ra  Ú	functoolsÚpartialr½  rÍ  rS  ræ  Úinsertmanyvalues_max_parametersrV  rT  Úminr°  r�  rl  r‰   r‘   r‰  rS  r–  r@  r¦  ra  r|  r}  r\  rÐ  ÚrangerV  rJ  rÜ  rÝ  Úfrom_iterabler¼  r
  rÄ  )Er  r;  r<  Úcompiled_parametersrÙ  Ú
batch_sizerW  rº  ÚimvÚ_sentinel_from_paramsÚ	lenparamsÚuse_row_at_a_timeÚ
downgradedri  ÚparamÚcompiled_paramÚrstÚimv_single_values_exprÚexecutemany_valuesÚ
max_paramsÚtotal_num_of_paramsÚnum_params_per_batchÚnum_params_outside_of_batchÚbatchesÚcompiled_batchesre  rj  rT  r  rF  r3  ÚstÚall_keysÚimv_values_counterÚformatted_values_clauseÚkeys_to_replaceÚbase_parametersÚall_names_we_will_expandr  r@  r#  r  Úall_expand_positionsÚescapedrf  Úcompiled_batchrh  Únew_keyrØ  r  Únum_ins_paramsÚextra_params_leftÚextra_params_rightÚbatch_iteratorÚexpanded_values_stringr   rƒ   rÈ  rb  rc  Úreplaced_values_clausesr«  ÚfmvrŠ  rÒ  rl  rß  rÛ  rÜ  sE   `   `                                                           @@@@@r  Ú!_deliver_insertmanyvalues_batchesz-SQLCompiler._deliver_insertmanyvalues_batches;  sR  þè ø€ ð ×$Ñ$ˆØˆÐˆà×&Ò&Ø$(Ñ!ä$,×$7Ñ$7Ø×(Ñ(ð%Ð!ô ˜
“Oˆ	Ø×Ò t§|¡|×'NÒ'Nð !%ÐØ‰JØ—‘×9Ò9Ù#Ø×$Ò$à×$Ñ$Ð,à×1Ò1Ø×4Ò4ð !%ÐØ‰Jà×+Ò+Ø×,Ò,Ø×$Ò$ð !%ÐØ‰Jà %ÐØˆJáÜ5>ÜØaÜ˜
Ð$7Ó8óð ó6ò Ñ1�Ñ1˜5 .ô -ØØØ)Ø�Gñ 1ñ /¨~Ó>Ñ?ààØØØ+Øóó ðð. áÜ×#Ñ#Ø—‘×7Ñ7Ø%9ô‰Cð
 ˆCà!$×!7Ñ!7ÐÙÙ%(Ð)?Ó%@Ð"à Ð!7Ð 8¸Ð:ÐØ×%Ñ%Ð&8Ð:NÓOˆ	ð —\‘\×AÑAˆ
ÙÜ"% d§o¡oÓ"6ÐÜ#& s×'=Ñ'=Ó#>Ð à#Ð&:Ñ:ð (ô ØàÐ"=Ñ=Ø+ñ,óˆJô Ð,¬d°:Ó.>Ó?ˆÜØ!¤4Ð(;Ó#<ó
Ðð HLÐØˆØ! ZÑ/Ø˜ZÒ'‰A¨Qñ
ˆð !×3Ñ3ÐØ!Ð-Ð-Ð-áð +=÷"ñ "á&�C˜˜d Bð �c™3˜t›9 bÒ)ð"Ðó "ð ;<Ð;ÐÐ!7à�ŠØ×&Ò&Ø%)×%<Ñ%<Ñ"à%'Ð"ä˜: a™=Ó)ˆHõ!ð ×'Ò'Ø%<Ñ"à%'Ð"Ø*+¨D¯I©Ió 6à2Dô6ó -ð ,ð "Ð" !ð''Ð#ð
 '×3Ñ3ó 4à*<ô4ó ˆOð $×.Ñ.¨Ó?öàð �Z ‘] 3Ñ'Ñ'ðˆOð ð
 *,Ñ&à&(Ð#Ü!›eˆOØ ˆOà×'Ò'àÐ.Ð/Ð/GÐHñ +ð 01Ð1GÐ0HÈÐ-LÐ*ä14³Ð$Ø×.Ñ.ò 9�Ø(×/Ñ/°°Q±Õ8ð9ñ (Ø"×.Ñ.�Ø"Ð.Ð.Ð.ô &/¨{Ó%;÷(á!˜˜TØÐ7Ñ7ò ð(Ð$ñ (ô
 *-Ð-AÓ)BÐ&Ü),Ð-AÓ)BÀQÑ)FÐ&äÐ,Ó-Ø-Ð0FÑFòGððGð ×"Ò"ÜŸ)™) D×$GÑ$GÓH�Ü-/¯V©VØ�y Ð$ dÐ,Fó.Ð*ò Ø˜A˜jÐ)ˆEØ-¨a°
Ð;ˆNà$&ˆG�A�jÐ!Ø-/Ð˜Q˜zÐ*áØ%/Ñ"ä%(¨£ZÐ"á$ó/ä%*Ð+=Ó%>ô/÷+ð +á*˜  sð ˜d CÒ(ð+Ð'ò +ð �‹Ø!$×!BÑ!B�ð "¤S¨¨q©£]Ò2Ø=?Ð?Ð%Ð(:Ø%*‘Nà(-¨a©Ð1HÐ2HÐ(IÐ%Ø).¨q©Ð2HÐ2IÐ)JÐ&ô&à!&ô&�Nð
 ×+Ò+àŸ™ó  ô )2°%Ó(8ô	 ó ð �rð.Ñ*ð 4Ð6HÑHØ�rð.Ð*ð ×&Ò&¨>¸AÒ+=ñ  2Ð1Ð1à2°QÑ6�EØ(Ð,>Ñ?À%ÑG�Cô !&ó &ä!& u¨cÓ!2ô&ó !�Ið .DÀiÑ-OÐ*à%.×%6Ñ%6Ø(Ð*@ó&Ð"ô ',Ü—O‘O×1Ñ1°.ÓAó'Ð#ð
 &Ø)ñ*à(ñ)ñ $ð +-Ð'Ø&5×&:Ñ&:Ó&<Ð#ä )¨%Ó 0ò 
‘H�A�uØ1×9Ñ9Ø*¬C°«Fó�Cð ×/Ò/Ø!Ÿk™kÐ*?ÄÀQÃÓH˜à+×2Ñ2°3Ô7Ø'×.Ñ.Ø>MÖN°s˜C˜5  1 #˜¨¨c©
Ñ2ÒNõð
ð &/×%6Ñ%6Ø(Ø—I‘IÐ5Ó6ó&Ð"ô
 )Ø"Ø#Ø'Øñ -ð :HÖH°2Ñ*¨2Õ.ÓHàà"ØØØ'Øóò ð  ˜‰MˆHõI ùõq"ùòPùó<(ùôD+ùòx Oùò IùsX   ‰IZÉY6
É&B"ZÌY>ÌA;ZÎZÎ#B5ZÑZ	Ñ(FZØZ
Ø9ZÙZÙZÙ4&Zc                óø  ‡ ‡&—  |j                   |‰ fi |¤Ž}|j                  }|�||d<   d}n‰ j                   }|r-d‰ _        ‰ j                  s|‰ _        ‰ j
                  s|‰ _        ‰ j                  j                  t        «       t        «       |dœ«       d}d }‰ j                  r|€g }t        j                  ‰ |||fd|i|¤Ž}‰ j                  rB|�@t        |«      }‰ j                  r)‰ j                  �‰ xj                  |z  c_        n|‰ _        |j                  }	|	sn‰ j                  j                   sX‰ j                  j"                  sB‰ j                  j$                  s,t'        j(                  d‰ j                  j*                  z  «      ‚|j,                  rˆ‰ j                  j.                  s,t'        j(                  d‰ j                  j*                  z  «      ‚‰ j0                  s|j2                  r!|j4                  rt'        j(                  d	«      ‚|j                  }	n|j                  }	‰ j6                  }
‰ j                  j                   }d
}|j8                  r!| ‰ j:                  ||j8                  fi |¤Žz  }|dz  }|
j=                  |j>                  «      }|j@                  r‰ jC                  ||«      \  }}|jD                  r‰ jG                  ||«       ||z  }|	s|s,|ddjI                  |	D ��cg c]	  \  }}}}|‘Œ c}}«      z  z  }|jJ                  }d }d }d}‰ j0                  xs |j2                  }|rë|jL                  }|�´|sJ ‚|	D ���ci c]
  \  }}}}||“Œ }}}}g }|D ]7  }||vrd } n/‰ jO                  |«      }|||   vrd } n|j                  |«       Œ9 |€@‰ j                  jP                  tR        jT                  z  rd}n|d   jV                  rJ d«       ‚tY        |«      tY        |«      z   }‰ j[                  |||¬«      }‰ j\                  r|d|z   z  }nd }|j^                  �‡ ‰ j`                  ‰ j                  d   d   fddi|¤Ž}‰ jb                  rL‰ j                  jd                  r6|st        ‰ j                  «      nd }|d‰ jg                  |d¬«      ›|›�z  }�nf|d|z  z  }�n\|	s\|rZ|dz  }|�rPti        d‰ j                  jj                  |	||j4                  |jl                  d u||rt        |«      nd|¬«	      ‰ _7        �nþ|j,                  r*|ddjI                  d„ |jp                  D «       «      ›�z  }�nÈ|�r–|�r!‰ j                  jP                  tR        jr                  z  rú|jt                  sîd}‰ j                  jP                  tR        jv                  z  }|xs dŠ&djI                  |	D ���cg c]  \  }}}}|‰&vr|‘Œ c}}}«      } djI                  ˆ&fd„ty        |	«      D «       «      }!|r%djI                  ˆ&ˆ fd„ty        |	«      D «       «      }"n#djI                  ˆ&fd„ty        |	«      D «       «      }"|	D �#cg c]  }#|#d   ‰&vr|#‘Œ }$}#|d|"› d| › d |!› d!�z  }n3d}|	}$djI                  |	D ��cg c]	  \  }}}}|‘Œ c}}«      } |d"| › d#�z  }ti        d| |$||j4                  |jl                  d u||rt        |«      nd|||¬$«      ‰ _7        n/djI                  |	D ��cg c]	  \  }}}}|‘Œ c}}«      } |d"| › d#�z  }|jl                  �' ‰ j`                  |jl                  fi |¤Ž}%|%r|d|%z   z  }|r‰ j\                  s|d|z   z  }‰ jb                  rE‰ j                  jd                  s/|st        ‰ j                  «      nd }‰ jg                  |d¬«      |z   }‰ j                  j{                  d«       |S c c}}w c c}}}w c c}}}w c c}#w c c}}w c c}}w )%NrÃ  FTr  r   r·  zWThe '%s' dialect with current database version settings does not support empty inserts.zcThe '%s' dialect with current database version settings does not support in-place multirow inserts.zdRETURNING cannot be deterministically sorted when using an INSERT which includes multi-row values().zINSERT zINTO ú (%s)rá   zTsentinel selection rules should have prevented us from getting here for this dialect©r  rH  r«  r7  rd  r¬  rý  z DEFAULT VALUES)rW  rX  rZ  r[  r]  z VALUES c              3  óR   K  — | ]  }d dj                  d„ |D «       «      z  –— Œ! y­w)r4  rá   c              3  ó*   K  — | ]  \  }}}}|–— Œ y ­wr  r  )rE  r@  rñ  s      r  rG  z5SQLCompiler.visit_insert.<locals>.<genexpr>.<genexpr>¢  s   è ø€ Ò L©>¨1¨a°¸¤Ñ Lùs   ‚Nr%  )rE  Úcrud_param_sets     r  rG  z+SQLCompiler.visit_insert.<locals>.<genexpr>   s2   è ø€ ò ð 'ð Ø—y‘yÑ L¸^Ô LÓLõNñùs   ‚%'r  c              3  ó<   •K  — | ]  \  }}|d    ‰vrd|› �–— Œ y­w)r   ÚpNr  )rE  r«  ÚcpÚadd_sentinel_sets      €r  rG  z+SQLCompiler.visit_insert.<locals>.<genexpr>Æ  s0   øè ø€ ò %á˜˜2Ø˜!‘uÐ$4Ñ4ð ˜�s”Gñ%ùrH  c              3  óÀ   •K  — | ]U  \  }\  }}}}|‰vrC‰j                  |j                  |j                  j                  ‰j                  «      d |› �«      n|–— ŒW y­w©r  N)r  r  r  rÅ  )rE  r«  r  r@  r3  r  r  s        €€r  rG  z+SQLCompiler.visit_insert.<locals>.<genexpr>Ô  sn   øè ø€ ò 0ñ 1˜AÑ0  Q¨¨að  #Ð*:Ñ:ð !×1Ñ1Ø #§¡Ø #§¡× @Ñ @ÀÇÁÓ NØ"# A 3 ôð "&ó&ñ0ùs   ƒAAc              3  óD   •K  — | ]  \  }\  }}}}|‰vrd |› �n|–— Œ y­wr  r  )rE  r«  r  r@  r3  r  s        €r  rG  z+SQLCompiler.visit_insert.<locals>.<genexpr>ã  s9   øè ø€ ò 0á0˜AÑ0  Q¨¨að %(Ð/?Ñ$?˜1˜Q˜C™ÀTÓIñ0ùrª  z SELECT z FROM (VALUES (z)) AS imp_sen(z#, sen_counter) ORDER BY sen_counterz	 VALUES (rC  )rR  rS  rT  rV  rW  rX  rZ  r[  r\  r]  r_  )>r®  r;  r£  rM  r¿  r1  rÄ  r‰   r�  r#   Ú_get_crud_paramsrÌ  ra  ro  Úsingle_paramsrÅ  Úsupports_default_valuesrä  Úsupports_empty_insertr7   r   r  Ú_has_multi_parametersrå  rS  Ú
_returningÚ_sort_by_parameter_orderr½  rÕ  rÔ  Úformat_tabler§   r\  r¾  r  r  r‘   Úuse_insertmanyvaluesÚuse_sentinel_columnsrY  rÀ  rn  ry  Ú_insert_sentinelr°  r¡  rW  r³   rÌ  rr  Úcte_follows_insertr	  rQ  Údefault_metavalue_tokenÚ_post_values_clauserh  Úall_multi_paramsr{  Úis_default_metavalue_onlyr|  r;  r™  )'r  Úinsert_stmtr·  rÃ  rà  r1  r  Úcounted_bindparamÚcrud_params_structÚcrud_params_singler½  r   rè  r¼  r@  r3  r&  Únamed_sentinel_paramsÚadd_sentinel_colsr]  r   r  Úparam_namesÚ_params_by_colÚ_add_sentinel_colÚ
param_namer¡  Úselect_textr  Úembed_sentinel_valueÚrender_bind_castsrñ  r£  ÚcolnamesÚcolnames_w_castr  rT  Úpost_values_clauser  s'   `                                     @r  Úvisit_insertzSQLCompiler.visit_insert¬  s%	  ù€ ð ;˜×:Ñ:Ø˜ñ
Ø!#ñ
ˆð $×-Ñ-ˆàÐ#Ø!-ˆBˆ~ÑØ‰HàŸ:™:�~ˆHáØ ˆDŒMØ×)Ò)Ø)6�Ô&Ø×%Ò%Ø%2�Ô"à�
‰
×Ñä#&£5Ü #£Ø)ñô	
ð Ðð !Ðð �?Š?˜|Ð3ð
 !#Ðä!×2Ñ2ØØØØñ	
ð
 0ð
ð ñ
Ðð �?Š?Ð0Ð<Ü #Ð$5Ó 6ÐØ×"Ò"Ø×)Ñ)Ð5Ø×*Ò*Ð.?Ñ?Ö*à->�DÔ*à/×=Ñ=Ðñ #Ø—L‘L×8Ò8Ø—L‘L×;Ò;Ø—L‘L×6Ò6ä×"Ñ"ðà!Ÿ\™\×.Ñ.ñ/óð ð ×.Ò.Ø—<‘<×;Ò;Ü×&Ñ&ð1à37·<±<×3DÑ3DñEóð ð ×'Ò'¨;×+AÒ+AØ×6Ò6Ü×&Ñ&ðIóð ð "4×!AÑ!AÑà!3×!AÑ!AÐà—=‘=ˆØ"&§,¡,×"FÑ"FÐàˆà× Ò ØÐ+�D×+Ñ+Ø˜[×2Ñ2ñØ68ññ ˆDð 	�‰ˆØ×*Ñ*¨;×+<Ñ+<Ó=ˆ
à×ÒØ ×2Ñ2°;À
ÓK‰MˆAˆzà×(Ò(Ø×+Ñ+¨K¸Ô<à�
ÑˆáÑ%<Ø�G˜dŸi™iØ+=×>™-˜!˜T 1 a’Ó>óñ ñ ˆDð  2×FÑFÐØ9=ÐØ ÐØ!Ðà×0Ñ0ÒJ°K×4JÑ4JˆÙØ 2× GÑ GÐØ Ð,Ù+Ð+Ð+ð 3E÷"ð "á.˜˜Q  ;ð ˜Ñ$ð"�ò "ð )+Ð%Ø):ò 
=Ð%Ø(°Ñ>Ø04Ð-ÙØ!%×!CÑ!CØ)ó"�Jð "¨Ð8IÑ)JÑJØ04Ð-ÙØ)×0Ñ0°Õ<ð
=ð )Ð0ð Ÿ™×GÑGÜ6×HÑHòIð -1Ñ)ð $5°QÑ#7×#HÒ#Hð ðDóÐHô "& nÓ!5¼Ð=NÓ8OÑ!O�à#×4Ñ4ØØØ$,ð  5ó  Ðð ×-Ò-Ø˜Ð.Ñ.Ñ.‘ð  $Ðà×ÑÐ)à&˜$Ÿ,™,Ø—
‘
˜2‘Ð3Ñ4ñØBFðØJLñˆKð �yŠy˜TŸ\™\×<Ò<Ù7?¤ D§J¡J¤ÀT�ÙØ×+Ñ+Ø&3Ø04ð ,ô ñ  ðñ ’ð ˜ Ñ+Ñ+’Ù#Ñ(?ØÐ%Ñ%ˆDÚ#Ü):ØØ—L‘L×8Ñ8Ø&Ø%à#×<Ñ<ð $×7Ñ7¸tÐCà%6á2CœÐ-Ô.Èà&7ô*�Ö&ð" ×0Ò0ÙØ—	‘	ñ ð +=×*MÑ*Môô ðñ ŠDò "â!à—L‘L×CÑCÜ2×IÑIòJð
 ,×EÒEð (,Ð$ð —L‘L×CÑCÜ2×JÑJñKð "ð
 $5Ò#:¸Ð à,0¯I©Ið 1C÷ð á,˜C  E¨1ØÐ&6Ñ6ò ôó-Ð)ð  Ÿ9™9ó %ä!*Ð+=Ó!>ô%ó �ñ %ð '+§i¡iô 0ô 5>Ø.ó5ô0ó '‘Oð '+§i¡ió 0ä4=Ø.ó5ô0ó '�Oð !3ö&àØ˜A‘wÐ&6Ñ6ò ð&Ð"ð &ð Ø˜Ð/ð 0 Ø 9Ð:ð ;"Ø"* ð ,+ð+ñ‘ð (-Ð$Ø%7Ð"Ø,0¯I©IØ1C×D™~˜q ! U¨A’UÓDó-Ð)ð ˜)Ð$=Ð#>¸aÐ@Ñ@�ä%6Ø %Ø#<Ø#5Ø.?Ø)4×)MÑ)Mà×3Ñ3¸4Ð?à!2á.?”CÐ)Ô*ÀQà$9Ø"3Ø%9ô&ˆDÕ"ð& )-¯	©	Ø-?×@™>˜1˜a ¨’Ó@ó)Ð%ð �iÐ 9Ð:¸!Ð<Ñ<ˆDà×*Ñ*Ð6Ø!- §¡Ø×/Ñ/ñ"Ø35ñ"Ðñ "Ø˜Ð0Ñ0Ñ0�á D×$BÒ$BØ�CÐ*Ñ*Ñ*ˆDà�9Š9˜TŸ\™\×<Ò<Ù3;œC §
¡
œOÀˆMà×'Ñ'Ø"/Ø,0ð (ó ð ñ	ð ð 	�
‰
�‰�rÔàˆùó] ?ùô0"ùôHùòV&ùó& Eùó2 As$   Ë<_Í_×_$Ù_+Ú_0
Ü_6
c                ó6   — d|d<    |j                   | fddi|¤ŽS )z|Provide a hook to override the initial table clause
        in an UPDATE statement.

        MySQL overrides this.

        Tr�  rø  rç  )r  Úupdate_stmtÚ
from_tableÚextra_fromsrà  s        r  Úupdate_tables_clausez SQLCompiler.update_tables_clause3  s*   € ð ˆˆ8‰Ø,ˆz×,Ñ,¨TÑE¸$ÐEÀ"ÑEÐEr  c                ó   — t        d«      ‚)z|Provide a hook to override the generation of an
        UPDATE..FROM clause.
        MySQL and MSSQL override this.
        zCThis backend does not support multiple-table criteria within UPDATErã  ©r  r@  rA  rB  Ú
from_hintsrà  s         r  Úupdate_from_clausezSQLCompiler.update_from_clause=  s   € ô "ð%ó
ð 	
r  c                óV   — |j                   � | j                  |j                   fi |¤ŽS y)z†provide a hook to override generation after the WHERE criteria
        in an UPDATE statement

        .. versionadded:: 2.1

        N©r~  rÌ  )r  r@  rà  s      r  Úupdate_post_criteria_clausez'SQLCompiler.update_post_criteria_clauseI  ó9   € ð ×,Ñ,Ð8Ø�4—<‘<Ø×1Ñ1ñàñð ð
 r  c                óV   — |j                   � | j                  |j                   fi |¤ŽS y)z…provide a hook to override generation after the WHERE criteria
        in a DELETE statement

        .. versionadded:: 2.1

        NrI  )r  Údelete_stmtrà  s      r  Údelete_post_criteria_clausez'SQLCompiler.delete_post_criteria_clauseZ  rK  r  c                ó´  —  |j                   || fi |¤Ž}t        rt        |t        «      sJ ‚|j                  }|�||d<   d}n| j
                   }|r-d| _        | j                  s|| _        | j                  s|| _        | j                  t        z  r1t        i t        «       «      }| j                  t        z  }|r|| _        nd }d}|j                  }t!        |«      }	|	rDt        t#        |j$                  «      «      }
|D �cg c]	  }||
vsŒ|‘Œ }}|
j'                  |«      }ng }|j$                  h}| j
                  j)                  |||dœ«       d}|j*                  r!| | j,                  ||j*                  fi |¤Žz  } | j.                  ||j$                  |fd|i|¤Ž}t1        j2                  | |||fi |¤Ž}|j4                  }|j6                  r| j9                  ||«      \  }}nd }|j:                  r| j=                  ||«       ||z  }|dz  }|dj?                  d	„ tA        d
|«      D «       «      z  }| jB                  s|jD                  r>| jF                  r2|d| jI                  || jB                  xs |jD                  |¬«      z   z  }|r, | jJ                  ||j$                  ||fd|i|¤Ž}|r|d|z   z  }|jL                  r) | jN                  |jL                  fd|i|¤Ž}|r|d|z   z  } | jP                  |fd|i|¤Ž}|r|d|z   z  }| jB                  s|jD                  r>| jF                  s2|d| jI                  || jB                  xs |jD                  |¬«      z   z  }| jR                  r.|stU        | j
                  «      nd }| jW                  |¬«      |z   }|r|€J ‚|jY                  d¬«       | j
                  j[                  d«       |S c c}w )NrÃ  FTr  zUPDATE r"  z SET rá   c              3  ó6   K  — | ]  \  }}}}|d z   |z   –— Œ y­w)ú=Nr  )rE  r@  r3  rñ  s       r  rG  z+SQLCompiler.visit_update.<locals>.<genexpr>Ä  s)   è ø€ ò 
á!��4˜ ð �3‰J˜Õñ
ùs   ‚zList[Tuple[Any, str, str, Any]]rH  r  ú WHERE r  ÚUPDATE©r«  r«  ).r®  r   rÊ  rJ   r;  r£  rN  r¿  r1  r‡  rŠ  rŽ  r‰   r‹  r"  Ú_extra_fromsr2  r/   r§   r¨   rÄ  rÕ  rÔ  rC  r#   r  r  r\  r¾  r  r  r‘   r	   rS  r#  rW  r¡  rG  r{  r1  rJ  rr  rÌ  r	  r¬  r™  )r  r@  rÃ  rà  r1  r  r"  r‚  rB  Úis_multitableÚ
main_fromsrƒ  Úrender_extra_fromsr-  rè  r¼  r0  Úcrud_paramsr½  Úextra_from_textr„  Úulcr  s                          r  Úvisit_updatezSQLCompiler.visit_updatek  sx  € ð ;˜×:Ñ:Ø˜ñ
Ø!#ñ
ˆõ Ü˜m¬^Ô<Ð<Ð<Ø#×-Ñ-ˆàÐ#Ø!-ˆBˆ~ÑØ‰HàŸ:™:�~ˆHáØ ˆDŒMØ×)Ò)Ø)6�Ô&Ø×%Ò%Ø%2�Ô"à�<‰<Ô4Ò4Ü$ R¬«Ó/ˆKØŸ<™<¬,Ñ6ˆLÙØ#.�Õ àˆKØ ˆLà#×0Ñ0ˆÜ˜[Ó)ˆáäœ]¨;×+<Ñ+<Ó=Ó>ˆJà&ö"Ø¨!°:Ò*=’ð"Ðð "ð )×.Ñ.¨{Ó;‰Oà!#ÐØ*×0Ñ0Ð1ˆOà�
‰
×Ñà#2Ø /Ø)ñô	
ð ˆà× Ò ØÐ+�D×+Ñ+Ø˜[×2Ñ2ñØ68ññ ˆDð /�T×.Ñ.ØØ×ÑØñ
ð $ð	
ð
 ñ
ˆ
ô "×2Ñ2Ø�+˜}¨hñ
Ø:<ñ
Ðð )×6Ñ6ˆà×ÒØ(,×(>Ñ(>Ø˜Zó)Ñ%ˆM™:ð !ˆMà×(Ò(Ø×+Ñ+¨K¸Ô<à�
Ñˆà�‰ˆØ�—	‘	ñ 
ä%)Ø1°;ó&ô
ó 
ñ 	
ˆð ×"Ò" k×&<Ò&<Ø×-Ò-Ø˜˜d×3Ñ3ØØ×+Ñ+ÒE¨{×/EÑ/EØ(0ð 4ó ñ ñ �ñ Ø5˜d×5Ñ5ØØ×!Ñ!Ø"Øñ	ð
 (ðð ñˆOñ Ø˜˜oÑ-Ñ-�à×&Ò&Ø1�×1Ñ1Ø×+Ñ+ñØ9DðØHJñˆAñ Ø˜	 A™Ñ%�à.ˆd×.Ñ.Øñ
Ø%0ð
Ø46ñ
ˆñ Ø�C˜#‘IÑˆDð ×#Ò# {×'=Ò'=Ø×0Ò0Ø�C˜$×/Ñ/ØØ×'Ñ'ÒA¨;×+AÑ+AØ$,ð 0ó ñ ñ ˆDð �9Š9Ù3;œC §
¡
œOÀˆMØ×*Ñ*¸Ð*ÓGÈ$ÑNˆDáØÐ*Ð*Ð*Ø×Ñ xÐÔ0à�
‰
�‰�rÔàˆùòW"s   Ä	OÄOc                ó   — t        d«      ‚)zÀProvide a hook to override the generation of an
        DELETE..FROM clause.

        This can be used to implement DELETE..USING for example.

        MySQL and MSSQL override this.

        zCThis backend does not support multiple-table criteria within DELETErã  ©r  rM  rA  rB  rF  rà  s         r  Údelete_extra_from_clausez$SQLCompiler.delete_extra_from_clause  s   € ô "ð%ó
ð 	
r  c                ó.   —  |j                   | fdddœ|¤ŽS )NT)r�  rø  rç  )r  rM  rA  rB  rà  s        r  Údelete_table_clausezSQLCompiler.delete_table_clause  s,   € Ø,ˆz×,Ñ,Øð
Ø dñ
Ø.0ñ
ð 	
r  c                ó&  —  |j                   || fi |¤Ž}|j                  }|�||d<   d}n| j                   }|r-d| _        | j                  s|| _        | j
                  s|| _        | j                  t        z  r1t        i t        «       «      }| j                  t        z  }|r|| _        nd }d}|j                  }|j                  hj                  |«      }	| j                  j                  |	|	|dœ«       d}
|j                   r!|
 | j"                  ||j                   fi |¤Žz  }
|
dz  }
	 | j%                  ||j                  ||¬«      }t+        j,                  | |||fi |¤Ž |j.                  r| j1                  ||«      \  }}nd }|j2                  r| j5                  ||«       |
|z  }
| j6                  s|j8                  r>| j:                  r2|
d| j=                  || j6                  xs |j8                  |¬	«      z   z  }
|r, | j>                  ||j                  ||fd
|i|¤Ž}|r|
d|z   z  }
|j@                  r) | jB                  |j@                  fd
|i|¤Ž}|r|
d|z   z  }
 | jD                  |fd
|i|¤Ž}|r|
d|z   z  }
| j6                  s|j8                  r>| j:                  s2|
d| j=                  || j6                  xs |j8                  |¬	«      z   z  }
| jF                  r.|stI        | j                  «      nd }| jK                  |¬«      |
z   }
|r|€J ‚|jM                  d¬«       | j                  jO                  d«       |
S # t&        $ r@ | j%                  ||j                  |«      }|r| j)                  |j                  |¬«      }Y �ŒEw xY w)NrÃ  FTr  zDELETE úFROM )r"  rH  r  r"  rR  r  ÚDELETErT  r«  )(r®  r;  r£  rL  r¿  r1  r‡  rŠ  rŽ  r‰   r‹  r"  rU  r§   r¨   rÄ  rÕ  rÔ  ra  Ú	TypeErrorrÌ  r#   r  r\  r¾  r  r  rS  r#  rW  r¡  r_  r{  r1  rN  rr  rÌ  r	  r¬  r™  )r  rM  rÃ  rà  r1  r  r"  r‚  rB  r-  rè  r¼  r@  r½  rZ  r„  Údlcr  s                     r  Úvisit_deletezSQLCompiler.visit_delete  s  € Ø:˜×:Ñ:Ø˜ñ
Ø!#ñ
ˆð $×-Ñ-ˆàÐ#Ø!-ˆBˆ~ÑØ‰HàŸ:™:�~ˆHáØ ˆDŒMØ×)Ò)Ø)6�Ô&Ø×%Ò%Ø%2�Ô"à�<‰<Ô4Ò4Ü$ R¬«Ó/ˆKØŸ<™<¬,Ñ6ˆLÙØ#.�Õ àˆKØ ˆLà#×0Ñ0ˆà&×,Ñ,Ð-×3Ñ3°KÓ@ˆØ�
‰
×Ñà#2Ø /Ø)ñô	
ð ˆà× Ò ØÐ+�D×+Ñ+Ø˜[×2Ñ2ñØ68ññ ˆDð 	�‰ˆð	MØ×1Ñ1ØØ×!Ñ!ØØ'ð	 2ó ˆJô 	×Ñ˜d K°ÀÑOÈBÒOà×ÒØ(,×(>Ñ(>Ø˜Zó)Ñ%ˆM™:ð !ˆMà×(Ò(Ø×+Ñ+¨K¸Ô<à�
Ñˆð ×#Ò# {×'=Ò'=Ø×,Ò,Ø�C˜$×/Ñ/ØØ×'Ñ'ÒA¨;×+AÑ+AØ$,ð 0ó ñ ñ ˆDñ Ø;˜d×;Ñ;ØØ×!Ñ!ØØñ	ð
 (ðð ñˆOñ Ø˜˜oÑ-Ñ-�à×&Ò&Ø1�×1Ñ1Ø×+Ñ+ñØ9DðØHJñˆAñ Ø˜	 A™Ñ%�à.ˆd×.Ñ.Øñ
Ø%0ð
Ø46ñ
ˆñ Ø�C˜#‘IÑˆDð ×#Ò# {×'=Ò'=Ø×0Ò0Ø�C˜$×/Ñ/ØØ×'Ñ'ÒA¨;×+AÑ+AØ$,ð 0ó ñ ñ ˆDð �9Š9Ù3;œC §
¡
œOÀˆMØ×*Ñ*¸Ð*ÓGÈ$ÑNˆDáØÐ*Ð*Ð*Ø×Ñ xÐÔ0à�
‰
�‰�rÔàˆøôY ò 	Mð ×1Ñ1Ø˜[×.Ñ.°óˆJñ Ø—L‘L ×!2Ñ!2À�LÓL�úð	Mús   Ä+M ÍANÎNc                ó>   — d| j                   j                  |«      z  S )NzSAVEPOINT %s©r½  Úformat_savepoint©r  Úsavepoint_stmtrà  s      r  Úvisit_savepointzSQLCompiler.visit_savepoint›  s   € Ø §¡× >Ñ >¸~Ó NÑNÐNr  c                ó>   — d| j                   j                  |«      z  S )NzROLLBACK TO SAVEPOINT %sri  rk  s      r  Úvisit_rollback_to_savepointz'SQLCompiler.visit_rollback_to_savepointž  s#   € Ø)¨D¯M©M×,JÑ,JØó-
ñ 
ð 	
r  c                ó>   — d| j                   j                  |«      z  S )NzRELEASE SAVEPOINT %sri  rk  s      r  Úvisit_release_savepointz#SQLCompiler.visit_release_savepoint£  s#   € Ø%¨¯©×(FÑ(FØó)
ñ 
ð 	
r  )rÅ  rv   r;  r³  rÁ  rÀ  r…  r?  r†  r2  r‡  rˆ  r›  zOptional[SQLCompiler]rê  r   )r"  rd  )r"  rR  )r"  zDict[Any, Any])r¶  r@   r"  r#  )r"  zMutableMapping[CTE, str])r"  zVMutableMapping[str, Union[_BindProcessorType[Any], Sequence[_BindProcessorType[Any]]]])r"  zFrozenSet[str])r"  r9   )NT)rï  rû  rñ  r2  r"  r:  )NNTNTFN)rï  rû  rð  rü  rñ  r2  r  úOptional[int]r  r2  rƒ  r2  rx  z_CoreSingleExecuteParams | Noner"  ru   ©F)r<  ru   r„  r2  r"  r:  )r"  zCallable[[Any], str]rø  ©Nr  )NFFNr  F)NTr  N)r¬   úColumnClause[Any]r€  úOptional[_ResultMapAppender]rÉ  r2  r�  r  rÊ  z Optional[_AmbiguousTableNameMap]rê  r   r"  r
  r  )NF)r3  rT   rà  r   r"  r
  )r3  rU   rà  r   r"  r
  )r3  rR   rà  r   r"  r
  )rv  úFunction[Any]r€  rv  rê  r   r"  r
  )rv  rw  rê  r   r"  r
  )FN)NFNN)
r«   úBinaryExpression[Any]rF  r
  r&  r2  rà  r   r"  r
  )r«   rx  rm  r   rà  r   r"  r
  )FFFFFF)rñ  r   r   zsqltypes.TypeEngine[Any]r"  r
  )r¨  r
  r  rL   r"  r
  )r  r
  r"  r
  )r°  r
  r  r
  r"  r
  )FFNNNN)r  r
  rƒ  r2  r„  r2  r°  rd  r…  zOptional[TypeEngine[Any]]r¶  zOptional[Set[str]]r·  rf  rà  r   r"  r
  )rÀ  rc   r�  r2  rÙ  r2  rÚ  zOptional[_FromHintsType]rÃ  úOptional[CTE]r"  zOptional[FromLinter]r»  zselectable._CTEOptsrê  r   r"  rd  )	FFFNFFNNF)FNN)
r  r
  r  r
  r  r  r   r  r"  r#  )NNNTFFT)r§   rd   rè  rd  r"  rd  )r¾  r0  r�  r2  rù  r2  r"  z7Tuple[AbstractSet[FromClause], AbstractSet[FromClause]])FFNNNFN)r³   r6  r"  zTuple[str, _FromHintsType]©r³   zSelect[Any]rà  r   r"  r
  ©
r¾  rI   r   zSequence[_ColumnsClauseElement]r  r2  rà  r   r"  r
  )NFF)	FFFNTNNNF)r§   r^   r"  rY  )r;  r
  r<  rq   rì  z%List[_MutableCoreSingleExecuteParams]rÙ  rd  rí  rU  rW  r2  rº  r¹  r"  z Iterator[_InsertManyValuesBatch]r�  )r@  rH   rà  r   r"  rd  )rM  rF   rà  r   r"  rd  )r@  rH   rÃ  ry  rà  r   r"  r
  (
  r  r  r  r  ÚEXTRACT_MAPrŽ  r+   r   rI  r  rý  ÚCOMPOUND_KEYWORDSr¯  rL  rM  rN  rP  rQ  rS  rT  rW  rX  rY  r]  r^  r_  r`  ra  rb  rc  re  rg  rh  ri  rô  rj  rk  rÿ  rl  rŒ  Úpostfetch_lastrowidrn  r@  ro  rp  rq  r|  r~  r=  rá  ÚpatternrÏ  rà  rÎ  r  rÓ  rz  r‰  rÑ  rO  r£  Úro_memoized_propertyr§  r©  r®  r±  Úmemoized_propertyr³  r·  Úmemoized_instancemethodrº  Ú
contextlibÚcontextmanagerr¿  r™  r˜  rò  rõ  rø  rå  rû  rò  r  rï  rš  Úpreload_modulerT  rY  rt  r|  r~  r‹  r‘  r”  r¥  r«  r·  r»  r¿  rÐ  rÖ  rÚ  rÜ  rá  ré  rÄ  rö  rø  rÿ  r  r  r  r  r'  r1  r7  r;  r=  r5  rG  rO  rS  rW  rc  rq  rt  ry  r�  r„  rŒ  r‘  r–  r“  r¤  r¡  rž  r¹  rµ  rC  rÆ  rÍ  rÖ  rÙ  rÞ  rá  ræ  ré  rõ  ró  r  r9  rä  r)  r+  r.  r1  r3  rè  rË  rÌ  r<  r>  rE  rI  rM  rQ  rT  rV  rX  rZ  r\  r^  r`  rb  rB  rH  rL  rP  rp  rr  rv  ry  r{  r~  r‘  r  r2   r8  r   rˆ  r¯  r®  r²  rï  r  r)   Ú_CTEOptsrÏ  rô  rö  ró  r  rò  r  r  r  r  rØ  r  r&  r$  r  r?  r:  rD  rG  Útypingr   r  rQ  rL  rU  rr  r]  rZ  ra  rÔ  r	  r‹  r^  r²  r³  r�  r¡  r½  r¼  r´  rº  r¾  r1   Ú
CLIENTSIDErn  rz  ÚSENTINEL_DEFAULTr  rv  rw  rx  rÅ  r¨   ru  rÃ  rË  r  r>  rC  rG  rJ  rN  r\  r_  ra  rg  rm  ro  rq  r  r  r  r÷  r÷  d  s  … ñð €Kð 	ˆ×ÑàØØØØØØØñ	ó	
ð Ð ;ó ðð: /Ó.Ø6Ó6à€Fà)Ðà€HˆdÓØ€HˆdÓØ€HˆdÓðð
 +Ó*ð%ð .0€OÐ*Ó/ðð .0€OÐ*Ó/ð$ð BFÐÐ>ÓEðð €K�Óà(Ó(ØIà-Ó-ð6ð %Ó$ð4ð ',Ð˜tÓ+ðð 5:Ð+¨TÓ9ðð
 "€O�TÓ!ðð ÓØBà!Ó!ðð %(Ó'ðð
 .Ó-ðð
 &+Ð˜dÓ*ðð "€O�TÓ!ðð "Ð�dÓ!ðð ).Ð Ó-ðð !€N�DÓ ðð !&Ð˜Ó%ðð =AÐ Ð"9Ó@ðð +/Ð˜-Ó.ðð
 6:ÐÐ2Ó9à59ÐÐ2Ó9à=AÐÐ:ÓAá<E»KÐÐ9ÓGðñ
 :C»ÐÐ6ÓDðð
 8<·±ÐÐ4ÓFð 'Ó&ðð
 Ððð  Ðð%ð 	ð ð ó ðð (,€KÐ$Ó+ðð .2ÐÐ*Ó1à.2ÐÐ+Ó2à€FˆDÓà
,Ó,ð 3Ó2ð GÓFàÓà&˜BŸJ™JÐ'LÓMÐØ"˜Ÿ
™
Ð#4Ó5ÐØ$˜"Ÿ*™*Ø×$Ñ$Ð
% QÐ'<×'DÑ'DÐ&EÐFóÐð %/ B§J¡JØ
Ð×'Ñ'Ð(Ð)ó%Ð!ð '1 b§j¡jØ
Ð!×)Ñ)Ð*Ð+ó'Ð#ð !Ó Ø3Ó3àñ#ó ð#ð ñCó ðCð )-Ø/3Ø %Ø%Ø59ðUàðUð +ðUð &ð	Uð
 -ðUð ðUð ðUð 3ðUð ôUðn ó=ó ð=ð  
×Ñóó ðð0 ñ(ó ð(ð ñMó ðMð* ñGó ðGð 
×Ñóó ðôKð 
×!Ñ!óó "ðð. ×Ññó ðò.GòRMð^ 
×Ñð!
ð
ó!
ó ð!
ðF 
×Ñó

ó ð

ò#ð óó ðð
 6:Ø!ñ
à2ð
ð ð
ð 
ô	
ð2 6:ØGKØ!Ø'+ØØ %Ø=AñIà2ðIð EðIð ð	Ið
 %ðIð ðIð ðIð ;ðIð 
)ôIðV 
×!Ñ!ñ$ó "ð$ðL ñ
3ó ð
3ð  %ñVà3ðVð ðVð 
ô	Vðp €T×ÑÐ3Ó4ñ
ó 5ð
ð 4Ó3à	×Ñóó ðð 
×ÑØ€T×ÑÐ3Ó4ñPó 5ó ðPðd 
×ÑØ€T×ÑÐ3Ó4ñ)ó 5ó ð)ôVð Øô	Nô`OòOð .3ô-
ð` .3ô+ð` Ø!Ø#Ø"ØØô6òp
ò
/ð ;?Ø"Ø.0ØEIñ9Oà!ð9Oð 8ð9Oð ð	9Oð
 ,ð9Oð #Cð9Oð ð9Oð 
ô9Oòv
ò
òò
òò
ô

ò84ôKð$ 05ô4ôlôôò
òò"@òIòJòLòò&ò&Kò
ò%ò4
ò@
ò
òFò*
ð (,ô#òJ
ò7ð ;?ñ0àð0ð 8ð0ð ð	0ð
 
ô0òd8ò
ôCð 04ôAòF3ò-ò-ð
 ACô.ò`ò6ò$BòBò
ò

ò4ò$
ð ;?ôH*òTj1ð^ ØØØ ô6òp8òò
ò
ò
ð  %ñ	à%ðð ðð ð	ð
 ðð 
ôò2GòGð 
×ÑñIó ðIòJòAòEòBòFòAòEòBòFòAòEòBòFò

ò	
òAòEò
ò
ð
Ø+ð
Ø7:ð
ØBEð
à	ô
ð
Ø+ð
Ø7:ð
ØBEð
à	ô
ð
Ø+ð
Ø7:ð
ØBEð
à	ô
ð ;?ô 8ð $ØØ"ØØ Øônò`$ð $Ø!%ó	#DðJ%Øð%Ø!9ð%à	ô%òNðØðØ&6ðà	ôô*$ô$ðR #ØØ&*Ø48Ø48Ø15ñFàðFð ðFð ð	Fð
 $ðFð 2ðFð  2ðFð /ðFð ðFð 
ôFòPCð ØØ.2Ø&*Ø,0Ø(;¨
×(;Ò(;¸EÓ(BðVàðVð ðVð ð	Vð
 ,ðVð $ðVð *ðVð &ðVð ðVð 
ôVòp3ò0ð ØØØØØØØØôcòJ0ò?ôò"ð EIô/òb9ò(ð
àð
ð ð
ð !ð	
ð
 ð
ð 
ô
ð4 EIô
ð8 ØØ Ø"Ø Ø %ØôRJòhòðØðØ'4ðà	ôò
ò$ð .Ó-à×ÓØ1˜t×1Ñ1Ø¡£Ð-°Á	ÃÐ/LÐMó 
Ðð
 ,1ô
ð,1Ø(ð1Ø26ð1ØAEð1à	@ô1ð6 '+Ð Ó*ðð ØØØØØØôaðF
!Ø.ð
!à	#ô
!ò,ò\bóHð Ø %õ3ójõ7ó 	ó
óð1àð1ð 8ð1ð
 "ð1ð ð1ð 
õ1ó@ð ØØ+0õ'ðX ØØØØØØ!%ØØõ4õl
ó<
)ð" (: t×'9Ñ'9à,×7Ò7Ø,×>Ò>à,×=Ò=Ø,×>Ò>à,×1Ò1Ø,×>Ò>à,×5Ò5Ø,×5Ò5à,×5Ò5Ø,×5Ò5à,×?Ò?Ø,×?Ò?ð#	
ó(Ð$ð, $D×#IÒ#Ià,×1Ò1Ø,×:Ò:ð	
ó$Ð ð<Øð<à	(õ<ð|oàðoð -ðoð Cð	oð
  Cðoð ðoð "&ðoð ?ðoð 
*õoðd AEõEóNFô

ðØ!ðØ),ðà	öð"Ø!ðØ),ðà	öð( '+ñTàðTð $ðTð ð	Tð
 
öTôl
ô 
ö
CôJOô
õ

r  r÷  c                  óÈ   ‡ — e Zd ZdZdd„Zd„ Z ej                  d«      ˆ fd„«       Zd„ Z	d„ Z
d„ Zd	„ Z	 	 	 	 	 	 	 	 	 	 dd
„Zd„ Zd„ Zd„ Zd„ Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚStrSQLCompilera“  A :class:`.SQLCompiler` subclass which allows a small selection
    of non-standard SQL features to render into a string value.

    The :class:`.StrSQLCompiler` is invoked whenever a Core expression
    element is directly stringified without calling upon the
    :meth:`_expression.ClauseElement.compile` method.
    It can render a limited set
    of non-standard SQL constructs to assist in basic stringification,
    however for more substantial custom or dialect-specific SQL constructs,
    it will be necessary to make use of
    :meth:`_expression.ClauseElement.compile`
    directly.

    .. seealso::

        :ref:`faq_sql_expression_string`

    c                ó"   — |j                   rdS dS )Nræ   r´  )r•  r–  s      r  r^  z$StrSQLCompiler.get_select_precolumns½  s   € Ø$×.Ò.ˆ{Ð6°BÐ6r  c                 ó   — y)Nz<name unknown>r  rº  s     r  r»  z$StrSQLCompiler._fallback_column_nameÀ  s   € Ør  zsqlalchemy.engine.urlc                óT  •— |j                   dk7  r‰t        j                  j                  } |j                  j                  |j                   «      j                  «       «       }|j                  |d | ¬«      }t        |t        «      s |j                  |fi |¤ŽS t        ‰| �1  ||«      S )Nr¹   )r›  )Ústringify_dialectr+   rP  Ú
engine_urlÚURLr­   Úget_dialectÚstatement_compilerrÊ  r‹  rÌ  rÔ  rá  )r  rÞ  rß  rà  ÚurlrÅ  Úcompilerr×  s          €r  rá  z,StrSQLCompiler.visit_unsupported_compilationÃ  s˜   ø€ à×$Ñ$¨	Ò1Ü—.‘.×+Ñ+ˆCØM�c—g‘g—n‘n W×%>Ñ%>Ó?×KÑKÓMÓOˆGà×1Ñ1Ø˜°4ð 2ó ˆHô ˜h¬Ô7Ø'�x×'Ñ'¨Ñ6°2Ñ6Ð6ä‰wÑ4°W¸cÓBÐBr  c                ó~   —  | j                   |j                  fi |¤Ž›d | j                   |j                  fi |¤Ž›d�S )NrF  rG  )rÌ  r’   r¦   rÕ  s       r  Úvisit_getitem_binaryz#StrSQLCompiler.visit_getitem_binaryÑ  s:   € àˆD�L‰L˜Ÿ™Ñ+¨Ó+ØˆD�L‰L˜Ÿ™Ñ,¨Ó,ð
ð 	
r  c                ó*   —  | j                   ||fi |¤ŽS r  ©r—  rÕ  s       r  Úvisit_json_getitem_op_binaryz+StrSQLCompiler.visit_json_getitem_op_binary×  ó   € Ø(ˆt×(Ñ(¨°Ñ@¸RÑ@Ð@r  c                ó*   —  | j                   ||fi |¤ŽS r  r™  rÕ  s       r  Ú!visit_json_path_getitem_op_binaryz0StrSQLCompiler.visit_json_path_getitem_op_binaryÚ  r›  r  c                ó@   — d| j                   j                  |«      › d�S )Nz<next sequence value: ú>)r½  Úformat_sequencer§  s      r  r¡  zStrSQLCompiler.visit_sequenceÝ  s#   € à$ T§]¡]×%BÑ%BÀ8Ó%LÐ$MÈQÐOð	
r  c          
     óž   — t        j                  |«      D �cg c]  }| j                  d |ddi «      ‘Œ }}ddj                  |«      z   S c c}w )NTFrž  rá   )r!   rŸ  r$  r‘   )r  r¾  r   r  rà  r¦  r  s          r  r¡  zStrSQLCompiler.returning_clauseâ  sZ   € ô ×+Ñ+¨NÓ;ö
àð ×%Ñ% d¨A¨t°U¸BÕ?ð
ˆð 
ð ˜dŸi™i¨Ó0Ñ0Ð0ùò	
s   ˜A
c                óP   ‡ ‡‡— d‰d<   ddj                  ˆˆˆ fd„|D «       «      z   S )NTr�  rc  rá   c              3  óH   •K  — | ]  } |j                   ‰fd ‰i‰¤Ž–— Œ y­w©rÚ  Nrç  ©rE  r„  rF  rà  r  s     €€€r  rG  z4StrSQLCompiler.update_from_clause.<locals>.<genexpr>ô  s0   øè ø€ ò #
àð !ˆA× Ñ  ÑB°ÐB¸rÕBñ#
ùr•  r%  rE  s   `   ``r  rG  z!StrSQLCompiler.update_from_clauseð  s3   ú€ ð ˆˆ8‰Ø˜Ÿ™õ #
à ô#
ó 
ñ 
ð 	
r  c                óP   ‡ ‡‡— d‰d<   ddj                  ˆˆˆ fd„|D «       «      z   S )NTr�  rá   c              3  óH   •K  — | ]  } |j                   ‰fd ‰i‰¤Ž–— Œ y­wr¤  rç  r¥  s     €€€r  rG  z:StrSQLCompiler.delete_extra_from_clause.<locals>.<genexpr>ý  s0   øè ø€ ò  
àð !ˆA× Ñ  ÑB°ÐB¸rÕBñ 
ùr•  r%  r^  s   `   ``r  r_  z'StrSQLCompiler.delete_extra_from_clauseù  s3   ú€ ð ˆˆ8‰Ø�d—i‘iõ  
à ô 
ó 
ñ 
ð 	
r  c                 ó   — y)NzSELECT 1 WHERE 1!=1r  r÷  s      r  ró  z#StrSQLCompiler.visit_empty_set_expr  s   € Ø$r  c                ó   — d|z  S )Nz[%s]r  rB  s      r  r:  z!StrSQLCompiler.get_from_hint_text  s   € Ø˜‰}Ðr  c                ó<   •— t        ‰| �  |fd|j                  i|¤ŽS )Nr…  )rÔ  rŒ  r  )r  rˆ  rà  r×  s      €r  rŒ  z+StrSQLCompiler.visit_aggregate_strings_func  s,   ø€ Ü‰wÑ3Øñ
Ø"$§'¡'ð
Ø-/ñ
ð 	
r  c                ó*   —  | j                   |dfi |¤ŽS )Nz
 <regexp> ©rè  rÕ  s       r  rv  z+StrSQLCompiler.visit_regexp_match_op_binary  s   € Ø,ˆt×,Ñ,¨V°\ÑHÀRÑHÐHr  c                ó*   —  | j                   |dfi |¤ŽS )Nz <not regexp> r¬  rÕ  s       r  ry  z/StrSQLCompiler.visit_not_regexp_match_op_binary  s   € Ø,ˆt×,Ñ,¨VÐ5EÑLÈÑLÐLr  c                ó€   — d |j                   j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›d�S )Nz<regexp replace>(rá   rC  )r’   rè  r¦   rÕ  s       r  r{  z-StrSQLCompiler.visit_regexp_replace_op_binary  s>   � à*ˆF�K‰K×*Ñ*¨4Ñ6°2Ó6Ø+ˆF�L‰L×+Ñ+¨DÑ7°BÓ7ð
ð 	
r  c                ó€   — d |j                   j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›d�S )Nz	TRY_CAST(rã   rC  )rL  rè  rà  )r  r	   rê  s      r  Úvisit_try_castzStrSQLCompiler.visit_try_cast  s>   � à*ˆD�K‰K×*Ñ*¨4Ñ:°6Ó:Ø.ˆD�O‰O×.Ñ.¨tÑ>°vÓ>ð
ð 	
r  rz  r{  )r  r  r  r  r^  r»  r+   r…  rá  r—  rš  r�  r¡  r¡  rG  r_  ró  r:  rŒ  rv  ry  r{  r°  r  r  s   @r  r‹  r‹  ©  s°   ø„ ñó&7ò ð €T×ÑÐ0Ó1óCó 2ðCò
òAòAò
ð
1àð1ð 8ð1ð
 "ð1ð ð1ð 
ó1ò
ò
ò%òô
ò
IòMò
ö
r  r‹  c                  óÎ  — e Zd ZdZer	 	 	 d;	 	 	 	 	 	 	 	 	 d<d„Zej                  d=d„«       Zej                  d„ «       Z
	 	 	 d>	 	 	 	 	 	 	 d?d„Zd„ Zd„ Zd	„ Zd
„ Zd@d„ZdAd„Z	 	 	 	 	 	 	 	 dBd„Z	 dC	 	 	 	 	 	 	 	 	 dDd„ZdEd„Z	 dCd„Zd„ Zd„ ZdFd„Z	 dGd„Zd„ Z	 dE	 	 	 	 	 dHd„Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"dId„Z#dCd„Z$d „ Z%d!„ Z&	 	 	 	 	 	 dJd"„Z'dKd#„Z(dKd$„Z)dLd%„Z*dMd&„Z+d'„ Z,d(„ Z-d)„ Z.	 	 	 	 	 	 dNd*„Z/	 	 	 	 	 	 dOd+„Z0d,„ Z1	 	 	 	 	 	 dPd-„Z2	 	 	 	 	 	 dQd.„Z3	 	 	 	 	 	 dNd/„Z4	 	 	 	 	 	 dOd0„Z5	 	 	 	 	 	 dPd1„Z6dRd2„Z7	 	 	 	 	 	 dPd3„Z8	 	 	 	 dSd4„Z9	 	 	 	 dSd5„Z:	 	 	 	 dSd6„Z;dTd7„Z<dSd8„Z=d9„ Z>d:„ Z?y)UÚDDLCompilerTc                 ó   — y r  r  rÎ  s         r  rÑ  zDDLCompiler.__init__%  s   € ð r  c                óf   — | j                   j                  | j                   d | j                  ¬«      S )NrÍ  )rÅ  r“  rº  rK  s    r  rå  zDDLCompiler.sql_compiler.  s/   € à�|‰|×.Ñ.Ø�L‰L˜$°T×5NÑ5Nð /ó 
ð 	
r  c                ó.   — | j                   j                  S r  )rÅ  rß  rK  s    r  Útype_compilerzDDLCompiler.type_compiler4  s   € à�|‰|×2Ñ2Ð2r  Nc                 ó   — y r  r  rî  s       r  rò  zDDLCompiler.construct_params8  s   € ð r  c                óþ  — |j                   }t        |j                  t        j                  «      r¦|j                  «       }| j                  }|j                  |j                  «      }t        |«      dk(  r|d   d}}n
|d   |d   }}|j                  d|«       |j                  d|«       |j                  d|j                  |j                  «      «       | j                  j                  |j                  |z  «      S )Nr    r   r´  r«  r§   r(   r±  )ÚcontextrÊ  Útargetr(   r^   r¼  r½  Úformat_table_seqrÌ  r  r%  rå  ré  r;  )r  Úddlrê  r¹  r½  Úpathr§   Úschs           r  Ú	visit_ddlzDDLCompiler.visit_ddl@  sÍ   € à—+‘+ˆÜ�c—j‘j¤&§,¡,Ô/Ø—l‘l“nˆGà—}‘}ˆHØ×,Ñ,¨S¯Z©ZÓ8ˆDÜ�4‹y˜AŠ~Ø! !™W b�s‘à! "™X t¨A¡w�s�à×Ñ˜w¨Ô.Ø×Ñ˜x¨Ô-Ø×Ñ˜z¨8×+@Ñ+@ÀÇÁÓ+LÔMà× Ñ ×2Ñ2°3·=±=À7Ñ3JÓKÐKr  c                óx   — d}|j                   r|dz  }|| j                  j                  |j                  «      z   S )NzCREATE SCHEMA úIF NOT EXISTS )Úif_not_existsr½  Úformat_schemarÞ  )r  r­   rà  rè  s       r  Úvisit_create_schemazDDLCompiler.visit_create_schemaS  s9   € ØˆØ×ÒØÐ$Ñ$ˆDØ�d—m‘m×1Ñ1°&·.±.ÓAÑAÐAr  c                óž   — d}|j                   r|dz  }|| j                  j                  |j                  «      z  }|j                  r|dz  }|S )NzDROP SCHEMA ú
IF EXISTS ú CASCADE)Ú	if_existsr½  rÃ  rÞ  Úcascade©r  Údroprà  rè  s       r  Úvisit_drop_schemazDDLCompiler.visit_drop_schemaY  sK   € ØˆØ�>Š>Ø�LÑ ˆDØ�—‘×+Ñ+¨D¯L©LÓ9Ñ9ˆØ�<Š<Ø�JÑˆDØˆr  c                ó,  — |j                   }| j                  }d}|j                  r!|dj                  |j                  «      dz   z  }|dz  }|j                  r|dz  }||j                  |«      dz   z  }| j                  |«      }|r||dz   z  }|dz  }d}d}|j                  D ]P  }	|	j                   }
	 | j                  |	|
j                  xr | ¬«      }|�||z  }d	}|d
|z   z  }|
j                  rd}ŒR | j                  ||j                   ¬«      }|r||d
z   |z   z  }|d| j#                  |«      z  z  }|S # t        j                  $ rE}t        j                  d|j                  ›d|
j                  ›d|j                  d   ›�«      |‚d }~ww xY w)Nz
CREATE rH  zTABLE rÁ  rB  ú
F©Úfirst_pkr‰  ú	Tz(in table 'z', column 'z'): r   )Ú _include_foreign_key_constraintsz
)%s

)rÞ  r½  rÕ  r‘   rÂ  r%  Úcreate_table_suffixr  rÌ  rl  r7   r   Údescriptionr  ÚargsÚcreate_table_constraintsÚinclude_foreign_key_constraintsÚpost_create_table)r  r­   rà  r§   r½  rè  rÓ  r&  rÐ  Úcreate_columnr¬   Ú	processedÚceÚconsts                 r  Úvisit_create_tablezDDLCompiler.visit_create_tableb  sÔ  € Ø—‘ˆØ—=‘=ˆàˆØ�?Š?Ø�C—H‘H˜UŸ_™_Ó-°Ñ3Ñ3ˆDà�ÑˆØ×ÒØÐ$Ñ$ˆDà�×%Ñ% eÓ,¨sÑ2Ñ2ˆà"×6Ñ6°uÓ=ÐÙØÐ'¨#Ñ-Ñ-ˆDà�‰ˆàˆ	ð ˆØ#Ÿ^™^ò 	ˆMØ"×*Ñ*ˆFðØ ŸL™LØ!¨F×,>Ñ,>Ò,OÀxÀ<ð )ó �	ð Ð(Ø˜IÑ%�DØ &�IØ˜D 9Ñ,Ñ,�DØ×%Ò%Ø#�Høð	ð$ ×-Ñ-ØØ-3×-SÑ-Sð .ó 
ˆñ Ø�I Ñ$ uÑ,Ñ,ˆDà�˜d×4Ñ4°UÓ;Ñ;Ñ;ˆØˆøô ×#Ñ#ò Ü×&Ò&à×(Ó(¨&¯+«+°r·w±w¸q²zðCóð ðûðús   Â5AD;Ä;FÅA FÆFc                ó*   —  | j                   |dfi |¤ŽS )NÚview©Ú_generate_table_selectrÕ  s      r  Úvisit_create_viewzDDLCompiler.visit_create_view–  s   € Ø*ˆt×*Ñ*¨7°FÑA¸bÑAÐAr  c                ó*   —  | j                   |dfi |¤ŽS )NÚcreate_table_asrà  rÕ  s      r  Úvisit_create_table_asz!DDLCompiler.visit_create_table_as™  s   € Ø*ˆt×*Ñ*¨7Ð4EÑLÈÑLÐLr  c                 ó   — y©Nr´  r  )r  rÞ  r   rà  s       r  Úcreate_table_select_suffixesz(DDLCompiler.create_table_select_suffixesœ  s   € ð r  c                óî  — | j                   }t        |«      }d|d<    | j                  j                  |j                  fi |¤Ž}|�|n|j
                  }dt        |dd«      rdnd |j                  rdnd |dk(  rt        |d	d«      rd
n|dk(  rdnd|rdnd |j                  |j                  «      g}	 | j                  ||fi |¤Ž}
|
r|	j                  |
«       |	d|gz  }	dj                  d„ |	D «       «      S )NTr�  ÚCREATEÚ
or_replaceFz
OR REPLACEÚ	TEMPORARYrß  ÚmaterializedzMATERIALIZED VIEWrä  ÚTABLEÚVIEWzIF NOT EXISTSÚASrH  c              3  ó&   K  — | ]	  }|sŒ|–— Œ y ­wr  r  ©rE  r  s     r  rG  z5DDLCompiler._generate_table_select.<locals>.<genexpr>È  s   è ø€ Ò.˜aªAœÑ.ùs   ‚Š)r½  rÿ  rå  rÌ  r)   rÂ  r‡  Ú	temporaryr%  r§   rè  rÄ  r‘   )r  rÞ  r   rÂ  rà  ÚprepÚinner_kwÚ
select_sqlÚuse_if_not_existsrý  Úsuffixess              r  rá  z"DDLCompiler._generate_table_select¤  s  € ð �}‰}ˆä˜“8ˆØ$(ˆ�Ñ!Ø.�T×&Ñ&×.Ñ.¨w×/AÑ/AÑNÀXÑNˆ
ð
 Ð(ñ à×&Ñ&ð 	ð Ü# G¨\¸5ÔA‰LÀtØ"×,Ò,‰K°$ð ˜F’?¤w¨w¸ÈÔ'Nñ $à %Ð):Ò :‘WÀá0‰O°dØ×Ñ˜gŸm™mÓ,ð&
ˆð 5�4×4Ñ4°W¸eÑJÀrÑJˆÙØ�L‰L˜Ô"Ø�$˜
Ð#Ñ#ˆØ�x‰xÑ. 5Ô.Ó.Ð.r  c                ó¼   ‡ — |j                   }|j                  ry ‰ j                  ||¬«      }dj                  ˆ fd„|j                  D «       «      }|r|d|z   z  }|S )NrÏ  rH  c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr  rû  ©rE  rÊ   r  s     €r  rG  z2DDLCompiler.visit_create_column.<locals>.<genexpr>Ñ  s   øè ø€ ò 
Ø)3ˆD�L‰L˜×$ñ
ùs   ƒ)rÞ  ÚsystemÚget_column_specificationr‘   Úconstraints)r  r­   rÐ  rà  r¬   rè  rÜ  s   `      r  Úvisit_create_columnzDDLCompiler.visit_create_columnÊ  sd   ø€ Ø—‘ˆà�=Š=Øà×,Ñ,¨V¸hÐ,ÓGˆØ—‘ó 
Ø7=×7IÑ7Iô
ó 
ˆñ Ø�C˜%‘KÑˆDàˆr  c                ól  ‡ — g }|j                   r|j                  |j                   «       |j                  }|�|j                  |«      }n
t	        «       }|j                  |j                  D �cg c]  }||j                   ur||vr|‘Œ c}«       dj                  d„ ˆ fd„|D «       D «       «      S c c}w )Nz, 
	c              3  ó$   K  — | ]  }|�|–— Œ
 y ­wr  r  rò  s     r  rG  z7DDLCompiler.create_table_constraints.<locals>.<genexpr>ð  s   è ø€ ò 
àð ˆ}ô ñ
ùr"  c              3  ó¨   •K  — | ]I  }|j                  ‰«      r6‰j                  j                  rt        |d d«      s‰j	                  |«      –— ŒK y­w)Ú	use_alterFN)Ú_should_create_for_compilerrÅ  Úsupports_alterr‡  rÌ  rû  s     €r  rG  z7DDLCompiler.create_table_constraints.<locals>.<genexpr>ò  sI   øè ø€ ò àØ×:Ñ:¸4Ô@àŸ™×3Ò3Ü" :¨{¸EÔBð —‘˜Z×(ñùr  )rl  rÄ  Úforeign_key_constraintsrS  r‰   r<  Ú_sorted_constraintsr‘   )r  r§   rÒ  rà  rþ  Úall_fkcsÚ	omit_fkcsr¦  s   `       r  rÖ  z$DDLCompiler.create_table_constraintsÙ  sÀ   ø€ ð
 ˆØ×ÒØ×Ñ˜u×0Ñ0Ô1à×0Ñ0ˆØ+Ð7Ø ×+Ñ+Ð,LÓM‰Iä›ˆIà×Ñð ×2Ñ2öàØ˜E×-Ñ-Ñ-°!¸9Ñ2Dò òô	
ð �}‰}ñ 
óà"-ôô
ó 
ð 	
ùòs   Á.B1c                óx   — d}|j                   r|dz  }|| j                  j                  |j                  «      z   S )Nz
DROP TABLE rÆ  )rÈ  r½  r%  rÞ  rÊ  s       r  Úvisit_drop_tablezDDLCompiler.visit_drop_tableþ  s6   € ØˆØ�>Š>Ø�LÑ ˆDØ�d—m‘m×0Ñ0°·±Ó>Ñ>Ð>r  c                ó¦   — d}|j                   r|dz  }n|dz  }|j                  r|dz  }|| j                  j                  |j                  «      z   S )Nz
DROP zMATERIALIZED VIEW zVIEW rÆ  )rí  rÈ  r½  r%  rÞ  rÊ  s       r  Úvisit_drop_viewzDDLCompiler.visit_drop_view  sS   € ØˆØ×ÒØÐ(Ñ(‰Dà�G‰OˆDØ�>Š>Ø�LÑ ˆDØ�d—m‘m×0Ñ0°·±Ó>Ñ>Ð>r  c                ó`   — |j                   €"t        j                  d|j                  z  «      ‚y )Nz,Index '%s' is not associated with any table.)r§   r7   r   r  )r  r’  s     r  Ú_verify_index_tablezDDLCompiler._verify_index_table  s0   € Ø�;‰;ÐÜ×"Ñ"Ø>ÀÇÁÑKóð ð r  c           	     ó¦  ‡ — |j                   }‰ j                  |«       ‰ j                  }d}|j                  r|dz  }|j                  €t        j                  d«      ‚|dz  }|j                  r|dz  }|‰ j                  ||¬«      ›d|j                  |j                  |¬«      ›d	d
j                  ˆ fd„|j                  D «       «      ›d�z  }|S )NzCREATE úUNIQUE z0CREATE INDEX requires that the index have a namezINDEX rÁ  ©Úinclude_schemar¶  ©r²  r  rá   c              3  óZ   •K  — | ]"  }‰j                   j                  |d d¬«      –— Œ$ y­w)FT©rÉ  r�  N)rå  rÌ  )rE  r3  r  s     €r  rG  z1DDLCompiler.visit_create_index.<locals>.<genexpr>+  s8   øè ø€ ò ð ð ×!Ñ!×)Ñ)Ø¨¸Tð *÷ ñùrÖ  rC  )rÞ  r  r½  r´   r  r7   r   rÂ  Ú_prepared_index_namer%  r§   r‘   Úexpressions)r  r­   r  Úinclude_table_schemarà  r’  r½  rè  s   `       r  Úvisit_create_indexzDDLCompiler.visit_create_index  sä   ø€ ð —‘ˆØ× Ñ  Ô'Ø—=‘=ˆØˆØ�<Š<Ø�IÑˆDØ�:‰:ÐÜ×"Ñ"ØBóð ð 	�ÑˆØ×ÒØÐ$Ñ$ˆDàØ×%Ñ% e¸NÐ%ÕKØ×!Ñ!Ø—‘Ð(<ð "õ ð �I‰Ió ð "×-Ñ-ô	õ ð
ñ 	
ˆð ˆr  c                ó®   — |j                   }|j                  €t        j                  d«      ‚d}|j                  r|dz  }|| j                  |d¬«      z   S )Nz.DROP INDEX requires that the index have a namez
DROP INDEX rÆ  Tr  )rÞ  r  r7   r   rÈ  r  )r  rË  rà  r’  rè  s        r  Úvisit_drop_indexzDDLCompiler.visit_drop_index4  s^   € Ø—‘ˆà�:‰:ÐÜ×"Ñ"Ø@óð ð ˆØ�>Š>Ø�LÑ ˆDà�d×/Ñ/°ÀdÐ/ÓKÑKÐKr  c                óü   — |j                   �&| j                  j                  |j                   «      }nd }|r|r| j                  j                  |«      }nd }| j                  j	                  |«      }|r|dz   |z   }|S ©NrE  )r§   r½  rÇ  rÈ  Úformat_index)r  r’  r  rÍ  Úschema_nameÚ
index_names         r  r  z DDLCompiler._prepared_index_nameA  sy   € ð �;‰;Ð"Ø#Ÿ}™}×>Ñ>¸u¿{¹{ÓKÑà#ÐÙÑ.ØŸ-™-×4Ñ4Ð5EÓF‰KàˆKàŸ-™-×4Ñ4°UÓ;ˆ
áØ$ sÑ*¨ZÑ7ˆJØÐr  c                óž   — d| j                   j                  |j                  j                  «      ›d| j	                  |j                  «      ›�S )NúALTER TABLE z ADD )r½  r%  rÞ  r§   rÌ  ©r  r­   rà  s      r  Úvisit_add_constraintz DDLCompiler.visit_add_constraintS  s8   � à�M‰M×&Ñ& v§~¡~×';Ñ';Õ<Ø�L‰L˜Ÿ™Ô(ð
ð 	
r  c                óØ   — d| j                   j                  |j                  «      ›d| j                  j	                  |j                  j
                  t        j                  «       «      ›�S )NzCOMMENT ON TABLE rä   )r½  r%  rÞ  rå  r   Úcommentr*   ÚStringr$  s      r  Úvisit_set_table_commentz#DDLCompiler.visit_set_table_commentY  sL   � à�M‰M×&Ñ& v§~¡~Õ6Ø×Ñ×2Ñ2Ø—‘×&Ñ&¬¯©Ó(9ôð
ð 	
r  c                óR   — d| j                   j                  |j                  «      z  S )NzCOMMENT ON TABLE %s IS NULL)r½  r%  rÞ  ©r  rË  rà  s      r  Úvisit_drop_table_commentz$DDLCompiler.visit_drop_table_commenta  s'   € Ø,¨t¯}©}×/IÑ/IØ�L‰Ló0
ñ 
ð 	
r  c                óÞ   — d| j                   j                  |j                  dd¬«      ›d| j                  j	                  |j                  j
                  t        j                  «       «      ›�S )NzCOMMENT ON COLUMN T)Ú	use_tabler²  rä   )r½  Úformat_columnrÞ  rå  r   r'  r*   r(  r$  s      r  Úvisit_set_column_commentz$DDLCompiler.visit_set_column_commentf  sZ   � à�M‰M×'Ñ'Ø—‘¨$¸4ð (õ ð ×Ñ×2Ñ2Ø—‘×&Ñ&¬¯©Ó(9ôð	
ð 	
r  c                óV   — d| j                   j                  |j                  d¬«      z  S )NzCOMMENT ON COLUMN %s IS NULLT)r.  )r½  r/  rÞ  r+  s      r  Úvisit_drop_column_commentz%DDLCompiler.visit_drop_column_commentp  s/   € Ø-°·±×0KÑ0KØ�L‰L Dð 1Ló 1
ñ 
ð 	
r  c                ó@   — t        j                  | t        |«      «      ‚r  rÛ  r$  s      r  Úvisit_set_constraint_commentz(DDLCompiler.visit_set_constraint_commentu  s   € Ü×-Ñ-¨d´D¸³LÓAÐAr  c                ó@   — t        j                  | t        |«      «      ‚r  rÛ  r+  s      r  Úvisit_drop_constraint_commentz)DDLCompiler.visit_drop_constraint_commentx  s   € Ü×-Ñ-¨d´D¸³JÓ?Ð?r  c                ó–  — g }|j                   �|j                  d|j                   z  «       |j                  �|j                  d|j                  z  «       |j                  �|j                  d|j                  z  «       |j                  �|j                  d|j                  z  «       |j
                  �|j                  d«       |j                  �|j                  d«       |j                  �|j                  d|j                  z  «       |j                  �|j                  |j                  rdnd	«       d
j                  |«      S )NzINCREMENT BY %dzSTART WITH %dzMINVALUE %dzMAXVALUE %dzNO MINVALUEzNO MAXVALUEzCACHE %dÚCYCLEzNO CYCLErH  )
Ú	incrementrÄ  r   ÚminvalueÚmaxvalueÚ
nominvalueÚ
nomaxvalueÚcacheÚcycler‘   )r  Úidentity_optionsrè  s      r  Úget_identity_optionsz DDLCompiler.get_identity_options{  s  € ØˆØ×%Ñ%Ð1Ø�K‰KÐ)Ð,<×,FÑ,FÑFÔGØ×!Ñ!Ð-Ø�K‰K˜Ð*:×*@Ñ*@Ñ@ÔAØ×$Ñ$Ð0Ø�K‰K˜Ð(8×(AÑ(AÑAÔBØ×$Ñ$Ð0Ø�K‰K˜Ð(8×(AÑ(AÑAÔBØ×&Ñ&Ð2Ø�K‰K˜Ô&Ø×&Ñ&Ð2Ø�K‰K˜Ô&Ø×!Ñ!Ð-Ø�K‰K˜
Ð%5×%;Ñ%;Ñ;Ô<Ø×!Ñ!Ð-Ø�K‰KÐ#3×#9Ò#9™¸zÔJØ�x‰x˜‹~Ðr  c                óÔ   — d}|j                   r|dz  }|| j                  j                  |j                  «      z  }|r||z  }| j	                  |j                  «      }|r|d|z   z  }|S )NzCREATE SEQUENCE rÁ  rH  )rÂ  r½  r   rÞ  rA  )r  r­   r‡  rà  rè  Úoptionss         r  Úvisit_create_sequencez!DDLCompiler.visit_create_sequence�  sn   € Ø!ˆØ×ÒØÐ$Ñ$ˆDØ�—‘×-Ñ-¨f¯n©nÓ=Ñ=ˆáØ�F‰NˆDØ×+Ñ+¨F¯N©NÓ;ˆÙØ�C˜'‘MÑ!ˆDØˆr  c                óx   — d}|j                   r|dz  }|| j                  j                  |j                  «      z   S )NzDROP SEQUENCE rÆ  )rÈ  r½  r   rÞ  rÊ  s       r  Úvisit_drop_sequencezDDLCompiler.visit_drop_sequenceœ  s6   € ØˆØ�>Š>Ø�LÑ ˆDØ�d—m‘m×3Ñ3°D·L±LÓAÑAÐAr  c                ód  — |j                   }|j                  �| j                  j                  |«      }nd }|€"t	        j
                  d|j                   z  «      ‚d| j                  j                  |j                   j                  «      ›d|j                  rdnd›|›|j                  rd›�S d›�S )Nz<Can't emit DROP CONSTRAINT for constraint %r; it has no namer#  z DROP CONSTRAINT rÆ  r´  rÇ  )
rÞ  r  r½  Úformat_constraintr7   r   r%  r§   rÈ  rÉ  )r  rË  rà  rÊ   Úformatted_names        r  Úvisit_drop_constraintz!DDLCompiler.visit_drop_constraint¢  s´   € Ø—\‘\ˆ
Ø�?‰?Ð&Ø!Ÿ]™]×<Ñ<¸ZÓH‰Nà!ˆNàÐ!Ü×"Ñ"ð!Ø#'§<¡<ñ0óð ð "ð �M‰M×&Ñ& t§|¡|×'9Ñ'9Õ:Ø ŸNšN‰L°Ð2ÙØŸ,š,ˆJÐ.ð	
ð 	
ð -/Ð.ð	
ð 	
r  c                ó"  — | j                   j                  |«      dz   | j                  j                  j	                  |j
                  |¬«      z   }| j                  |«      }|�|d|z   z  }|j                  �!|d| j	                  |j                  «      z   z  }|j                  �7| j                  j                  r!|d| j	                  |j                  «      z   z  }|j                  s'|j                  r| j                  j                  s|dz  }|S )NrH  )rÞ  z	 DEFAULT z	 NOT NULL)r½  r/  rÅ  rß  rÌ  r  Úget_column_default_stringÚcomputedÚidentityÚsupports_identity_columnsÚnullable)r  r¬   rê  Úcolspecr¹   s        r  rý  z$DDLCompiler.get_column_specificationµ  sù   € ð �M‰M×'Ñ'¨Ó/Øñà�l‰l×1Ñ1×9Ñ9Ø—‘¨Vð :ó ñð 	ð ×0Ñ0°Ó8ˆØÐØ�{ WÑ,Ñ,ˆGà�?‰?Ð&Ø�s˜TŸ\™\¨&¯/©/Ó:Ñ:Ñ:ˆGð �O‰OÐ'Ø—‘×6Ò6à�s˜TŸ\™\¨&¯/©/Ó:Ñ:Ñ:ˆGà�ŠØ—’ t§|¡|×'MÒ'Mà�{Ñ"ˆGØˆr  c                 ó   — yrç  r  ©r  r§   s     r  rÓ  zDDLCompiler.create_table_suffixÒ  ó   € Ør  c                 ó   — yrç  r  rS  s     r  rØ  zDDLCompiler.post_create_tableÕ  rT  r  c                ó–   — t        |j                  t        j                  «      r%| j	                  |j                  j
                  «      S y r  )rÊ  Úserver_defaultr(   ÚDefaultClauseÚrender_default_stringÚargrº  s     r  rL  z%DDLCompiler.get_column_default_stringØ  s8   € Ü�f×+Ñ+¬V×-AÑ-AÔBØ×-Ñ-¨f×.CÑ.C×.GÑ.GÓHÐHàr  c                ó°   — t        |t        «      r*| j                  j                  |t        j
                  «      S | j                  j                  |d¬«      S )NT)r�  )rÊ  r
  rå  r   r*   r;  rÌ  )r  r¹   s     r  rY  z!DDLCompiler.render_default_stringÞ  sN   € Ü�gœsÔ#Ø×$Ñ$×9Ñ9Øœ×,Ñ,óð ð ×$Ñ$×,Ñ,¨WÀDÐ,ÓIÐIr  c                ó^   — |j                   r| j                  |«      S | j                  |«      S r  )Úis_column_levelÚvisit_column_check_constraintÚvisit_check_constraint©r  rÊ   rà  s      r  Ú&visit_table_or_column_check_constraintz2DDLCompiler.visit_table_or_column_check_constraintæ  s-   € Ø×%Ò%Ø×5Ñ5°jÓAÐAà×.Ñ.¨zÓ:Ð:r  c                ó€   —  | j                   |fi |¤Ž}| | j                  |fi |¤Žz  }|| j                  |«      z  }|S r  ©Údefine_constraint_preambleÚdefine_check_bodyÚdefine_constraint_deferrability©r  rÊ   rà  rè  s       r  r_  z"DDLCompiler.visit_check_constraintì  óP   € Ø.ˆt×.Ñ.¨zÑ@¸RÑ@ˆØÐ&�×&Ñ& zÑ8°RÑ8Ñ8ˆØ�×4Ñ4°ZÓ@Ñ@ˆØˆr  c                ó€   —  | j                   |fi |¤Ž}| | j                  |fi |¤Žz  }|| j                  |«      z  }|S r  rc  rg  s       r  r^  z)DDLCompiler.visit_column_check_constraintò  rh  r  c                óž   — t        |«      dk(  ry | j                  |fi |¤Ž}| | j                  |fi |¤Žz  }|| j                  |«      z  }|S ©Nr   r´  )rÌ  rd  Údefine_primary_key_bodyrf  rg  s       r  Úvisit_primary_key_constraintz(DDLCompiler.visit_primary_key_constraintø  sa   € ô ˆz‹?˜aÒØØ.ˆt×.Ñ.¨zÑ@¸RÑ@ˆØÐ,�×,Ñ,¨ZÑ>¸2Ñ>Ñ>ˆØ�×4Ñ4°ZÓ@Ñ@ˆØˆr  c                óÐ   —  | j                   |fi |¤Ž}| | j                  |fi |¤Žz  }|| j                  |«      z  }|| j                  |«      z  }|| j	                  |«      z  }|S r  )rd  Údefine_foreign_key_bodyÚdefine_constraint_matchÚdefine_constraint_cascadesrf  rg  s       r  Úvisit_foreign_key_constraintz(DDLCompiler.visit_foreign_key_constraint  s|   € ð /ˆt×.Ñ.¨zÑ@¸RÑ@ˆØÐ,�×,Ñ,¨ZÑ>¸2Ñ>Ñ>ˆØ�×,Ñ,¨ZÓ8Ñ8ˆØ�×/Ñ/°
Ó;Ñ;ˆØ�×4Ñ4°ZÓ@Ñ@ˆØˆr  c                ó$   — |j                  |«      S )z=Format the remote table clause of a CREATE CONSTRAINT clause.)r%  )r  rÊ   r§   r½  s       r  Údefine_constraint_remote_tablez*DDLCompiler.define_constraint_remote_table  s   € ð ×$Ñ$ UÓ+Ð+r  c                óž   — t        |«      dk(  ry | j                  |fi |¤Ž}| | j                  |fi |¤Žz  }|| j                  |«      z  }|S rk  )rÌ  rd  Údefine_unique_bodyrf  rg  s       r  Úvisit_unique_constraintz#DDLCompiler.visit_unique_constraint  sa   € ô ˆz‹?˜aÒØØ.ˆt×.Ñ.¨zÑ@¸RÑ@ˆØÐ'�×'Ñ'¨
Ñ9°bÑ9Ñ9ˆØ�×4Ñ4°ZÓ@Ñ@ˆØˆr  c                ól   — d}|j                   �%| j                  j                  |«      }|�|d|z  z  }|S )Nr´  zCONSTRAINT %s )r  r½  rH  )r  rÊ   rà  rè  rI  s        r  rd  z&DDLCompiler.define_constraint_preamble  sB   € ð ˆØ�?‰?Ð&Ø!Ÿ]™]×<Ñ<¸ZÓHˆNØÐ)ØÐ(¨>Ñ9Ñ9�Øˆr  c                óš   ‡ — d}|dz  }|ddj                  ˆ fd„|j                  r|j                  n|j                  D «       «      z  z  }|S )Nr´  zPRIMARY KEY r4  rá   c              3  óh   •K  — | ])  }‰j                   j                  |j                  «      –— Œ+ y ­wr  ©r½  rÅ  r  ©rE  r¦  r  s     €r  rG  z6DDLCompiler.define_primary_key_body.<locals>.<genexpr>*  s,   øè ø€ ò #
àð �M‰M×Ñ §¡×'ñ#
ùó   ƒ/2)r‘   Ú_implicit_generatedÚcolumns_autoinc_firstr  rg  s   `   r  rl  z#DDLCompiler.define_primary_key_body%  s`   ø€ ð ˆØ�ÑˆØ�˜Ÿ™ó #
ð ×1Ò1ð ×0Ò0à×'Ñ'ô#
ó 
ñ 
ñ 	
ˆð ˆr  c           	     ó:  ‡— | j                   Št        |j                  «      d   j                  j                  }ddj                  ˆfd„|j                  D «       «      ›d| j                  ||‰«      ›ddj                  ˆfd„|j                  D «       «      ›d�}|S )	Nr   zFOREIGN KEY(rá   c              3  óh   •K  — | ])  }‰j                  |j                  j                  «      –— Œ+ y ­wr  )rÅ  Úparentr  ©rE  rƒ  r½  s     €r  rG  z6DDLCompiler.define_foreign_key_body.<locals>.<genexpr>:  ó'   øè ø€ ò Ø23�—‘˜qŸx™xŸ}™}×-ñùr}  z) REFERENCES r  c              3  óh   •K  — | ])  }‰j                  |j                  j                  «      –— Œ+ y ­wr  )rÅ  r¬   r  rƒ  s     €r  rG  z6DDLCompiler.define_foreign_key_body.<locals>.<genexpr>@  r„  r}  rC  )r½  r°  r$   r¬   r§   r‘   rt  )r  rÊ   rà  Úremote_tablerè  r½  s        @r  ro  z#DDLCompiler.define_foreign_key_body4  s”   ø€ ð —=‘=ˆÜ˜J×/Ñ/Ó0°Ñ3×:Ñ:×@Ñ@‰à�I‰Ió Ø7A×7JÑ7Jôõ ð ×/Ñ/Ø˜L¨(õð �I‰Ió Ø7A×7JÑ7Jôõ ð

ˆð ˆr  c                ól   ‡ — d ‰ j                   |fi |¤Ž›ddj                  ˆ fd„|D «       «      ›d�}|S )Nr  rB  rá   c              3  óh   •K  — | ])  }‰j                   j                  |j                  «      –— Œ+ y ­wr  r{  r|  s     €r  rG  z1DDLCompiler.define_unique_body.<locals>.<genexpr>K  s$   øè ø€ ÒF°a�d—m‘m×)Ñ)¨!¯&©&×1ÑFùr}  rC  )Ú!define_unique_constraint_distinctr‘   rg  s   `   r  rv  zDDLCompiler.define_unique_bodyF  s:   ø� ð 3ˆD×2Ñ2°:ÑDÀÓDØ�I‰IÓF¸:ÔFÕFð
ˆð ˆr  c                ó\   — d| j                   j                  |j                  dd¬«      z  }|S )Nz
CHECK (%s)FTr  )rå  rÌ  r‡  rg  s       r  re  zDDLCompiler.define_check_bodyO  s8   € Ø˜d×/Ñ/×7Ñ7Ø×Ñ¨eÀ4ð 8ó 
ñ 
ˆð ˆr  c                 ó   — yrç  r  r`  s      r  r‰  z-DDLCompiler.define_unique_constraint_distinctU  s   € ð r  c                óŠ   — d}|j                   �|| j                  |«      z  }|j                  �|| j                  |«      z  }|S rç  )ÚondeleteÚ"define_constraint_ondelete_cascadeÚonupdateÚ"define_constraint_onupdate_cascade©r  rÊ   rè  s      r  rq  z&DDLCompiler.define_constraint_cascadesZ  sP   € ð ˆØ×ÑÐ*Ø�D×;Ñ;¸JÓGÑGˆDà×ÑÐ*Ø�D×;Ñ;¸JÓGÑGˆDØˆr  c                ó\   — d| j                   j                  |j                  t        «      z  S )Nz ON DELETE %s)r½  rk  r�  ÚFK_ON_DELETE©r  rÊ   s     r  rŽ  z.DDLCompiler.define_constraint_ondelete_cascadee  ó-   € ð  §¡×!BÑ!BØ×Ñ¤ó"
ñ 
ð 	
r  c                ó\   — d| j                   j                  |j                  t        «      z  S )Nz ON UPDATE %s)r½  rk  r�  ÚFK_ON_UPDATEr”  s     r  r�  z.DDLCompiler.define_constraint_onupdate_cascadel  r•  r  c                óÈ   — d}|j                   �|j                   r|dz  }n|dz  }|j                  �0|d| j                  j                  |j                  t        «      z  z  }|S )Nr´  z DEFERRABLEz NOT DEFERRABLEz INITIALLY %s)rË   rÅ   r½  rk  ÚFK_INITIALLYr‘  s      r  rf  z+DDLCompiler.define_constraint_deferrabilitys  sq   € ØˆØ× Ñ Ð,Ø×$Ò$Ø˜Ñ%‘àÐ)Ñ)�Ø×ÑÐ+Ø�O d§m¡m×&GÑ&GØ×$Ñ$¤ló'ñ ñ ˆDð ˆr  c                óF   — d}|j                   �|d|j                   z  z  }|S )Nr´  z	 MATCH %s)rU  r‘  s      r  rp  z#DDLCompiler.define_constraint_match€  s-   € ØˆØ×ÑÐ'Ø�K *×"2Ñ"2Ñ2Ñ2ˆDØˆr  c                ó¬   — d| j                   j                  |j                  dd¬«      z  }|j                  du r|dz  }|S |j                  du r|dz  }|S )NzGENERATED ALWAYS AS (%s)FTr  z STOREDz VIRTUAL)rå  rÌ  r‡  Ú	persisted)r  Ú	generatedrà  rè  s       r  Úvisit_computed_columnz!DDLCompiler.visit_computed_column†  sr   € Ø)¨D×,=Ñ,=×,EÑ,EØ×Ñ¨UÀ$ð -Fó -
ñ 
ˆð ×Ñ $Ñ&Ø�IÑˆDð ˆð × Ñ  EÑ)Ø�JÑˆDØˆr  c                ód   — d|j                   rdnd›d�}| j                  |«      }|r|d|z  z  }|S )Nz
GENERATED ÚALWAYSz
BY DEFAULTz AS IDENTITYr  )ÚalwaysrA  )r  rN  rà  rè  rC  s        r  Úvisit_identity_columnz!DDLCompiler.visit_identity_column�  s@   � à Ÿš‰H¨\Ñ9ð
ˆð ×+Ñ+¨HÓ5ˆÙØ�G˜gÑ%Ñ%ˆDØˆr  )...)
rÅ  rv   r;  rE   rº  r¹  rÏ  r2  rÐ  rõ  rö  rù  rú  )rÞ  rD   rà  r   r"  r
  )rÞ  rC   rà  r   r"  r
  )rÞ  rB   r   r
  rà  r   r"  r
  r  )
rÞ  rB   r   r
  rÂ  zOptional[bool]rà  r   r"  r
  rs  )r’  r\   r"  r#  )FT)r’  r\   r  r2  r"  r
  )r@  r[   r"  r
  )r¬   úColumn[Any]rê  r   r"  r
  )r§   r^   r"  r
  )r¬   r£  r"  rd  )r¹   zUnion[Visitable, str]r"  r
  )rÊ   r]   rà  r   r"  r
  )rÊ   rZ   rà  r   r"  r
  )rÊ   r_   rà  r   r"  r
  )rÊ   rY   rà  r   r"  r
  )rÊ   rW   rà  r   r"  r
  )rÊ   rZ   r"  r
  )rÊ   rY   r"  r
  )@r  r  r  rþ  r   rÑ  r+   r€  rå  r�  r¶  rò  r¿  rÄ  rÌ  rÝ  râ  rå  rè  rá  rÿ  rÖ  r  r  r  r  r  r  r%  r)  r,  r0  r2  r4  r6  rA  rD  rF  rJ  rý  rÓ  rØ  rL  rY  ra  r_  r^  rm  rr  rt  rw  rd  rl  ro  rv  re  r‰  rq  rŽ  r�  rf  rp  rž  r¢  r  r  r  r²  r²     sU  „ Ø€Fáð FIØ,/Ø03ð	àð	ð ,ð	ð #Cð		ð
 &*ð	ð .ó	ð 
×Ñò
ó ð
ð
 
×Ññ3ó ð3ð
 6:ØGKØ!ð	à2ðð Eðð ð	ð
 
3óòLò&Bòò2óhBóMðà ðð ðð ð	ð
 
óð )-ð	$/à ð$/ð ð$/ð &ð	$/ð
 ð$/ð 
ó$/óLð  7;ó#
òJ?ò?óð BFóò@Lð 49ðØðØ,0ðà	óò$
ò
ò
ò

ò
ò
Bò@óó(òBò
ð&Ø!ðØ-0ðà	óó:óóóJò;òòðØ.ðØ69ðà	óðØ.ðØ69ðà	óò,ð
Ø*ðØ25ðà	óðØ$ðØ,/ðà	óðØ.ðØ69ðà	óðØ.ðØ69ðà	óð$Ø*ðØ25ðà	óóðØ*ðØ25ðà	óð
	Ø.ð	à	ó	ð
Ø.ð
à	ó
ð
Ø.ð
à	ó
óóòór  r²  c                  óê  — e Zd Zd1d„Zd2d„Z	 	 	 	 	 	 d3d„Zd4d„Zd5d„Zd6d„Zd7d„Z	d8d„Z
d9d	„Zd:d
„Zd;d„Zd<d„Zd=d„Zd>d„Zd?d„Z	 	 d@	 	 	 	 	 	 	 	 	 	 	 	 	 dAd„ZdBd„ZdCd„ZdDd„ZdEd„Zd?d„ZdFd„ZdGd„ZdHd„ZdId„ZdJd„ZdFd„Z	 	 	 	 	 	 dGd„ZdJd„Zd=d„Z d;d „Z!d<d!„Z"d9d"„Z#	 	 	 	 	 	 d8d#„Z$d7d$„Z%d4d%„Z&d1d&„Z'd2d'„Z(d5d(„Z)dDd)„Z*dKd*„Z+d?d+„Z,	 	 	 	 	 	 dLd,„Z-dMd-„Z.d.„ Z/	 	 	 	 	 	 dNd/„Z0	 	 	 	 	 	 dOd0„Z1y)PÚGenericTypeCompilerc                 ó   — y)NÚFLOATr  r	  s      r  Úvisit_FLOATzGenericTypeCompiler.visit_FLOAT›  ó   € Ør  c                 ó   — y)NÚDOUBLEr  r	  s      r  Úvisit_DOUBLEz GenericTypeCompiler.visit_DOUBLEž  ó   € Ør  c                 ó   — y)NzDOUBLE PRECISIONr  r	  s      r  Úvisit_DOUBLE_PRECISIONz*GenericTypeCompiler.visit_DOUBLE_PRECISION¡  s   € ð "r  c                 ó   — y)NÚREALr  r	  s      r  Ú
visit_REALzGenericTypeCompiler.visit_REAL¦  r  r  c                óŽ   — |j                   €y|j                  €dd|j                   iz  S d|j                   |j                  dœz  S )NÚNUMERICzNUMERIC(%(precision)s)Ú	precisionz!NUMERIC(%(precision)s, %(scale)s)©rµ  Úscaler¶  r	  s      r  Úvisit_NUMERICz!GenericTypeCompiler.visit_NUMERIC©  óM   € Ø�?‰?Ð"ØØ�[‰[Ð Ø+¨{¸E¿O¹OÐ.LÑLÐLà6Ø"Ÿ_™_ØŸ™ñ:ñ ð r  c                óŽ   — |j                   €y|j                  €dd|j                   iz  S d|j                   |j                  dœz  S )NÚDECIMALzDECIMAL(%(precision)s)rµ  z!DECIMAL(%(precision)s, %(scale)s)r¶  r¶  r	  s      r  Úvisit_DECIMALz!GenericTypeCompiler.visit_DECIMAL´  r¹  r  c                 ó   — y)NÚINTEGERr  r	  s      r  Úvisit_INTEGERz!GenericTypeCompiler.visit_INTEGER¿  ó   € Ør  c                 ó   — y)NÚSMALLINTr  r	  s      r  Úvisit_SMALLINTz"GenericTypeCompiler.visit_SMALLINTÂ  ó   € Ør  c                 ó   — y)NÚBIGINTr  r	  s      r  Úvisit_BIGINTz GenericTypeCompiler.visit_BIGINTÅ  r­  r  c                 ó   — y)NÚ	TIMESTAMPr  r	  s      r  Úvisit_TIMESTAMPz#GenericTypeCompiler.visit_TIMESTAMPÈ  s   € Ør  c                 ó   — y)NÚDATETIMEr  r	  s      r  Úvisit_DATETIMEz"GenericTypeCompiler.visit_DATETIMEË  rÄ  r  c                 ó   — y)NÚDATEr  r	  s      r  Ú
visit_DATEzGenericTypeCompiler.visit_DATEÎ  r  r  c                 ó   — y)NÚTIMEr  r	  s      r  Ú
visit_TIMEzGenericTypeCompiler.visit_TIMEÑ  r  r  c                 ó   — y)NÚCLOBr  r	  s      r  Ú
visit_CLOBzGenericTypeCompiler.visit_CLOBÔ  r  r  c                 ó   — y)NÚNCLOBr  r	  s      r  Úvisit_NCLOBzGenericTypeCompiler.visit_NCLOB×  r©  r  Nc                ó„   — |}|r	|d|› d�z  }|r0|€| j                   j                  }|d|j                  ||«      z   z  }|S )NrB  rC  rå   )rÅ  rÆ  rÒ  )r  r  ÚlengthrÓ  rÔ  rÆ  rà  rè  s           r  Ú_render_string_typez'GenericTypeCompiler._render_string_typeÚ  sc   € ð ˆÙØ�a˜�x˜q�MÑ!ˆDÙØ"Ð*Ø&*§l¡l×&FÑ&FÐ#Ø�KÐ"5×"FÑ"FØÐ+ó#ñ ñ ˆDð ˆr  c                ój   —  | j                   d|j                  |j                  |j                  fi |¤ŽS )NÚCHAR©rÜ  rÛ  rÓ  rÔ  r	  s      r  Ú
visit_CHARzGenericTypeCompiler.visit_CHARî  ó;   € Ø'ˆt×'Ñ'ØØ�L‰LØ�O‰OØ×"Ñ"ñ	
ð
 ñ
ð 	
r  c                ój   —  | j                   d|j                  |j                  |j                  fi |¤ŽS )NÚNCHARrß  r	  s      r  Úvisit_NCHARzGenericTypeCompiler.visit_NCHAR÷  s;   € Ø'ˆt×'Ñ'ØØ�L‰LØ�O‰OØ×"Ñ"ñ	
ð
 ñ
ð 	
r  c                ój   —  | j                   d|j                  |j                  |j                  fi |¤ŽS )NÚVARCHARrß  r	  s      r  Úvisit_VARCHARz!GenericTypeCompiler.visit_VARCHAR   s;   € Ø'ˆt×'Ñ'ØØ�L‰LØ�O‰OØ×"Ñ"ñ	
ð
 ñ
ð 	
r  c                ój   —  | j                   d|j                  |j                  |j                  fi |¤ŽS )NÚNVARCHARrß  r	  s      r  Úvisit_NVARCHARz"GenericTypeCompiler.visit_NVARCHAR	  s;   € Ø'ˆt×'Ñ'ØØ�L‰LØ�O‰OØ×"Ñ"ñ	
ð
 ñ
ð 	
r  c                ój   —  | j                   d|j                  |j                  |j                  fi |¤ŽS )NÚTEXTrß  r	  s      r  Ú
visit_TEXTzGenericTypeCompiler.visit_TEXT  rá  r  c                 ó   — y)NÚUUIDr  r	  s      r  Ú
visit_UUIDzGenericTypeCompiler.visit_UUID  r  r  c                 ó   — y)NÚBLOBr  r	  s      r  Ú
visit_BLOBzGenericTypeCompiler.visit_BLOB  r  r  c                óJ   — d|j                   xr d|j                   z  xs dz   S )NÚBINARYú(%d)r´  ©rÛ  r	  s      r  Úvisit_BINARYz GenericTypeCompiler.visit_BINARY!  s$   € Ø˜5Ÿ<™<ÒA¨F°U·\±\Ñ,AÒGÀRÑHÐHr  c                óJ   — d|j                   xr d|j                   z  xs dz   S )NÚ	VARBINARYrö  r´  r÷  r	  s      r  Úvisit_VARBINARYz#GenericTypeCompiler.visit_VARBINARY$  s$   € Ø˜eŸl™lÒD¨v¸¿¹Ñ/DÒJÈÑKÐKr  c                 ó   — y)NÚBOOLEANr  r	  s      r  Úvisit_BOOLEANz!GenericTypeCompiler.visit_BOOLEAN'  rÀ  r  c                óš   — |j                   r| j                  j                  s | j                  	 ddd d dœ|¤ŽS  | j                  |fi |¤ŽS )Nrr  )rÛ  rÓ  rÔ  )rÞ  )Únative_uuidrÅ  Úsupports_native_uuidrÜ  rð  r	  s      r  Ú
visit_uuidzGenericTypeCompiler.visit_uuid*  s_   € Ø× Ò ¨¯©×(IÒ(IØ+�4×+Ñ+ØðàØØ!%ñ	ð
 ñð ð #�4—?‘? 5Ñ/¨BÑ/Ð/r  c                ó(   —  | j                   |fi |¤ŽS r  )ró  r	  s      r  Úvisit_large_binaryz&GenericTypeCompiler.visit_large_binary6  ó   € ð ˆt�‰˜uÑ+¨Ñ+Ð+r  c                ó(   —  | j                   |fi |¤ŽS r  )rþ  r	  s      r  Úvisit_booleanz!GenericTypeCompiler.visit_boolean;  ó   € Ø!ˆt×!Ñ! %Ñ.¨2Ñ.Ð.r  c                ó(   —  | j                   |fi |¤ŽS r  )rÓ  r	  s      r  Ú
visit_timezGenericTypeCompiler.visit_time>  ó   € Øˆt�‰˜uÑ+¨Ñ+Ð+r  c                ó(   —  | j                   |fi |¤ŽS r  )rÍ  r	  s      r  Úvisit_datetimez"GenericTypeCompiler.visit_datetimeA  s   € Ø"ˆt×"Ñ" 5Ñ/¨BÑ/Ð/r  c                ó(   —  | j                   |fi |¤ŽS r  )rÐ  r	  s      r  Ú
visit_datezGenericTypeCompiler.visit_dateD  r	  r  c                ó(   —  | j                   |fi |¤ŽS r  )rÇ  r	  s      r  Úvisit_big_integerz%GenericTypeCompiler.visit_big_integerG  ó   € Ø ˆt× Ñ  Ñ-¨"Ñ-Ð-r  c                ó(   —  | j                   |fi |¤ŽS r  )rÃ  r	  s      r  Úvisit_small_integerz'GenericTypeCompiler.visit_small_integerJ  s   € ð #ˆt×"Ñ" 5Ñ/¨BÑ/Ð/r  c                ó(   —  | j                   |fi |¤ŽS r  )r¿  r	  s      r  Úvisit_integerz!GenericTypeCompiler.visit_integerO  r	  r  c                ó(   —  | j                   |fi |¤ŽS r  )r²  r	  s      r  Ú
visit_realzGenericTypeCompiler.visit_realR  r	  r  c                ó(   —  | j                   |fi |¤ŽS r  )r¨  r	  s      r  Úvisit_floatzGenericTypeCompiler.visit_floatU  s   € Øˆt×Ñ Ñ,¨Ñ,Ð,r  c                ó(   —  | j                   |fi |¤ŽS r  )r¬  r	  s      r  Úvisit_doublez GenericTypeCompiler.visit_doubleX  r	  r  c                ó(   —  | j                   |fi |¤ŽS r  )r¸  r	  s      r  Úvisit_numericz!GenericTypeCompiler.visit_numeric[  r	  r  c                ó(   —  | j                   |fi |¤ŽS r  ©rç  r	  s      r  Úvisit_stringz GenericTypeCompiler.visit_string^  r	  r  c                ó(   —  | j                   |fi |¤ŽS r  r 	  r	  s      r  Úvisit_unicodez!GenericTypeCompiler.visit_unicodea  r	  r  c                ó(   —  | j                   |fi |¤ŽS r  ©rí  r	  s      r  Ú
visit_textzGenericTypeCompiler.visit_textd  r	  r  c                ó(   —  | j                   |fi |¤ŽS r  r%	  r	  s      r  Úvisit_unicode_textz&GenericTypeCompiler.visit_unicode_textg  r	  r  c                ó(   —  | j                   |fi |¤ŽS r  r 	  r	  s      r  Ú
visit_enumzGenericTypeCompiler.visit_enuml  r	  r  c                ó2   — t        j                  d|z  «      ‚)NzKCan't generate DDL for %r; did you forget to specify a type on this Column?r¹  r	  s      r  r  zGenericTypeCompiler.visit_nullo  s"   € Ü×Ñð#à%*ñ+ó
ð 	
r  c                óZ   —  | j                   |j                  | j                  «      fi |¤ŽS r  )rÌ  Útype_enginerÅ  r	  s      r  Úvisit_type_decoratorz(GenericTypeCompiler.visit_type_decoratorv  s)   € ð ˆt�|‰|˜E×-Ñ-¨d¯l©lÓ;ÑB¸rÑBÐBr  c                ó&   —  |j                   di |¤ŽS rt  )Úget_col_specr	  s      r  Úvisit_user_definedz&GenericTypeCompiler.visit_user_defined{  s   € ð "ˆu×!Ñ!Ñ' BÑ'Ð'r  )r   zsqltypes.Float[Any]rà  r   r"  r
  )r   zsqltypes.Double[Any]rà  r   r"  r
  )r   zsqltypes.DOUBLE_PRECISION[Any]rà  r   r"  r
  )r   zsqltypes.REAL[Any]rà  r   r"  r
  )r   zsqltypes.Numeric[Any]rà  r   r"  r
  )r   zsqltypes.DECIMAL[Any]rà  r   r"  r
  )r   zsqltypes.Integerrà  r   r"  r
  )r   zsqltypes.SmallIntegerrà  r   r"  r
  )r   zsqltypes.BigIntegerrà  r   r"  r
  )r   zsqltypes.TIMESTAMPrà  r   r"  r
  )r   zsqltypes.DateTimerà  r   r"  r
  )r   zsqltypes.Daterà  r   r"  r
  )r   zsqltypes.Timerà  r   r"  r
  )r   zsqltypes.CLOBrà  r   r"  r
  )r   zsqltypes.Textrà  r   r"  r
  r�  )r  r
  rÛ  rr  rÓ  rd  rÔ  rd  rÆ  zOptional[IdentifierPreparer]rà  r   r"  r
  )r   zsqltypes.CHARrà  r   r"  r
  )r   zsqltypes.NCHARrà  r   r"  r
  )r   zsqltypes.Stringrà  r   r"  r
  )r   zsqltypes.NVARCHARrà  r   r"  r
  )r   zsqltypes.Uuid[Any]rà  r   r"  r
  )r   zsqltypes.LargeBinaryrà  r   r"  r
  )r   zsqltypes.BINARYrà  r   r"  r
  )r   zsqltypes.VARBINARYrà  r   r"  r
  )r   zsqltypes.Booleanrà  r   r"  r
  )r   zsqltypes.Unicoderà  r   r"  r
  )r   zsqltypes.UnicodeTextrà  r   r"  r
  )r   zsqltypes.Enumrà  r   r"  r
  )r   zTypeDecorator[Any]rà  r   r"  r
  )r   zUserDefinedType[Any]rà  r   r"  r
  )2r  r  r  r¨  r¬  r¯  r²  r¸  r¼  r¿  rÃ  rÇ  rÊ  rÍ  rÐ  rÓ  rÖ  rÙ  rÜ  rà  rä  rç  rê  rí  rð  ró  rø  rû  rþ  r	  r	  r	  r
	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r!	  r#	  r&	  r(	  r*	  r  r.	  r1	  r  r  r  r¥  r¥  š  sÏ  „ óóð"Ø3ð"Ø;>ð"à	ó"ó
ó	ó	óóóóóóóóóð +/Ø<@ðàðð ðð !ð	ð
 (ðð :ðð ðð 
óó(
ó
ó
ó
ó
óóóIóLóó
0ð,Ø)ð,Ø14ð,à	ó,ó
/ó,ó0ó,ó.ð0Ø*ð0Ø25ð0à	ó0ó
/ó,ó-ó.ó/ó/ó/ó,ð,Ø)ð,Ø14ð,à	ó,ó
/ò
ðCØ'ðCØ/2ðCà	óCð
(Ø)ð(Ø14ð(à	ô(r  r¥  c                  ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚStrSQLTypeCompilerc                ór   — 	 |j                   } || fi |¤ŽS # t        $ r  | j                  |fi |¤ŽcY S w xY wr  )rè  ÚAttributeErrorÚ_visit_unknown)r  r   rà  rè  s       r  rÌ  zStrSQLTypeCompiler.process‚  sN   € ð	2Ø!&×!9Ñ!9Ðñ & dÑ1¨bÑ1Ð1øô ò 	4Ø&�4×&Ñ& uÑ3°Ñ3Ò3ð	4ús   ‚ —6µ6c                óR   — |j                  d«      r| j                  S t        |«      ‚)Nr¿  )rŠ  r6	  r5	  )r  rF  s     r  Ú__getattr__zStrSQLTypeCompiler.__getattr__Š  s%   € Ø�>‰>˜(Ô#Ø×&Ñ&Ð&ä  Ó%Ð%r  c                óº   — |j                   j                  |j                   j                  j                  «       k(  r|j                   j                  S t        |«      S r  )r×  r  ÚupperÚreprr	  s      r  r6	  z!StrSQLTypeCompiler._visit_unknown�  sA   € Ø�?‰?×#Ñ# u§¡×'?Ñ'?×'EÑ'EÓ'GÒGØ—?‘?×+Ñ+Ð+ä˜“;Ðr  c                 ó   — yr  r  r	  s      r  r  zStrSQLTypeCompiler.visit_null–  r  r  c                ó`   — 	 |j                   } |di |¤ŽS # t        $ r t        |«      cY S w xY wrt  )r0	  r5	  r;	  )r  r   rà  r0	  s       r  r1	  z%StrSQLTypeCompiler.visit_user_defined™  s=   € ð	&Ø ×-Ñ-ˆLñ  Ñ% "Ñ%Ð%øô ò 	Ü˜“;Òð	ús   ‚ –-¬-N)r  r  r  rÌ  r8	  r6	  r  r1	  r  r  r  r3	  r3	  �  s   „ ò2ò&òòó&r  r3	  c                  ó   — e Zd Zdd„Zy)Ú_SchemaForObjectCallablec                ó   — y r  r  )r  ré  s     r  r!  z!_SchemaForObjectCallable.__call__£  ó   � r  N)ré  r   r"  r
  r$  r  r  r  r?	  r?	  ¢  s   „ Ü/r  r?	  c                  ó   — e Zd Zdd„Zy)rU  c                 ó   — y r  r  )r  r  s     r  r!  z _BindNameForColProtocol.__call__§  rA	  r  N)r  ru  r"  r
  r$  r  r  r  rU  rU  ¦  s   „ Ü:r  rU  c                  óf  — e Zd ZU dZeZeZeZ	de
d<   de
d<   de
d<    ej                  d«      Zde
d	<   	 d
Zde
d<   	 	 	 	 	 d+	 	 	 	 	 	 	 	 	 	 	 d,d„Zd„ Z	 	 	 	 	 	 d-d„Zd.d„Zd.d„Zd„ Zd.d„Zd/d„Zd„ Zd0d„Zd1d„Zd2d„Z	 d3	 	 	 	 	 d4d„Z	 d2	 	 	 	 	 d5d„Z	 d2	 	 	 	 	 d6d„Zd2d„Z ej@                  d«      	 d3	 	 	 	 	 d7d„«       Z!	 d3	 	 	 	 	 d8d „Z"	 d3	 	 	 	 	 d8d!„Z#	 	 	 	 	 	 	 	 d9d"„Z$d:d#„Z%	 	 d;	 	 	 	 	 	 	 d<d$„Z&d%„ Z'	 d2d&„Z(	 	 	 	 	 d=	 	 	 	 	 	 	 	 	 	 	 	 	 d>d'„Z)d3d(„Z*ejV                  d)„ «       Z,d?d*„Z-y)@r¼  z@Handle quoting and case-folding of identifiers based on options.r
  Úinitial_quoteÚfinal_quotezMutableMapping[str, str]Ú_stringsr(   r?	  rÇ  Fr2  Ú_includes_none_schema_translateNc                óä   — || _         || _        |xs | j                  | _        || _        | j                  dz  | _        || _        || _        i | _        | j                   j                  dv | _	        y)as  Construct a new ``IdentifierPreparer`` object.

        initial_quote
          Character that begins a delimited identifier.

        final_quote
          Character that ends a delimited identifier. Defaults to
          `initial_quote`.

        omit_schema
          Prevent prepending schema name. Useful for databases that do
          not support schemae.
        r6   )rÚ   rØ   N)
rÅ  rE	  rF	  Úescape_quoteÚescape_to_quoteÚomit_schemaÚquote_case_sensitive_collationsrG	  r‰  rÍ  )r  rÅ  rE	  rF	  rJ	  rM	  rL	  s          r  rÑ  zIdentifierPreparer.__init__Æ  st   € ð. ˆŒØ*ˆÔØ&Ò<¨$×*<Ñ*<ˆÔØ(ˆÔØ#×0Ñ0°1Ñ4ˆÔØ&ˆÔØ/NˆÔ,ØˆŒØ $§¡× 7Ñ 7ð <
ð !
ˆÕr  c                óÊ   ‡— | j                   j                  | j                   «      }|j                  j                  | j                  «       d |v Šˆfd„}||_        ‰|_        |S )Nc                óÀ   •— | j                   }| j                  r:|€‰r6|� d|v sd|v rt        j                  d|z  «      ‚t	        d|xs dz  d¬«      S | j                   S )NrF  rG  zJSquare bracket characters ([]) not supported in schema translate name '%s'z__[SCHEMA_%s]Ú_noneF©rÅ  )r(   Ú_use_schema_mapr7   r   r3   )ré  r  Úincludes_nones     €r  Úsymbol_getterz@IdentifierPreparer._with_schema_translate.<locals>.symbol_getterð  sw   ø€ Ø—:‘:ˆDØ×"Ò"¨Ð(8¹MØÐ#¨°©¸¸t¹Ü×*Ñ*ð8Ø:>ñ?óð ô #Ø# t¢¨wÑ7¸uôð ð —z‘zÐ!r  )r×  Ú__new__r•  r–  rÇ  rH	  )r  rº  rô  rT	  rS	  s       @r  rÇ  z)IdentifierPreparer._with_schema_translateê  sX   ø€ Ø�~‰~×%Ñ% d§n¡nÓ5ˆØ�‰×Ñ˜TŸ]™]Ô+àÐ 4Ð4ˆô	"ð "/ˆÔØ/<ˆÔ,Øˆr  c                óž   ‡ ‡— |Šd ‰v r)‰ j                   st        j                  d«      ‚‰d    ‰d<   ˆˆ fd„}t        j                  d||«      S )Nzâschema translate map which previously did not have `None` present as a key now has `None` present; compiled statement may lack adequate placeholders.  Please use consistent keys in successive schema_translate_map dictionaries.rP	  c                óð   •— | j                  d«      }|‰v r‰|   }n|dv rt        j                  d«      ‚|}|s-‰j                  j                  }|st        j
                  d«      ‚‰j                  |«      S )Nr6   )NrP	  zâschema translate map which previously had `None` present as a key now no longer has it present; don't know how to apply schema for compiled statement. Please use consistent keys in successive schema_translate_map dictionaries.zLDialect has no default schema name; can't use None as dynamic schema target.)r    r7   rI  rÅ  Údefault_schema_namer   rÈ  )rÅ  r  rÍ  Údr  s      €€r  ræ  z=IdentifierPreparer._render_schema_translates.<locals>.replace   s‹   ø€ Ø—7‘7˜1“:ˆDØ�q‰yØ#$ T¡7Ñ à˜?Ñ*Ü×1Ñ1ð=óð ð $(Ð á#Ø#'§<¡<×#CÑ#CÐ Ù'ä×*Ñ*ð=óð ð ×$Ñ$Ð%5Ó6Ð6r  z(__\[SCHEMA_([^\]]+)\]))rH	  r7   rI  r|  rÐ  )r  r;  rº  ræ  rY	  s   `   @r  rÍ  z,IdentifierPreparer._render_schema_translates   s\   ù€ ð !ˆØ�1‰9Ø×7Ò7Ü×-Ñ-ð9óð ð ˜4™ˆAˆg‰Jõ	7ô2 �v‰vÐ0°'¸9ÓEÐEr  c                óŽ   — |j                  | j                  | j                  «      }| j                  r|j                  dd«      }|S )z€Escape an identifier.

        Subclasses should override this to provide database-dependent
        escaping behavior.
        rA  rä  )ræ  rJ	  rK	  rÍ  ©r  rñ  s     r  Ú_escape_identifierz%IdentifierPreparer._escape_identifier-   s>   € ð —‘˜d×/Ñ/°×1EÑ1EÓFˆØ× Ò Ø—M‘M # tÓ,ˆEØˆr  c                óN   — |j                  | j                  | j                  «      S )z±Canonicalize an escaped identifier.

        Subclasses should override this to provide database-dependent
        unescaping behavior that reverses _escape_identifier.
        )ræ  rK	  rJ	  r[	  s     r  Ú_unescape_identifierz'IdentifierPreparer._unescape_identifier9   s!   € ð �}‰}˜T×1Ñ1°4×3DÑ3DÓEÐEr  c                óx   — |�7|j                  |«      s&t        j                  d|›d|j                  ›d�«      ‚|S )zÞkeyword sequence filter.

        a filter for elements that are intended to represent keyword sequences,
        such as "INITIALLY", "INITIALLY DEFERRED", etc.   no special characters
        should be present.

        zUnexpected SQL phrase: z (matching against rC  )rU  r7   r   r  )r  rÞ  r  s      r  rk  z&IdentifierPreparer.validate_sql_phraseB   s=   € ð Ð s§y¡y°Ô'9Ü×"Ò"â˜CŸK›Kð)óð ð ˆr  c                óX   — | j                   | j                  |«      z   | j                  z   S )z~Quote an identifier.

        Subclasses should override this to provide database-dependent
        quoting behavior.
        )rE	  r\	  rF	  r[	  s     r  Úquote_identifierz#IdentifierPreparer.quote_identifierR   s3   € ð ×ÑØ×%Ñ% eÓ,ñ-à×Ññð	
r  c                óÆ   — |sy|j                  «       }|| j                  v xs? |d   | j                  v xs, | j                  j	                  t        |«      «       xs ||k7  S )z5Return True if the given identifier requires quoting.Tr   )r™  Úreserved_wordsÚillegal_initial_charactersÚlegal_charactersrU  r
  )r  rñ  Úlc_values      r  r×  z#IdentifierPreparer._requires_quotes_   sn   € áð
 Ø—;‘;“=ˆà˜×+Ñ+Ð+ò #Ø�Q‰x˜4×:Ñ:Ð:ò#à×(Ñ(×.Ñ.¬s°5«zÓ:Ð:ò#ð ˜EÑ!ð		
r  c                óL   — | j                   j                  t        |«      «       S )zjReturn True if the given identifier requires quoting, but
        not taking case convention into account.)re	  rU  r
  r[	  s     r  rœ  z1IdentifierPreparer._requires_quotes_illegal_charso   s"   € ð ×(Ñ(×.Ñ.¬s°5«zÓ:Ð:Ð:r  c                ó$   — | j                  |«      S )a†  Conditionally quote a schema name.


        The name is quoted if it is a reserved word, contains quote-necessary
        characters, or is an instance of :class:`.quoted_name` which includes
        ``quote`` set to ``True``.

        Subclasses can override this to provide database-dependent
        quoting behavior for schema names.

        :param schema: string schema name
        rQ	  )r  r(   s     r  rÈ  zIdentifierPreparer.quote_schemat   s   € ð �z‰z˜&Ó!Ð!r  c                ó   — t        |dd«      }|€k|| j                  v r| j                  |   S | j                  |«      r| j                  |«      | j                  |<   n|| j                  |<   | j                  |   S |r| j                  |«      S |S )a�  Conditionally quote an identifier.

        The identifier is quoted if it is a reserved word, contains
        quote-necessary characters, or is an instance of
        :class:`.quoted_name` which includes ``quote`` set to ``True``.

        Subclasses can override this to provide database-dependent
        quoting behavior for identifier names.

        :param ident: string identifier
        rÅ  N)r‡  rG	  r×  ra	  )r  rÆ  Úforces      r  rÅ  zIdentifierPreparer.quoteƒ   s�   € ô ˜˜w¨Ó-ˆàˆ=Ø˜Ÿ™Ñ%Ø—}‘} UÑ+Ð+à×(Ñ(¨Ô/Ø+/×+@Ñ+@ÀÓ+G�D—M‘M %Ò(à+0�D—M‘M %Ñ(Ø—}‘} UÑ+Ð+ÙØ×(Ñ(¨Ó/Ð/àˆLr  c                óv   — | j                   r| j                  |«      }n|}|�| j                  |«      › d|› �S |S r  )rM	  rÅ  rÈ  )r  Úcollation_namerÔ  r  s       r  rÒ  z#IdentifierPreparer.format_collationŸ   sG   € Ø×/Ò/Ø—:‘:˜nÓ-‰Dà!ˆDàÐ'Ø×'Ñ'Ð(8Ó9Ð:¸!¸D¸6ÐBÐBàˆKr  c                ó¬   — | j                  |j                  «      }| j                  |«      }| j                  s|r|�| j	                  |«      dz   |z   }|S r  )rÅ  r  rÇ  rL	  rÈ  )r  r¢  r²  r  rÍ  s        r  r   z"IdentifierPreparer.format_sequenceª   s[   € ð �z‰z˜(Ÿ-™-Ó(ˆà×1Ñ1°(Ó;Ðð × Ò ÙØ Ð,à×$Ñ$Ð%5Ó6¸Ñ<¸tÑCˆDØˆr  c                ó@   — | j                  |xs |j                  «      S r  ©rÅ  r  )r  r  r  s      r  r²  zIdentifierPreparer.format_label¹   s   € ð �z‰z˜$Ò, %§*¡*Ó-Ð-r  c                óf   — |€|€J ‚| j                  |j                  «      S | j                  |«      S r  ro	  )r  rÁ  r  s      r  rÑ  zIdentifierPreparer.format_alias¾   s7   € ð ˆ<ØÐ$Ð$Ð$Ø—:‘:˜eŸj™jÓ)Ð)à—:‘:˜dÓ#Ð#r  c                ój   — |xs |j                   }| j                  |«      r| j                  |«      }|S r  )rÆ  r×  ra	  )r  Ú	savepointr  rÆ  s       r  rj  z#IdentifierPreparer.format_savepointÇ   s5   € ð Ò'˜	Ÿ™ˆØ× Ñ  Ô'Ø×)Ñ)¨%Ó0ˆEØˆr  zsqlalchemy.sql.namingc                ó"  — t         j                  j                  }|j                  t        u r|j                  ||j                  «      }|€y |j                  }|€J ‚|j                  dk(  r| j                  ||¬«      S | j                  ||¬«      S )Nr’  )Ú_alembic_quote)
r+   rP  Ú
sql_namingr  r0   Ú_constraint_name_for_tabler§   r   Útruncate_and_render_index_nameÚ#truncate_and_render_constraint_name)r  rÊ   rt	  Únamingr  s        r  rH  z$IdentifierPreparer.format_constraintÐ   s£   € ô —‘×*Ñ*ˆà�?‰?œjÑ(Ø×4Ñ4Ø˜J×,Ñ,óˆDð ˆ|Øà—?‘?ˆDàÐÐÐØ×$Ñ$¨Ò/Ø×6Ñ6Ø ^ð 7ó ð ð ×;Ñ;Ø ^ð <ó ð r  c                ó„   — | j                   j                  xs | j                   j                  }| j                  |||«      S r  )rÅ  Úmax_index_name_lengthrŽ  Ú _truncate_and_render_maxlen_name©r  r  rt	  Úmax_s       r  rw	  z1IdentifierPreparer.truncate_and_render_index_nameê   sD   € ð �L‰L×.Ñ.ò 2Ø�|‰|×1Ñ1ð 	ð ×4Ñ4Ø�$˜ó
ð 	
r  c                ó„   — | j                   j                  xs | j                   j                  }| j                  |||«      S r  )rÅ  Úmax_constraint_name_lengthrŽ  r|	  r}	  s       r  rx	  z6IdentifierPreparer.truncate_and_render_constraint_nameø   sD   € ð �L‰L×3Ñ3ò 2Ø�|‰|×1Ñ1ð 	ð ×4Ñ4Ø�$˜ó
ð 	
r  c                óü   — t        |t        j                  «      r3t        |«      |kD  r@|d|dz
   dz   t	        j
                  |«      dd  z   }n| j                  j                  |«       |s|S | j                  |«      S )Nr   rp  r@  éüÿÿÿ)	rÊ  r$   rL   rÌ  r+   Úmd5_hexrÅ  Úvalidate_identifierrÅ  )r  r  r~	  rt	  s       r  r|	  z3IdentifierPreparer._truncate_and_render_maxlen_name!  ss   € ô �dœH×5Ñ5Ô6Ü�4‹y˜4ÒØ˜A  q¡Ð)¨CÑ/´$·,±,¸tÓ2DÀRÀSÐ2IÑI‘à�L‰L×,Ñ,¨TÔ2áØˆKà—:‘:˜dÓ#Ð#r  c                ó0   — | j                  |«      }|€J ‚|S r  )rH  )r  r’  r  s      r  r  zIdentifierPreparer.format_index!  s#   € Ø×%Ñ% eÓ,ˆØÐÐÐØˆr  c                óä   — |€$t         rt        |t        «      sJ ‚|j                  }| j	                  |«      }| j                  |«      }| j                  s|r|r| j                  |«      dz   |z   }|S )z'Prepare a quoted table and schema name.rE  )r   rÊ  re   r  rÅ  rÇ  rL	  rÈ  )r  r§   r²  r  rr  rÍ  s         r  r%  zIdentifierPreparer.format_table!  sr   € ð ˆ<ÝÜ! %¬Ô9Ð9Ð9Ø—:‘:ˆDà—‘˜DÓ!ˆà×1Ñ1°%Ó8Ðà×Ò¡JÑ3CØ×&Ñ&Ð'7Ó8¸3Ñ>ÀÑGˆFØˆr  c                ó$   — | j                  |«      S )zPrepare a quoted schema name.rQ	  r­  s     r  rÃ  z IdentifierPreparer.format_schema-!  s   € ð �z‰z˜$ÓÐr  c                ó~   — |�+t        |t        j                  «      r|j                  |«      }| j	                  |«      S )úPrepare a quoted column name.)rÊ  r$   rL   r¥  rÅ  )r  r  r�  s      r  rÅ  z$IdentifierPreparer.format_label_name2!  s;   € ð Ð¤JØ”(×+Ñ+ô%
ð —>‘> (Ó+ˆDà�z‰z˜$ÓÐr  c                óv  — |€|j                   }|€J ‚|�+t        |t        j                  «      r|j	                  |«      }t        |dd«      sF|r3| j                  |j                  ||¬«      dz   | j                  |«      z   S | j                  |«      S |r$| j                  |j                  ||¬«      dz   |z   S |S )r‰	  rÂ  F)r²  r  rE  )	r  rÊ  r$   rL   r¥  r‡  r%  r§   rÅ  )r  r¬   r.  r  Ú
table_namer²  r�  s          r  r/  z IdentifierPreparer.format_column@!  sé   € ð ˆ<Ø—;‘;ˆDØÐ#Ð#Ð#àÐ¤JØ”(×+Ñ+ô%
ð —>‘> (Ó+ˆDä�v˜|¨UÔ3Ùà×%Ñ%ØŸ™°À*ð &ó ð ñð —j‘j Ó&ñ	'ðð —z‘z $Ó'Ð'ñ
 à×%Ñ%ØŸ™°À*ð &ó ð ñð ñ	ðð �r  c                ó´   — | j                  |«      }| j                  s(|r&|r$| j                  |«      | j                  |d¬«      fS | j                  |d¬«      fS )z(Format table name and schema as a tuple.Fr  )rÇ  rL	  rÈ  r%  )r  r§   r²  rÍ  s       r  r»  z#IdentifierPreparer.format_table_seqn!  sj   € ð  ×1Ñ1°%Ó8Ðà×Ò¡JÑ3Cà×!Ñ!Ð"2Ó3Ø×!Ñ! %°EÐ!Ó:ðð ð
 ×%Ñ% e¸Ð%Ó>Ð@Ð@r  c                ó¸   — d„ | j                   | j                  | j                  | j                  «      fD «       \  }}}t        j                  d|||dœz  «      }|S )Nc              3  óF   K  — | ]  }t        j                  |«      –— Œ y ­wr  )r|  r}  r   s     r  rG  z4IdentifierPreparer._r_identifiers.<locals>.<genexpr>�!  s    è ø€ ò )
àô �I‰I�a�Lñ)
ùs   ‚!zM(?:(?:%(initial)s((?:%(escaped)s|[^%(final)s])+)%(final)s|([^\.]+))(?=\.|$))+)ÚinitialÚfinalr  )rE	  rF	  r\	  r|  r~  )r  r�	  r�	  Úescaped_finalÚrs        r  Ú_r_identifiersz!IdentifierPreparer._r_identifiers!  sp   € ñ)
ð ×"Ñ"Ø× Ñ Ø×'Ñ'¨×(8Ñ(8Ó9ðô)
Ñ%ˆ�˜ô �J‰Jð$ð "¨E¸mÑLñMó
ˆð ˆr  c                óº   — | j                   }|j                  |«      D ��cg c]  \  }}|xs |‘Œ c}}D �cg c]  }| j                  |«      ‘Œ c}S c c}}w c c}w )z:Unpack 'schema.table.column'-like strings into components.)r“	  Úfindallr^	  )r  Úidentifiersr’	  Úarœ  r«  s         r  Úunformat_identifiersz'IdentifierPreparer.unformat_identifiers‘!  s]   € ð ×Ñˆð *+¯©°;Ó)?×@¡  A�a’f˜1‘fÓ@ö
àð ×%Ñ% aÕ(ò
ð 	
ùã@ùò
s
   ¡A·A)r¨  Nr¨  TF)rÅ  rv   rE	  r
  rF	  rd  rJ	  r
  rM	  r2  rL	  r2  )r;  r
  rº  rw   r"  r
  )rñ  r
  r"  r
  )rñ  r
  r"  r2  )r(   r
  r"  r
  )rÆ  r
  r"  r
  r  )T)r¢  zschema.Sequencer²  r2  r"  r
  )r  z
Label[Any]r  rd  r"  r
  )rÁ  zOptional[AliasedReturnsRows]r  rd  r"  r
  )rÊ   zUnion[Constraint, Index]rt	  r2  r"  rd  )r  r
  rt	  r2  r"  r
  )r  r
  r~	  rU  rt	  r2  r"  r
  )r’  r\   r"  r
  )TN)r§   rd   r²  r2  r  rd  r"  r
  )FNNFN)r¬   zColumnElement[Any]r.  r2  r  rd  r‹	  rd  r²  r2  r�  zOptional[Mapping[str, Any]]r"  r
  )r–	  r
  r"  zSequence[str]).r  r  r  r  ÚRESERVED_WORDSrc	  ÚLEGAL_CHARACTERSre	  ÚILLEGAL_INITIAL_CHARACTERSrd	  r  rm  Ú
attrgetterrÇ  rH	  rÑ  rÇ  rÍ  r\	  r^	  rk  ra	  r×  rœ  rÈ  rÅ  rÒ  r   r²  rÑ  rj  r+   r…  rH  rw	  rx	  r|	  r  r%  rÃ  rÅ  r/  r»  r�  r“	  r˜	  r  r  r  r¼  r¼  ª  sÔ  … ÙJà#€Nà'Ðà!;ÐàÓàÓà&Ó&à2E°(×2EÑ2EÀhÓ2OÐÐ/ÓOðð -2Ð# TÓ1ð
 !Ø%)ØØ04Ø!ð"
àð"
ð ð"
ð #ð	"
ð
 ð"
ð *.ð"
ð ó"
òHð0)FØð)FØ4Jð)Fà	ó)FóV
óFòó 
ó
ò ;ó
"óó8	ð =AðØ'ðØ59ðà	óð  8<ð.Øð.Ø'4ð.à	ó.ð JNð$Ø1ð$Ø9Fð$à	ó$óð €T×ÑÐ0Ó1àKOðØ2ðØDHðà	òó 2ðð4 15ð
Øð
Ø)-ð
à	ó
ð 15ð
Øð
Ø)-ð
à	ó
ð$Øð$Ø"ð$Ø48ð$à	ó$óð  Ø"ð	àðð ðð ð	ð
 
óò( ð ó ð"  Ø"Ø$(Ø Ø04ð,à"ð,ð ð,ð ð	,ð
 "ð,ð ð,ð .ð,ð 
ó,ó\Að" 
×Ññó ðô"
r  r¼  (  r  Ú
__future__r   rš  Úcollections.abcÚabcr  rƒ  Úenumr   ræ  rÜ  rm  r|  Útimer   r‡  r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r´  r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   rž  Ú_typingr,   r-   r.   r/   r0   r1   r2   r3   r4   Úvisitorsr5   r7   r8   Úutil.typingr9   r:   r;   Ú
annotationr<   r=   r>   r?   r@   rÁ  rA   r¼  rB   rC   rD   rE   ÚdmlrF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   Útype_apiri   rj   rk   rl   rm   Úengine.cursorrn   Úengine.interfacesro   rp   rq   rr   rs   rt   ru   rv   rw   r
  Ú_FromHintsTyper™	  r~  ÚIrš	  ÚLEGAL_CHARACTERS_PLUS_SPACErê  r¨   r›	  r“  r—  r™  rl  r,  Ú_bind_params_regexrõ  ÚUNICODErô  r‹  rŒ  r-  Úor_r  ÚmulrÐ  ÚmodÚnegÚltÚleÚneÚgtÚgeÚeqÚis_distinct_fromÚis_not_distinct_fromÚ	concat_oprå  Únot_match_oprò  rñ  r˜  r©  r±  r•  r–  r¸   ÚexistsrÊ  ÚinvÚany_opÚall_opÚdesc_opÚasc_opÚnulls_first_opÚnulls_last_opÚbitwise_xor_opÚbitwise_or_opÚbitwise_and_opÚbitwise_not_opÚbitwise_lshift_opÚbitwise_rshift_opr°  rè   rÍ   rÏ   rÔ   rÐ   rÇ   rÓ   rï   rð   rÑ   r™   ÚcubeÚrollupÚgrouping_setsrõ   r  r|  Ú_CompoundSelectKeywordr  Ú	UNION_ALLr  Ú
EXCEPT_ALLr  ÚINTERSECT_ALLr}  r	  r  r%  r&  r'  r)  r+  r0  r:  rQ  ra  rn  r~  rƒ  rˆ  rJ  r‰  rŠ  r‹  rŒ  Ú
namedtuplerŽ  r²  ÚEnsureKWArgr  ÚBinaryElementRoleÚCompilerColumnElementr  r#  r2  r÷  r‹  r²  r¥  r3	  r?	  rU  r¼  )rM  s   0r  ú<module>rÖ	     s“  ðòõ$ #ã Ý )Û Ý Û Û Û Û 	Ý Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý !Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý Ý å Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý &Ý Ý Ý Ý Ý 2Ý Ý !Ý Ý %Ý Ý Ý Ý Ý "Ý  à	×ÓÝ+Ý,Ý"Ý Ý)Ý#Ý$Ý"ÝÝ)ÝÝÝÝÝ#ÝÝ*Ý*Ý'Ý'Ý&Ý'Ý ÝÝÝÝ#Ý'ÝÝ"Ý,Ý'ÝÝ,ÝÝ(Ý1Ý.Ý/ÝÝ&Ý+Ý'Ý"Ý'Ý,Ý'Ý$Ý)Ý#Ý4Ý<Ý:Ý<Ý=Ý3Ý=ÝCÝ+Ý:ð �l CÐ'Ñ(€ò_€ðB �2—:’:Ð.°·²Ó5Ð Ø(˜bŸjšjÐ):¸B¿DºDÓAÐ Ù.3°A°r«lÖ;¨™c !�fÒ;×AÒAÀ3À%ÓHÐ àˆr�zŠzØ<¸b¿dºdó€ð ˆr�zŠzØ<¸b¿dºdó€ð ˆr�zŠzÐ5°r·t²tÓ<€Ø�R—Z’ZØ-¨r¯tªtóÐ ð ×!Ò!×4Ò4€Ø�"—*’*Ð3°R·Z²ZÓ@€à$Ð à"ØØØØ$Øñ€ð.à‡N‚N�Gð.ð ‡M‚M�6ð.ð ‡M‚M�5ð	.ð
 ‡M‚M�5ð.ð ‡M‚M�5ð.ð ‡M‚M�5ð.ð ‡M‚M�3ð.ð ‡L‚L�%ð.ð ‡L‚L�&ð.ð ‡L‚L�&ð.ð ‡L‚L�%ð.ð ‡L‚L�&ð.ð ‡L‚L�%ð.ð ×ÒÐ 4ð.ð  ×"Ò"Ð$<ð!.ð" ×Ò˜ð#.ð$ ×Ò˜	ñ%.ð& ×Ò˜Mð'.ð( ‡O‚O�Vð).ð* ×Ò˜ð+.ð, ×Ò˜ð-.ð. ‡O‚O�Xð/.ð0 ‡M‚M�6ð1.ð2 ‡M‚M�6ð3.ð4 ×Ò�jð5.ð6 ×Ò�{ð7.ð: ×Ò�ið;.ð< ×Ò˜;ð=.ð> ‡M‚M�6ð?.ð@ ×Ò�fðA.ðB ×Ò�fðC.ðF ×Ò�wðG.ðH ×Ò�fðI.ðJ ×Ò˜nñK.ðL ×Ò˜]à×Ò˜eØ×Ò˜UØ×Ò˜eØ×Ò˜cØ×Ò Ø×Ò ñ[.€	ðb ×Ò˜
Ø×Ò˜NØ×Ò˜NØ×ÒÐ!4Ø×Ò˜NØ×Ò˜Ø×ÒÐ.Ø×Ò�hØ×Ò�yØ×Ò˜NØ‡N‚N�FØ‡N‚N�FØ×Ò�hØ×Ò˜_ð-€	Ð)ó ð& ØØØØØØØØØØØ"Ø"Ø$Ø(ñ€ð& ×%Ò%×+Ò+¨WØ×%Ò%×/Ò/°Ø×%Ò%×,Ò,¨hØ×%Ò%×0Ò0°,Ø×%Ò%×/Ò/°Ø×%Ò%×3Ò3°_ðÐ ô˜ô ô>˜ô ð  !Ð �*Ó  Ø€ˆÓ Ø€
ˆJÓ Ø€ˆÓ ô˜iô ô1Ð1¸õ 1ô:�Jô :ôzA˜
ô AôH˜Zô ô2! ;ô !ô*1˜Gô 1ô(�Gô ô ˆgô ñ. FKØóFÑ B€
Ð&¨°lô
?#Ð'�×'Ò'¨°wÀÐ6HÓIô ?#÷D'ñ 'õDF�4×#Ò#ô Fö0Ø	×Ò˜CÑ  (×"@Ò"@õö2
Ø	×Ò˜CÑ  (×"@Ò"@õ
öB#
Ø	×Ò˜CÑ  (×"@Ò"@õ#
öLB]
�(õ B]
öJzt
‘[õ t
önw	�(õ w	ötd(˜,õ d(öN&Ñ,õ &öB0˜xõ 0ö;˜hõ ;÷n
õ n
ùòQu <s   Ì?f