Ë
    ÛÍ: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&m1Z2 dd'l3m4Z4 dd(l3m5Z5 dd)l'm6Z6 dd*l'm7Z7 dd+l'm8Z8 dd,l'm9Z9 dd-l'm:Z: dd.l*m;Z; dd/l0m<Z< dd0l=m>Z> d1d2l&m?Z? d1d&l&m1Z1 d1d3l1m@Z@ d1d4lAmBZB d1d5lAmCZC d1d6lAmDZD d1d7lAmEZE ejH                  �rJdd8lFmGZG dd9l'mHZH dd:l'mIZI dd;l'mJZJ dd<lKmLZL dd=lMmNZN dd>lOmPZP dd?lOmQZQ dd@lOmRZR ddAlOmSZS ddBlOmTZT ddCl*mUZU ddDl*mVZV ddEl*mWZW ddFl*mXZX ddGl*mYZY ddHl*mZZZ ddIl*m[Z[ ddJl*m\Z\ ddKl*m]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dVl.mhZh ddWl/miZi ddXl/mjZj ddYl/mkZk ddZl/mlZl dd[l/mmZm dd\l/mnZn dd]l/moZo dd^l/mpZp dd_l/mqZq dd`lrmsZs ddalrmtZt ddblrmuZu ddclrmvZv dddl=mwZw d1delxmyZy d1dflzm{Z{ d1dglzm|Z| d1dhlzm}Z} d1dilzm~Z~ d1djlzmZ d1dklzm€Z€ d1dllzm�Z� d1dmlzm‚Z‚ d1dnlzmƒZƒ edoe„f   Z…h dp£Z† e�j                  dqe�j                  «      Z‰ e�j                  dre�j                  «      ZŠ e‹dds«      D � ch c]
  }  e„| «      ’Œ c} �j                  dtg«      Z� e�j                  due�j                  «      ZŽ e�j                  due�j                  «      Z� e�j                  dve�j                  «      Z� e�j                  dwe�j"                  «      Z’ e�j                  dxe�j"                  «      Z“dyZ”e”dzd{d|d}d~dœZ•i e,�j,                  d€“e,�j.                  d�“e,�j0                  d‚“e,�j2                  dƒ“e,�j4                  d„“e,�j6                  d…“e,�j8                  d†“e,�j:                  d‡“e,�j<                  dˆ“e,�j>                  d‰“e,�j@                  dŠ“e,�jB                  d‹“e,�jD                  dŒ“e,�jF                  d�“e,�jH                  dŽ“e,�jJ                  d�“e,�jL                  d�“i e,�jN                  d‘“e,�jP                  d’“e,�jR                  d““e,�jT                  d”“e,�jV                  d•“e,�jX                  d–“e,�jZ                  d—“e,�j\                  d˜“e,�j^                  d™“e,�j`                  dš“e,�jb                  d›“e,�jd                  dœ“e,�jf                  d�“e,�jh                  dž“e,�jj                  dŸ“e,�jl                  d “e,�jn                  d¡“¥e,�jp                  d¢e,�jr                  d£e,�jt                  d¤e,�jv                  d¥e,�jx                  d¦e,�jz                  d§e,�j|                  d¨i¥Z¿e+�j€                  d©e+�j‚                  dªe+�j„                  d«e+�j†                  d¬e+�jˆ                  d­e+�jŠ                  d®e+�jŒ                  d¯e+�jŽ                  d°e+�j�                  d±e+�j’                  d²e+�j”                  d³e+�j–                  d´e+�j˜                  dµe+�jš                  d¶iZÎd·eÏd¸<   d¹dºd»d¼d½d¾d¿dÀdÁdÂdÃdÄdÅdÆdÇdÈœZÐe/�j¢                  �j¤                  dÉe/�j¢                  �j¦                  dÊe/�j¢                  �j¨                  dËe/�j¢                  �jª                  dÌe/�j¢                  �j¬                  dÍe/�j¢                  �j®                  dÎiZØ G dÏ„ dÐe«      ZÙ G dÑ„ dÒeC«      ZÚdZÛdÓeÏdÔ<   dZÜdÕeÏdÖ<   d1ZÝd×eÏdØ<   dÙZÞdÚeÏdÛ<    G dÜ„ dÝeE«      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é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õe1�jÞ                  «      Zð G dö„ d÷e-�jâ                  e   e*�jä                  «      Zó G dø„ dùe-�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eC«      Zú G �d„ �deC«      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)ÚAny)ÚCallable)Úcast)ÚClassVar)ÚDict)Ú	FrozenSet)ÚIterable)ÚIterator)ÚList)ÚMapping)ÚMutableMapping)Ú
NamedTuple)ÚNoReturn)ÚOptional)ÚPattern)ÚSequence)ÚSet)ÚTuple)ÚType)ÚTYPE_CHECKING)Ú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)ÚLiteral)ÚProtocol)ÚSelf)Ú	TypedDict)Ú_AnnotationDict)Ú_AmbiguousTableNameMap)ÚCompileState)Ú
Executable)ÚCacheKey)ÚExecutableDDLElement)Ú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)ÚSchemaTranslateMapTyper[   >^   Ú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%(?<![:\w\$\x5c]):([\w\$]+)(?![:\w\$])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 z	 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__© ó    úl/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/sqlalchemy/sql/compiler.pyrÿ   rÿ   n  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_fromsr]   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_compoundr]   Úselect_0úSelect[Any]Úinsert_from_selectNr$  r  r  r  r&  r&  ¥  s    … ØÓØ $Ó$Ø"&Ó&ØÓØ#Ô#r  r&  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   Ú	statementrf   Ú
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  ©r2  )Ú.0Úkeyr  s     €r  ú	<genexpr>z6ExpandedState.positional_parameters.<locals>.<genexpr>â  s   øè ø€ ÒF¨c�T—_‘_ SÕ)ÑFùó   ƒ)r6  r2   Ú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`.r:  rA  s    r  Úadditional_parametersz#ExpandedState.additional_parametersä  s   € ð �‰Ðr  N)r  r  )r  rf   )r  r	  r
  r  r  ÚpropertyrB  rD  r  r  r  r0  r0  ­  si   … ñð" ƒNØ=à(Ó(ðð 6Ó5Ø+à(Ó(ðð 1Ó0ðð ò	Gó ð	Gð òó ñr  r0  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

    r(  Ú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_columnsr5  Úsentinel_param_keysÚimplicit_sentinelÚhas_upsert_bound_parametersÚembed_values_counter)r  r	  r
  r  r  rM  rN  rP  rQ  rR  rS  rT  rU  r  r  r  rG  rG  ê  sÉ   … ñð Óðð
 Óðð 8Ó7ØMà#&Ó&ð
ð %*Ð˜TÓ)ðð ',Ð˜tÓ+ðð 9=ÐÐ5Ó<ðð !"Ð˜#Ó!ðð 48ÐÐ0Ó7ðð  $Ð�tÓ#ð	ð ).Ð Ó-ð
ð "'Ð˜$Ó&ð	r  rG  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_statementrg   Úreplaced_parametersú#Optional[_GenericSetInputSizesType]Úprocessed_setinputsizesz#Sequence[_DBAPISingleExecuteParams]ÚbatchzSequence[Tuple[Any, ...]]Úsentinel_valuesrK  Úcurrent_batch_sizeÚbatchnumÚtotal_batchesr(  Úrows_sortedÚis_downgradedNr  r  r  r  rW  rW  n  sD   … ñ
ð ÓØ/Ó/Ø@Ó@Ø.Ó.Ø.Ó.ØÓØƒMØÓØÓØÔr  rW  c                  óB   — e Zd ZdZdZdZdZdZe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   r1   é   é   é   é@   N)r  r	  r
  r  ÚNOT_SUPPORTEDÚAUTOINCREMENTÚIDENTITYÚSEQUENCEÚANY_AUTOINCREMENTÚ_SUPPORTED_OR_NOTÚUSE_INSERT_FROM_SELECTÚRENDER_SELECT_COL_CASTSr  r  r  rd  rd  ‡  sE   „ ñð
 €MØ€MØ€HØ€Hà%¨Ñ0°8Ñ;ÐØ%Ð(9Ñ9ÐàÐØ Ñr  rd  c                  ó   — e Zd ZdZ	 dZ	 dZy)ÚCompilerStater   r   r1   N)r  r	  r
  Ú	COMPILINGÚSTRING_APPLIEDÚNO_STATEMENTr  r  r  rr  rr  ™  s    „ Ø€IØ=à€Nðð €Lðr  rr  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   r1   N)r  r	  r
  r  Ú
NO_LINTINGÚCOLLECT_CARTESIAN_PRODUCTSÚWARN_LINTINGÚFROM_LINTINGr  r  r  rw  rw  ©  s5   „ ñð €JØà!"Ððð €LØ2à-°Ñ<€Lðr  rw  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)r;  ÚedgeÚnodes     €r  r=  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…  )r;  Úfrom_r  s     €r  r=  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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]r1  Ú r   Ústringrr  ÚstateFzOptional[CursorResultMetaData]Ú_cached_metadataz"Optional[List[ResultColumnsEntry]]Ú_result_columnsú Optional[SchemaTranslateMapType]Úschema_translate_maprj   Úexecution_optionsÚIdentifierPreparerÚpreparerr8   Ú_annotationszOptional[CompileState]r'  Ú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_translaterr  rs  r¥  r1  Úsupports_executionÚcan_executer­  r   Ú
isinstancer;   Ú_execution_optionsrª  Úprocessr¤  Ú_render_schema_translatesrt  ru  r   r²  ©r  r´  r1  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                ó~   — | j                   r|j                  | ||«      S t        j                  | j                  «      ‚r  )r¸  Ú_execute_compiledr2   ÚObjectNotExecutableErrorr1  )r  Ú
connectionÚdistilled_paramsrª  s       r  Ú_execute_on_connectionzCompiled._execute_on_connectionœ  s@   € ð ×ÒØ×/Ñ/ØÐ&Ð(9óð ô ×.Ñ.¨t¯~©~Ó>Ð>r  c                óB   — t        j                  | t        |«      «      |‚r  ©r2   Ú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'.

        ©ÚNotImplementedErrorrA  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¥  rr  rt  r¤  rA  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ç  rA  s    r  rä  zCompiled.paramsÍ  s   € ð ×$Ñ$Ó&Ð&r  )
r´  rm   r1  r¢  r©  r¨  r¾  r(  r¿  úMapping[str, Any])r  r  ©r  ÚSQLCompiler)rÞ  rd   rß  r   r  r   ©r  r   ©NNT©rä  ú"Optional[_CoreSingleExecuteParams]rå  ú&Optional[Sequence[BindParameter[Any]]]ræ  r(  r  z)Optional[_MutableCoreSingleExecuteParams])!r  r	  r
  r  r1  r  r¤  Úis_sqlÚis_ddlr¦  r§  r©  r&   Ú
EMPTY_DICTrª  r­  r'  r®  r°  ÚimmutabledictrÀ  rÄ  ÚclassmethodrÂ  rÎ  rÖ  rE  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  )r2   rÑ  rÒ  s       r  rÖ  z*TypeCompiler.visit_unsupported_compilationã  s   € ô ×-Ñ-¨d°GÓ<À#ÐEr  N)r´  rm   )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_setrA  s    r  r  z_CompileLabel.proxy_setø  ó   € à�|‰|×%Ñ%Ð%r  c                ó.   — | j                   j                  S r  ©rÓ  r  rA  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À  rE  r  r  r  r  r  r  r  r  ë  sD   „ ñ Fà€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  r  )r  rÓ  s     r  rÀ  zilike_case_insensitive.__init__  s   € ØˆŒØ!×,Ñ,ˆ�r  c                ó.   — | j                   j                  S r  r  rA  s    r  r  z ilike_case_insensitive.proxy_set  r  r  c                ó.   — | j                   j                  S r  r  rA  s    r  r  zilike_case_insensitive.type  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  )r  rÓ  Ú_with_binary_element_type)r  r  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À  rE  r  r  r  r!  r  r  r  r  r    sJ   „ ñ	ð 6€NØ'€Iò-ð ñ&ó ð&ð ñ!ó ð!òó
r  r  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@<   	 dZ'	 dZ(	 dZ)dAe	dB<   	 dZ*d6e	dC<   	 dZ+d6e	dD<   dZ,d6e	dE<   dZ-de	dF<   dGe	dH<   dIe	dJ<   dKe	dL<   de	dM<    e.j^                  dN«      Z0 e.j^                  dO«      Z1 e.j^                  e1jd                  › dPe0jd                  › �«      Z3e4dQ„ «       Z5e4dR„ «       Z6ddde7df	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �ddT„Z8e9�ddU„«       Z:ejv                  �ddV„«       Z<e9dW„ «       Z=e9dX„ «       Z>e9dY„ «       Z?ej€                  �ddZ„«       ZAej„                  �d	d[„«       ZCeDjŠ                  d\„ «       ZFd]„ ZGd^„ ZHej€                  	 	 �d
d_„«       ZId`„ ZJe9�dda„«       ZK	 	 �d	 	 	 	 	 �ddb„ZL	 	 	 	 	 	 �d	 	 	 	 	 	 	 	 	 	 	 	 	 �ddc„ZMej„                  dd„ «       ZNe9de„ «       ZO	 �d	 	 	 	 	 �ddf„ZP ej¢                  dg«      dh„ «       ZRdie	dj<   ej€                  �ddk„«       ZSej€                   ej¢                  dl«      dm„ «       «       ZTej€                   ej¢                  dl«      dn„ «       «       ZU�ddo„ZVdp„ ZW�ddq„ZXdr„ ZY	 �dds„ZZ	 �ddt„Z[	 	 	 	 	 �ddu„Z\dv„ Z]dw„ Z^	 	 	 	 �d	 	 	 	 	 	 	 	 	 	 	 	 	 �ddx„Z_dy„ Z`dz„ Zad{„ Zbd|„ Zcd}„ Zdd~„ Ze�dd„Zf	 �dd€„Zg�dd�„Zh�dd‚„Zi�ddƒ„Zjd„„ Zkd…„ Zld†„ Zmd‡„ Zndˆ„ Zod‰„ ZpdŠ„ Zqd‹„ ZrdŒ„ Zsd�„ ZtdŽ„ Zud�„ Zvd�„ Zwd‘„ Zx	 �d	 	 	 	 	 	 	 �dd’„Zyd“„ Zzd”„ Z{�dd•„Z|	 �d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ˆ	 �dd¢„Z‰d£„ ZŠ	 	 	 	 �d d¤„Z‹d¥„ ZŒd¦„ Z�d§„ ZŽd¨„ Z�d©„ Z�	 �d	 	 	 	 	 	 	 	 	 �d!dª„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Ä„Z«dÅ„ Z¬e­dfdÆ„Z®	 	 	 	 	 	 �d$dÇ„Z¯dÈ„ Z°	 	 	 	 	 	 �d%dÉ„Z±�d&dÊ„Z²	 	 	 	 	 	 �d'	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d(dË„Z³dÌ„ Z´ddddd eµ�jl                  d«      f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d)dÍ„Z·dÎ„ Z¸dÏ„ Z¹	 	 	 	 	 	 	 	 �d*dÐ„ZºdÑ„ Z»dÒ„ Z¼�ddÓ„Z½dÔ„ Z¾	 �d+dÕ„Z¿dÖ„ ZÀd×„ ZÁ	 	 	 	 	 	 	 	 	 	 �d,dØ„ZÂ	 �ddÙ„ZÃ	 	 	 	 	 	 	 �d-dÚ„ZÄdÛ„ ZÅdÜ„ ZÆ	 	 	 	 	 	 �d.dÝ„ZÇdÞ„ ZÈdß„ ZÉdàe	dá<   eÊ�j–                  s" ej                  dâ e"«       fdã e"«       fg«      ZÌ	 �ddä„ZÍdZÎdSe	då<   	 	 	 	 	 	 	 	 �d/dæ„ZÏ	 	 	 	 �d0dç„ZÐdè„ ZÑdé„ ZÒdê„ ZÓ	 	 �ddë„ZÔdì„ ZÕ�d1dí„ZÖdî„ Z×dï„ ZØdð„ ZÙ	 	 	 	 	 	 	 	 	 	 �d2dñ„ZÚdò„ ZÛ	 	 	 �d3dó„ZÜ	 	 	 	 	 	 	 	 �d4dô„ZÝ�d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Î                  i«      Zèeè�jÓ                  eà�jÊ                  eâ�jÔ                  i«      Zë	 	 	 	 �d5d÷„Zì	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d6dø„Zí	 �d7dù„Zîdú„ Zïdû„ Zðdü„ Zñdý„ Zò	 �d	 	 	 	 	 	 	 �d8dþ„Zódÿ„ Zô�d „ Zõ�d�d„Zö�d„ Z÷�d„ Zø�d„ Zùy(9  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_charsTFr(  Ú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_nameszbOptional[Tuple[Dict[BindParameter[Any], List[BindParameter[Any]]], Dict[str, BindParameter[Any]]]]Ú_cache_key_bind_matchr6  Ú_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ú|c                ó$   — | j                  «        y r  )Ú_init_bind_translaterÈ  s    r  rÂ  zSQLCompiler._init_compiler_clsS  s   € à× Ñ Õ"r  c                ó¾   — t        j                  dj                  | j                  «      «      }t        j                  d|› d�«      | _        | j                  | _        y )Nr£  r-  r.  )ÚreÚescaperˆ   r0  Úcompiler1  r2  )rÅ  Úregs     r  r^  z SQLCompiler._init_bind_translateW  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 | _        t7        j8                  | ||fi |¤Ž | j:                  s| j<                  s| j>                  r�t@        rtC        |tD        «      sJ ‚| j:                  s| j<                  rmt@        rtC        |tF        «      sJ ‚|jH                  rd| _%        nA| j                  r5| j:                  r"| jL                  jN                  r|jP                  rd| _%        t&        |j                     | _)        |rK| jT                  jW                  |jT                  jY                  «       D ��ci c]  \  }}|dvr||“Œ c}}«       | jZ                  t\        j^                  u rm| j                  r-| j                  r| ja                  «        n| jc                  «        | jd                  r'| jg                  d	d¬
«      }| ji                  |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Í   r+  NT>   r¥  r´  r¬  Ú
positionalrA  rH  rB  F©ræ  Ú_no_postcompile)Ú_populate_self)5Úcolumn_keysr°  r<  rT  Úfor_executemanyÚlintingr<  r&   Úcolumn_dictr=  r’  r§  re  Ú
paramstyleÚ
startswithrH  rC  Ú_pyformat_templaterB  ÚBIND_TEMPLATESrX  Úlabel_lengthÚmax_identifier_lengthr0   Úanon_mapÚtruncated_namesÚ_truncated_countersr¡  rÀ  r4  r5  r3  r   r¹  r@   rB   Ú_inlinerW  r´  Úinsert_executemany_returningÚ_return_defaultsrA  Ú__dict__ÚupdateÚitemsr¥  rr  rt  Ú_process_numericÚ_process_positionalrI  rç  Ú#_process_parameters_for_postcompile)r  r´  r1  r°  ri  rj  rk  Ú_supporting_againstrß  ÚbÚcksmÚckbmÚnbÚkÚvr2  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ˆÔ ä×Ñ˜$ ¨Ñ=°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ùòy 4ùÚ1ùóVs   ˜Lµ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.

        .. versionadded:: 1.3.8

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

        )r‹  rA  s    r  Ú	returningzSQLCompiler.returning  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.

        .. versionadded:: 1.3.21

            For compatibility with previous versions, use the following
            recipe::

                statement = getattr(self, "current_executable", False)
                if statement is False:
                    statement = self.stack[-1]["selectable"]

            For versions 1.4 and above, ensure only .current_executable
            is used; the format of "self.stack" may change.


        éÿÿÿÿr$   z$Compiler does not have a stack entryN)r’  Ú
IndexError)r  Úies     r  Úcurrent_executablezSQLCompiler.current_executable#  s;   € ð<	MØ—:‘:˜b‘> ,Ñ/Ð/øÜò 	MÜÐCÓDÈ"ÐLûð	Mús   ‚ ”	.�)©.c                óX   — t        | j                  «      t        | j                  «      z   S r  )Úlistr7  r8  rA  s    r  ÚprefetchzSQLCompiler.prefetchF  s#   € ä�D×(Ñ(Ó)¬D°×1EÑ1EÓ,FÑFÐFr  c                ó   — i S r  r  rA  s    r  Ú_global_attributeszSQLCompiler._global_attributesJ  s   € àˆ	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&   ÚOrderedDictrX  rY  rZ  r[  )r  rX  s     r  Ú_init_cte_statezSQLCompiler._init_cte_stateN  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�  Tr)  N)r§  rF  r’  rˆ  )r  Úresult_columnsÚordered_columnsÚentrys       r  Ú_nested_resultzSQLCompiler._nested_resultf  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                ó  ‡‡	— | 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 Š	dˆˆ	fd„}t        j                  | j                  || j                  «      | _
        | j                  rv| j                  j                  «       D ��ci c]  \  }}||“Œ
 }}}t        | j                  «      t        |«      k(  sJ ‚‰	D �cg c]  }|j                  ||«      ‘Œ c}| _         n‰	| _         | j                  r¬g Š	t        j                  | j                  || j                  j                   «      }| j                  j"                  D �cg c]3  }|d   |d   t        j                  | j                  ||d   «      |d	   f‘Œ5 }}| j                  j%                  ||¬
«      | _        y y c c}}w c c}w c c}w )NrÑ   ú%srÐ   rÎ   c                ó²   •— | j                  d«      }|r‰j                  |«       ‰S ‰j                  | j                  d«      «       | j                  d«      S )Nr   r1   r   )r—   Úappend)ÚmÚnormal_bindÚplaceholderÚ	positionss     €€r  Úfind_positionz6SQLCompiler._process_positional.<locals>.find_position‹  sM   ø€ ØŸ'™' !›*ˆKÙØ× Ñ  Ô-Ø"Ð"ð × Ñ  §¡¨£Ô,Ø—w‘w˜q“zÐ!r  r   r   r1   r  ©rI  rJ  )r¤  zre.Match[str]r  r   )r6  r¥  rr  rt  rH  r´  rm  r`  ÚsubÚ_positional_patternr¤  rS  r{  ÚlenÚgetrO  rI  rJ  Ú_replace)
r  r¨  r„  r…  Úreverse_escaper  rI  rJ  r¦  r§  s
           @@r  r}  zSQLCompiler._process_positional~  sï  ù€ Ø×#Ò#Ð#Ð#Ø�z‰zœ]×9Ñ9Ñ9Ð9Ð9Ø×&Ò&Ð&Ð&à�<‰<×"Ñ" hÒ.Ø‰Kà—<‘<×*Ñ*¨gÒ5Ð5Ð5ØˆKàˆ	ö	"ô —f‘fØ×$Ñ$ m°T·[±[ó
ˆŒð ×"Ò"Ø/3×/FÑ/F×/LÑ/LÓ/N×O¡t q¨!˜a ™dÐOˆNÑOÜ�t×.Ñ.Ó/´3°~Ó3FÒFÐFÐFà;Dö Ø37�×"Ñ" 4¨Õ.ò ˆDÕð  )ˆDÔà×!Ò!ØˆIä!#§¡Ø×(Ñ(ØØ×&Ñ&×9Ñ9ó"Ðð ×/Ñ/×BÑBö"ð ð �a‘DØ�a‘DÜ—F‘F˜4×3Ñ3°]ÀAÀaÁDÓIØ�a‘Dò	ð"Ðð "ð &*×%;Ñ%;×%DÑ%DØ#5Ø#5ð &Eó &ˆDÕ"ð% "ùó Pùò ùò"s   ÃG1ÄG7Æ8G<c                ót  ‡ ‡— ‰ 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-                  ˆfd„‰ j.                  «      ‰ _        ‰ j                  rl‰ j                  j0                  ‰z  }	‰ j                  j2                  D �
cg c]  }
|
d   |
d   d|
d   f‘Œ }}
‰ j                  j5                  |	|¬«      ‰ _        y y c c}}w c c}
w )Nr   c              3  ó>   •K  — | ]  }|‰j                   vr|–— Œ y ­wr  )rU  )r;  r  r  s     €r  r=  z/SQLCompiler._process_numeric.<locals>.<genexpr>Å  s'   øè ø€ ò àØ 4×#9Ñ#9Ñ9ô ñùó   ƒc                ó,   •— ‰| j                  d«         S ©Nr   ©r—   ©r¤  Ú	param_poss    €r  ú<lambda>z.SQLCompiler._process_numeric.<locals>.<lambda>ì  s   ø€ �i §¡¨£
Ñ+€ r  r   r¡  r  r©  )rH  r¥  rr  rt  rO  rU  Ú	itertoolsÚchainr=  Úvaluesr<  rR  rQ  rC  Únext_numeric_posr”  r6  rS  r¬  r{  r­  Ú_pyformat_patternrª  r¤  rI  rJ  r®  )r  Únumr›   Ú	bind_nameÚbindÚphÚ
len_beforer  ÚposrI  r…  rJ  r·  s   `           @r  r|  zSQLCompiler._process_numeric¹  sL  ù€ Ø×"Ò"Ð"Ð"Ø�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Ò/Ð/Ð/ð ×,Ñ,×0Ñ0Û+¨T¯[©[ó
ˆŒð ×!Ò!ð ×&Ñ&×9Ñ9Øñð ð ×/Ñ/×BÑBö"àð �1‘�q˜‘t˜T 1 Q¡4Ò(ð"Ðð "ð
 &*×%;Ñ%;×%DÑ%Dà#5à#5ð	 &Eó &ˆDÕ"ð "ùóùò$"s   Å'H/Ç3H5c                óf   ‡ — ˆ fd„‰ j                   D «       D ��ci c]
  \  }}|�||“Œ c}}S c c}}w )Nc           	   3  ó  •K  — | ]„  }‰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´  )r;  Ú	elem_typer  s     €r  r=  z9SQLCompiler._bind_processors.<locals>.<genexpr>.<genexpr>  s(   øè ø€ ò #à )ð &×<Ñ<¸T¿\¹\×Jñ#ùs   ƒ%(N)	r=  r  Ú_is_tuple_typerÇ  r´  r@  r   r/   Útypes)r;  Ú	bindparamr  s     €r  r=  z/SQLCompiler._bind_processors.<locals>.<genexpr>  sx   øè ø€ ò ð ð —O‘O IÑ.ð  )Ÿ~™~×<Ò<ð "Ÿ™×=Ñ=¸d¿l¹lÔKä"ó #ä-1Ü )¨9¯>©>ó.ç#™eô	#ó ôñùs   ƒB
B)r=  )r  r<  Úvalues   `  r  Ú_bind_processorszSQLCompiler._bind_processors  sC   ø€ óð "&§¡ô÷
á��Uð  Ð ð# �‰Jó
ð 	
ùó 
s   š-c                ó2   — t        | j                  «      dkD  S r´  )r¬  r’  rA  s    r  Úis_subqueryzSQLCompiler.is_subquery  s   € Ü�4—:‘:‹ Ñ"Ð"r  c                ó   — | S r  r  rA  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

        Trf  )rç  r~  )r  rä  ræ  r2  s       r  Úconstruct_expanded_statez$SQLCompiler.construct_expanded_state&  s:   € ð ×*Ñ*ØØ%Ø ð +ó 
ˆ
ð
 ×7Ñ7Øó
ð 	
r  c                óº  — | 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)rI  rJ  Údictr2  r2   r?  r(  rS  r°  ÚCompileErrorrT  Úzipr=  r{  r­  r<  ÚrequiredÚcallableÚeffective_valuerÌ  )r  rä  rå  ræ  Ú_group_numberÚ_checkrg  Úhas_escaped_namesÚorig_extractedÚ
ckbm_tupler‚  r'  r€  Ú	extractedrÀ  Úresolved_extractedÚpdrË  r  Úescaped_nameÚvalue_params                        r  rç  zSQLCompiler.construct_params=  sT  € ð ×#Ò#©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   ÃK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_typeÆ  sH   ø€ Ø×0Ñ0°Ó9×HÑHÈÓOˆFð Ð"Ø"Ð*¨f¸MÑ.IØ"Ð*¨f¸Ñ.Eà�àr  )r´  Úinclude_set_input_sizesÚexclude_set_input_sizesrì  rQ  r=  r  rÉ  r   r/   rÊ  )
r  rï  Ú
inputsizesrQ  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é  rA  s    r  rä  zSQLCompiler.paramsä  s   € ð ×$Ñ$¨EÐ$Ó2Ð2r  c                ó¬  ‡‡‡‡‡— i }| j                   }|€| j                  }| j                  rg }| j                  }|€| j                  }ndx}}| j
                  }t        d|«      Št        d|«      Ši }i Ši }	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}n3|j                  ‰«      }| j#                  |||«      }|\  }}||	|<   |‰|<   |j$                  rŒ¼|j'                  |«       |j(                  j*                  r*|€J ‚|j'                  ˆˆfd„t-        |d«      D «       «       n|j'                  ˆˆfd„|D «       «       |
�|
j/                  d„ |D «       «       n|�|j/                  d	„ |D «       «       |D ��cg c]  \  }}|‘Œ	 c}}|‰<   �Œw|€�Œ{|j1                  ‰«       �ŒŽ ˆfd
„}t3        j4                  | j6                  ||«      }|
�l|€J ‚t-        |
| j8                  «      D ��ci c]  \  }}|| j:                  › |› �“Œ c}}Š| j<                  j5                  ˆfd„|«      }|j/                  |
«       t?        |||||«      }|rR|| _         || _        |j@                  | _        | j                  rtC        |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.

        Nr3  z/Mapping[str, Sequence[_BindProcessorType[Any]]]©Úrender_literal_valuec              3  ó”   •K  — | ]?  \  }}t        |d «      D ]+  \  }}‰‰v r"‰‰   |d z
     �‰›d|›d|›�‰‰   |d z
     f–— Œ- ŒA y­w)r   Nr'  )Ú	enumerate)r;  ÚiÚtuple_elementÚjr'  r  Útuple_processorss        €€r  r=  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>^  s{   øè ø€ ò 	.ñ
 !1  =Ü(1°-ÀÓ(Cò	.ñ !%  1Ø#Ð'7Ñ7Ø 0°Ñ 6°q¸1±uÑ =Ð Iò /3²A±qÐ 9Ø 0°Ñ 6°q¸1±uÑ =ôð	.ðñ	.ùs   ƒAAr   c              3  ó:   •K  — | ]  \  }}‰‰v r	|‰‰   f–— Œ y ­wr  r  )r;  r<  r'  r  Úsingle_processorss      €€r  r=  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>i  s1   øè ø€ ò .á &  QØ#Ð'8Ñ8ð !Ð"3°DÑ"9Ô:ñ.ùó   ƒc              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr  r  ©r;  r  r'  s      r  r=  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>o  s   è ø€ ò 3Ù%, T¨1œDñ3ùó   ‚c              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr  r  r  s      r  r=  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>v  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   r1   ú~~r  rØ   c              3  ó.   •K  — | ]  }‰›|›‰›�–— Œ y ­wr  r  )r;  ÚexpÚbe_leftÚbe_rights     €€r  r=  z]SQLCompiler._process_parameters_for_postcompile.<locals>.process_expanding.<locals>.<genexpr>†  s    øè ø€ ò !àñ !(©©hÔ7ñ!ùs   ƒ)r—   Úsplitrˆ   )r¤  r<  ÚexprÚtokr	  r
  Ú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                ó,   •— ‰| j                  d«         S r´  rµ  r¶  s    €r  r¸  zASQLCompiler._process_parameters_for_postcompile.<locals>.<lambda>š  s   ø€ ˜) A§G¡G¨A£JÑ/€ r  r  )#rL  r¤  re  rN  r6  rÍ  r   rH  r=  r»  rS  r­  r<  rQ  Úrender_literal_bindparamrˆ  rR  Ú$_literal_execute_expanding_parameterÚliteral_executerz  r  rÉ  rù  Úextendr£  r`  rª  Ú_post_compile_patternr¼  rC  r½  r0  r1  r”  rJ  )r  r2  rh  Úexpanded_parametersÚpre_expanded_stringÚnew_positiontupÚpre_expanded_positiontupr4  Únew_processorsÚto_update_setsÚnumeric_positiontupÚnamesÚebnrä  Ú	parameterÚ	to_updater»  Úleep_resÚreplacement_exprÚ
expand_keyr'  r  r1  r¾  r<  Úexpanded_stater  r·  r  rÿ  rý  s                             @@@@@r  r~  z/SQLCompiler._process_parameters_for_postcompileñ  sã  ü€ ð$ !Ðð #×7Ñ7ÐØÐ&Ø"&§+¡+Ðà�?Š?Ø ˆOà'+×'EÑ'EÐ$Ø'Ð/Ø+/×+;Ñ+;Ñ(ð :>Ð=ˆOÐ6à×*Ñ*ˆ
Ü Ø3°Zó
Ðô  Ø=¸zó
Ðð >@ˆà24ÐØ)+ˆð 48Ðà�?Š?Ð7ÐCØ#;ˆEØ×"Ò"Ø&(Ñ#à—O‘O×*Ñ*Ó,ˆEà×%Ñ%ˆØó I	-ˆ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Ø$ i°ó �Hð 3;Ñ/�IÐ/à3<�N <Ñ0Ø<LÐ+¨LÑ9à ×0Ó0Ø×%Ñ% iÔ0Ø —~‘~×4Ò4Ø%Ð1Ð1Ð1Ø&×-Ñ-ô 	.ô
 5>¸fÀaÓ4Hô	.õ 	ð '×-Ñ-ô .à*3ô.ô ð
 +Ð6Ø+×2Ñ2ñ 3Ø09ô3õ ð )Ð4ð (×.Ñ.Ñ.MÀ9Ô.MÔMà8A÷1Ù'4 z°1š
ó1Ð'¨Ó-ð !Ò,Ø×&Ñ& tÖ,ðSI	-ôV	ô —F‘FØ×&Ñ&Ð(9Ð;Nó
ˆ	ð Ð*Ø"Ð.Ð.Ð.ô !*Ø'¨×)>Ñ)>ó!÷á�C˜ð ˜×;Ñ;Ð<¸S¸EÐBÑBóˆIð ×.Ñ.×2Ñ2Û/°óˆIð ×"Ñ"Ð#6Ô7ä&ØØØØØó
ˆñ ð )<ˆDÔ%Ø-EˆDÔ*Ø(×2Ñ2ˆDŒKð —?’?ô �^×/Ñ/Ò5°2Ô6àð Ôð
 1?ˆDÔ-àÐùó{1ùó6s   È$M
ÊMzsqlalchemy.engine.cursorc                ó€   — t         j                  j                  }|j                  j	                  | j
                  «      S )z(utility method used for unit tests only.)r&   Ú	preloadedÚengine_cursorre   Ú_create_description_match_mapr§  )r  Úcursors     r  Ú_create_result_mapzSQLCompiler._create_result_map¶  s5   € ô —‘×-Ñ-ˆØ×*Ñ*×HÑHØ× Ñ ó
ð 	
r  Ú_BindNameForColProtocolÚ_get_bind_name_for_colc                ó   — | j                   }|S r  )r,  )r  Úgetters     r  Ú_within_exec_param_key_getterz)SQLCompiler._within_exec_param_key_getterÁ  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­  )Ú	lastrowidr2  Úparam_valueÚautoinc_keys      €r  Ú_autoinc_getterzPSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>._autoinc_getterê  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  )r;  r.  r  r2  s      €r  r=  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  )r;  r.  r  Úautoinc_colÚautoinc_getterr3  r2  s      €€€€r  r=  zWSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.get.<locals>.<genexpr>	  sJ   øè ø€ ò ñ $˜ ð  +Ñ-ð  .Ð9ñ +¨9°jÔAá!*ñ $ JÓ/ó0ñùó   ƒ&)r  )r3  r2  r;  r<  ÚgettersÚlastrowid_processorÚrow_fns   ``€€€€€r  r­  zDSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.getþ  sH   ú€ ð #Ð.Ù/°	Ó:�	àÐ ÙÓLÀGÔLÓLÐLáö ð (/ôó ð r  )r&   r&  Úengine_resultr/  r'  r1  r   r¹  r>   rž   Úprimary_keyÚoperatorÚmethodcallerÚ_autoincrement_columnr  Ú_cached_result_processorr´  r<  Úresult_tupler<  )r  ÚresultÚparam_key_getterr1  rž   r  r6  r­  r;  r<  r5  r>  r?  r@  s           @@@@@@r  Ú+_inserted_primary_key_from_lastrowid_getterz7SQLCompiler._inserted_primary_key_from_lastrowid_getterÆ  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  )r;  r.  Úuse_rowr2  Úrows      €€r  r=  zWSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.get.<locals>.<genexpr>@	  s-   øè ø€ ò á#�F˜Gñ  '‘�s”©F°:Ó,>Ó>ñùr„  r  )rO  r2  r>  r@  s   ``€€r  r­  zDSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.get?	  s   ú€ Ùô à'.ôó ð r  )r&   r&  rA  r'  r1  r   r¹  r>   r/  rž   r:  rù  r   rB  rC  Ú
itemgetterrD  rG  r<  )r  rH  r1  rI  rž   r�  Úidxr  Úretr­  r>  r@  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  rA  s    r  Údefault_fromzSQLCompiler.default_fromG	  s   € ð r  c                óæ  —  |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.

        TF)Úmaintain_keyrÙ  N)rÓ  rÝ  Ú	translater<  Ú_with_valuer<  r=  rˆ  rR  rQ  rT  Ú_cloned_setr£  )r  Úoverride_bindsrÕ  Úsqltextr„  ÚbpÚnew_bpr  rà  r‚  r�  Úcbs               r  Úvisit_override_bindsz SQLCompiler.visit_override_bindsQ	  sj  € ð" <�.×(Ñ(×;Ñ;¸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 ©Nr)  r*  ©rÓ  rÝ  )r  ÚgroupingÚasfromrß  s       r  Úvisit_groupingzSQLCompiler.visit_grouping‘	  ó+   € ØÐ8�X×%Ñ%×8Ñ8¸ÑHÀÑHÑHÈ3ÑNÐNr  c                óH   — d |j                   j                  | fi |¤Žz   dz   S rb  rc  )r  rd  rß  s      r  Úvisit_select_statement_groupingz+SQLCompiler.visit_select_statement_grouping”	  rg  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�  r'  ú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   ÚKeyErrorr2   r×  Ú_label_resolve_dictrÓ  Ú_order_by_label_elementr  Úshares_lineager»  )r  rÓ  rn  rß  r'  ÚkeÚ	with_colsÚ
only_fromsÚ	only_colsÚresolve_dictÚorder_by_elems              r  Úvisit_label_referencez!SQLCompiler.visit_label_reference—	  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)Nrk  r�  r'  rl  )ÚextraÚexc_clsrÔ  rm  rn  )r’  r»  Ú_text_clauser   rp  r   Ú_no_text_coercionrÓ  r2   r×  rq  )r  rÓ  rn  rß  r'  rt  ru  rv  rw  r  rÔ  s              r  Úvisit_textual_label_referencez)SQLCompiler.visit_textual_label_referenceÆ	  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                óH  — |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 )NÚcolidentT)rn  Úwithin_label_clausern  F)r¹  r  r   rC   Ú_truncated_identifierr  r  rÓ  rÝ  Ú	OPERATORSr!   Úas_r¬  Úformat_label)r  r  Úadd_to_result_maprƒ  rn  rm  Úresult_map_targetsrÕ  Úrender_label_with_asÚrender_label_onlyÚ	labelnames              r  Úvisit_labelzSQLCompiler.visit_labeló	  s?  € ð "Ò=Ð*=Ð&=ð 	ð 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.©r2   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‚  r,  r£  Úalias)r  r‘  Ú
is_literalr¹  r   rC   r„  r<  Ú	_tq_labelr  Úescape_literal_columnr¬  Úquoterž   Únamed_with_columnÚschema_for_objectÚquote_schemar   r\   )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                óL   — | j                   j                  |j                  «      S r  )r¬  Úformat_collationÚ	collation©r  rÓ  rÕ  s      r  Úvisit_collationzSQLCompiler.visit_collationh
  s   € Ø�}‰}×-Ñ-¨g×.?Ñ.?Ó@Ð@r  c                ó   — |j                   S r  ©r  )r  Ú
fromclauserß  s      r  Úvisit_fromclausezSQLCompiler.visit_fromclausek
  s   € Ø�‰Ðr  c                ó   — |j                   S r  r­  )r  r�  rß  s      r  Úvisit_indexzSQLCompiler.visit_indexn
  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_typeclauseq
  sJ   € Ø *ˆÐÑØ$(§M¡MˆÐ Ñ!Ø:ˆt�|‰|×2Ñ2×:Ñ:Ø�O‰Oñ
Ø!ñ
ð 	
r  c                óV   — | j                   j                  r|j                  dd«      }|S ©Nr(  ú%%©r¬  Ú_double_percentsÚreplace©r  Útexts     r  Úpost_process_textzSQLCompiler.post_process_textx
  ó$   € Ø�=‰=×)Ò)Ø—<‘<  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           	     óü   ‡ ‡‡— ˆˆ ˆ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>•
  s   € �a—g‘g˜a“j€ r  )	r’  r;  r%   ÚNULLTYPEÚBIND_PARAMS_ESCrª  ÚBIND_PARAMSr¿  r¾  )r  rÆ  rˆ  rÕ  rÇ  s   `` ` r  Úvisit_textclausezSQLCompiler.visit_textclause‚
  sl   ú€ ö	9ð �zŠzØ#ˆDÔáñ ˜d D¨:¨-¼×9JÑ9JÔKô ×"Ñ"Ù Ü�O‰OØ˜d×4Ñ4°Z·_±_ÓEóó
ð 	
r  c                ó"  — | 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   r*  Fr)  T)rn  rˆ  ©Únesting_level)r’  Ú_default_stack_entryr€   r£  Ú_independent_ctesÚ_dispatch_independent_ctesr­  re  rF  rD  r(  Úcolumn_argsrG  r»  Ú_add_to_result_maprÓ  rX  r¬  Ú_render_cte_clauserˆ  )r  ÚtafÚcompound_indexre  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  r  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  ©r;  Úss     r  r=  z7SQLCompiler._generate_delimited_list.<locals>.<genexpr>ß
  s   è ø€ ò 
àÙô ñ
ùó   ‚c              3  óD   •K  — | ]  } |j                   ‰fi ‰¤Ž–— Œ y ­wr  rÜ  ©r;  rŠ  rÕ  r  s     €€r  r=  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  r=  z;SQLCompiler._generate_delimited_and_list.<locals>.<genexpr>ð
  s   è ø€ ò "àÙô ñ"ùrï  c              3  óD   •K  — | ]  } |j                   ‰fi ‰¤Ž–— Œ y ­wr  rÜ  rñ  s     €€r  r=  z;SQLCompiler._generate_delimited_and_list.<locals>.<genexpr>ò
  s$   øè ø€ ÒL¸qÐ.˜!×.Ñ.¨tÑ:°rÕ:ÑLùr™  )r   ÚBooleanClauseListÚ_process_clauses_for_booleanr!   Úand_rL   Ú
_singletonrI   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                   }|€d}nt        |j                      } | j                  |j                  |fi |¤ŽS ©Nr/  )rC  r…  rô  rü  )r  r  rÕ  Úseps       r  r  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)rC  Ú_get_operator_dispatchr…  rô  rü  rp  r2   rÑ  )r  r  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 r/  zWHEN z THEN zELSE ÚEND)rÌ  rÝ  ÚwhensÚelse_)r  Úclauserß  ÚxÚcondrH  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   r*  r1   r£  )rµ  rÝ  r`  Úmatchr  r—   )r  r   rß  Útype_clauser  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           
     óp  — |d   t         j                  u rdn|d   t         j                  u rdnh|d   dk  r5 | j                  t        j                  t        |d   «      «      fi |¤Ž›d�n+ | j                  t        j                  |d   «      fi |¤Ž›d�›d|d   t         j                  u rd›�S |d   t         j                  u rd›�S |d   dk  r7 | j                  t        j                  t        |d   «      «      fi |¤Ž›d�›�S  | j                  t        j                  |d   «      fi |¤Ž›d�›�S )	Nr   zUNBOUNDED PRECEDINGzCURRENT ROWz
 PRECEDINGz
 FOLLOWINGrÕ   r   zUNBOUNDED FOLLOWING)r   ÚRANGE_UNBOUNDEDÚRANGE_CURRENTr»  ÚliteralÚabs)r  Úrange_rÕ  s      r  Ú_format_frame_clausez SQLCompiler._format_frame_clause4  s}  € ð ˜!‘9¤× 8Ñ 8Ñ8ñ &ð ˜a‘y¤H×$:Ñ$:Ñ:ñ "ð " !™9 qš=ð	 )˜DŸL™LÜ (× 0Ñ 0´°V¸A±Y³Ó @ñØDFóñð (˜4Ÿ<™<¬×(8Ñ(8¸À¹Ó(CÑJÀrÓJðMñð( ˜!‘9¤× 8Ñ 8Ñ8ð &ð ð+'
ð '	
ð2 ˜a‘y¤H×$:Ñ$:Ñ:ð "ðð+'
ð '	
ðB " !™9 qš=ð	 )˜DŸL™LÜ (× 0Ñ 0´°V¸A±Y³Ó @ñØDFóððð+'
ð '	
ðF (˜4Ÿ<™<¬×(8Ñ(8¸À¹Ó(CÑJÀrÓJðMðð+'
ð '	
r  c                ó8  —  |j                   j                  | fi |¤Ž}|j                  �!d | j                  |j                  fi |¤Žz  }n\|j                  �!d | j                  |j                  fi |¤Žz  }n/|j
                  �!d | j                  |j
                  fi |¤Žz  }nd }|›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 %szROWS BETWEEN %szGROUPS BETWEEN %sz OVER (r/  Ú	PARTITIONÚORDERz BY r*  )
rÓ  rÝ  r%  r&  ÚrowsÚgroupsrˆ   Úpartition_byÚorder_byr¬  )r  Úoverrß  r¾  r%  Úwordr  s          r  Ú
visit_overzSQLCompiler.visit_over^  sT  € Ø.ˆt�|‰|×.Ñ.¨tÑ>°vÑ>ˆØ�;‰;Ð"Ø'Ð*C¨$×*CÑ*CØ—‘ñ+Ø%ñ+ñ ‰Fð �Y‰YÐ"Ø&Ð)B¨×)BÑ)BØ—	‘	ñ*Ø#ñ*ñ ‰Fð �[‰[Ð$Ø(Ð+D¨4×+DÑ+DØ—‘ñ,Ø%ñ,ñ ‰Fð ˆFò Ø�H‰Hð
 % d×&7Ñ&7Ð8Ø  $§-¡-Ð0ð)÷ñ %˜˜fð Ð)¬c°&¬kò Ð6˜V×6Ñ6°tÑF¸vÒFòHóñ  &�F‘8¨2ñ	/õð
ð 	
ùós   Ã/Dc                ó~   —  |j                   j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›d�S )Nz WITHIN GROUP (ORDER BY r*  )rÓ  rÝ  r-  )r  Úwithingrouprß  s      r  Úvisit_withingroupzSQLCompiler.visit_withingroup  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 r*  )Ú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                  |j                  |j                  «      }d|›d |j                  j                  | fi |¤Ž›d�S )NzEXTRACT(rÙ   r*  )Úextract_mapr­  Úfieldr  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 )Nr)  z).)Úvisit_functionÚfnr¦  )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           	     óx  — |�4 ||j                   |j                   |j                   f|j                  «       t        | d|j                   j                  «       z  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_funcz%(expr)sr,  r  z WITH ORDINALITY)r  r  ÚgetattrÚlowerrë   r­  Ú_deannotaterÆ  Ú	_has_argsr¬  Ú_requires_quotes_illegal_charsr¹  r   r.   r›  rˆ   ÚpackagenamesÚfunction_argspecÚ_with_ordinality)r  r5  rˆ  rß  r  r¾  r  r  s           r  r?  zSQLCompiler.visit_function—  s   € ð Ð(Ù˜dŸi™i¨¯©°T·Y±Y°LÀ$Ç)Á)ÔLä�t˜_¨t¯y©y¯©Ó/@Ñ@À$ÓGˆñ Ù˜Ñ' Ñ'Š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F7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  rO  rÕ  s      r  rN  zSQLCompiler.visit_sequenceÈ  s$   € Ü!Ø@Ø�l‰l×Ññ ó
ð 	
r  c                ó<   —  |j                   j                  | fi |¤ŽS r  )Úclause_exprrÝ  )r  r5  rß  s      r  rK  zSQLCompiler.function_argspecÎ  s    € Ø2ˆt×Ñ×2Ñ2°4ÑB¸6ÑBÐBr  c           
     ó¢  ‡ ‡‡— ‰ 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                   j-                  d«       |S )Nr�  r*  Fr   r+  r#  r"  )r#  r"  r$   r'  r*  r/  c              3  óP   •K  — | ]  \  }} |j                   ‰f‰|d œ‰¤Ž–— Œ y­w))re  rØ  NrÜ  )r;  rú  rŠ  re  rß  r  s      €€€r  r=  z4SQLCompiler.visit_compound_select.<locals>.<genexpr>÷  sA   øè ø€ ò ñ �A�qð %�×$Ñ$ØðØ!'¸ñØ=Cõñùs   ƒ#&rŸ  re  T©rÐ  Úinclude_following_stackr  )r’  Ú_compile_state_factoryr'  r1  rÑ  r­  r£  rÒ  rÓ  Úcompound_keywordsÚkeywordrˆ   rù  ÚselectsÚgroup_by_clauserÖ  Úorder_by_clauseÚ_has_row_limiting_clauseÚ_row_limit_clauserX  r¬  rÖ  rˆ  )r  Úcsre  rØ  rß  rÙ  r'  Ú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  rc  rß  s      r  rb  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  rE  )r  r  Ú
qualifier1Ú
qualifier2Úattrnames        r  r  z"SQLCompiler._get_operator_dispatch  s5   � à×ÓÙÙ *ˆC�*Ò°Ð2ð
ˆô
 �t˜X tÓ,Ð,r  c                ó"  — |�||fz  }||d<   ||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‰  zFUnary expression does not support operator and modifier simultaneouslyÚunaryrC  Úmodifierz,Unary expression has no operator or modifier)rC  rr  r2   r×  r  Ú _generate_generic_unary_operatorr…  Ú _generate_generic_unary_modifier)r  rq  rˆ  r‰  rÕ  r  s         r  Úvisit_unaryzSQLCompiler.visit_unary   s8  € ð Ð(Ø 5 (Ñ*ÐØ&7ˆBÐ"Ñ#Ø'9ˆBÐ#Ñ$à�>Š>Ø�~Š~Ü×&Ñ&ð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                  u 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©r  r¢   rC  rÕ  s       r  Úvisit_truediv_binaryz SQLCompiler.visit_truediv_binaryF  sç   € Ø�<‰<×'Ò'à�—‘˜VŸ[™[Ñ/¨BÑ/Øñð �$—,‘,Ü—M‘MØŸ™ð  &Ÿ|™|×0Ñ0×?Ñ?Ü'×/Ñ/ñ 0ð #Ÿ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 )Nrw  z	FLOOR(%s))	r´  rx  r�   r  rz  r%   ÚIntegerr‰   r»  r|  s       r  Úvisit_floordiv_binaryz!SQLCompiler.visit_floordiv_binarya  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Ó  rC  rÕ  s       r  Úvisit_is_true_unary_operatorz(SQLCompiler.visit_is_true_unary_operators  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 r   )Ú_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  ©r;  rÓ  s     r  r=  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  r=  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.rS  ©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)r  rØ   c              3  óH   •K  — | ]  \  }}‰j                  ||«      –— Œ y ­wr  rö  )r;  rÌ  Ú
param_typer  s      €r  r=  z[SQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>.<genexpr>Ð  s*   øè ø€ ò á-˜E :ð ×1Ñ1°%¸×Dñùr„  N)rˆ   rØ  r  rÊ  )r;  rú  rû  r  r  s      €€r  r=  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>Í  sQ   øè ø€ ò ñ %�A�}ð à—I‘Ió ä14Ø)¨9¯>©>×+?Ñ+?ó2ôó õñùs   ƒAAr1   ú)unexpected format for expanding parameterr  r   r  c              3  ób   •K  — | ]&  }‰›‰j                  |‰j                  «      ›‰›�–— Œ( y ­wr  ©r÷  r  )r;  rÌ  r	  r
  r  r  s     €€€€r  r=  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§  )r;  rÌ  r  r  s     €€r  r=  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>í  s*   øè ø€ ò 3àð ×-Ñ-¨e°Y·^±^×Dñ3ùr=  r  )r  rè  r´  rÉ  Útuple_in_valuesrœ  rÊ  r›  Ú_isnullr¹  Úcollections_abcr   r   ÚbytesÚ_has_bind_expressionrÙ  rˆ   rù  r  Úsearchr—   r  )r  r  r»  Úbind_expression_templateÚtyp_dialect_implÚreplacement_expressionÚpost_compile_patternr¤  r  r	  r
  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                óp  ‡ ‡‡
‡‡‡— ‰j                   r‰ j                  ‰|«      S ‰ j                  }‰j                  j	                  |«      Š‰ j
                  r‰ j                  Šn‰ j                  Š‰ j                  j                  r‰j                  r	ˆˆˆ ˆfd„Š
nˆ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 )Nc                óH   •— ‰j                  ‰j                  ‰‰d| iz  «      S ©Nr  )Úrender_bind_castr  )r  Úbind_templater  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  r   r   r'  r¡  r£  rØ   c              3  óz   •‡‡K  — | ]0  \  ŠŠd dj                  ˆˆˆˆfd„t        ‰«      D «       «      z  –— Œ2 y­w)r  rØ   c              3  ó^   •K  — | ]$  \  }} ‰‰‰t        ‰«      z  |z      d    «      –— Œ& y­w)r   N)r¬  )r;  rü  rÌ  r¹  rú  r   rû  s      €€€€r  r=  zMSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>.<genexpr>/  s@   øè ø€ ò ñ %˜A˜uñ -Ø% a¬#¨mÓ*<Ñ&<¸qÑ&@ÑAÀ!ÑD÷ñùs   ƒ*-N)rˆ   rù  )r;  rú  rû  r¹  r   s    @@€€r  r=  zCSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>,  sD   úè ø€ ò ñ %�A�}ð à—I‘Iö ô )2°-Ó(@ô	ó õñùs   …6;c              3  ó4   •K  — | ]  \  }} ‰|«      –— Œ y ­wr  r  )r;  r<  rÌ  r¹  s      €r  r=  zCSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>=  s    øè ø€ ò /Ù.8¨c°5Ñ$ S×)ñ/ùr9  )r  r³  r´  r  rè  rH  rB  rA  Ú_bind_typing_render_castsr·  rÉ  rœ  rÊ  r›  rª  r¹  r«  r   r   r¬  Ú	_is_arrayrù  r©  rˆ   )r  r  r  r»  r´  r±  rú  rû  rü  rÌ  r¹  r¸  r   r°  s   ` `       @@@@r  r  z0SQLCompiler._literal_execute_expanding_parameterô  sQ  ý€ Ø×$Ò$Ø×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ò  $¢Q©Ð*¨EÒ2ðØ2õˆIð %×4Ò4‘	¸"Ø—	‘	ô ô )2°&Ó(9ôó ñ&Ð"ð. Ð0Ð0Ð0ô !*¨&°!Ó 4÷á�A�uò !¡!Ð$ eÒ,óˆIð &*§Y¡Yó /Ø<Eô/ó &Ð"ð Ð0Ð0Ð0ùõ;ùó*s   Å=*H*
Ç5H2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_comparisonrC  r†  rz  r¹  Úproductr)   r‰   r*   r�   r@  r¹  r   rE   r  r…  r�  rp  r2   rÑ  )r  r¢   rŠ  Úeager_groupingrÂ  rÃ  rÕ  rÁ  r  r  r  rÔ  s               r  r‹  zSQLCompiler.visit_binaryC  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                   |d<    | j                  |d| j                  |j                  «      z   dz   fi |¤ŽS )NrÆ  r/  )rÆ  r�  rš  r  r„  s       r  Úvisit_custom_op_binaryz"SQLCompiler.visit_custom_op_binaryŒ  sS   € Ø'×6Ñ6ˆÐÑØ,ˆt×,Ñ,ØØ�$×,Ñ,¨X×->Ñ->Ó?Ñ?À#ÑEñ
ð ñ
ð 	
r  c                ób   —  | j                   || j                  |j                  «      dz   fi |¤ŽS r  )rs  rš  r  r„  s       r  Úvisit_custom_op_unary_operatorz*SQLCompiler.visit_custom_op_unary_operator”  s:   € Ø4ˆt×4Ñ4Ø�T×/Ñ/°×0AÑ0AÓBÀSÑHñ
ØLNñ
ð 	
r  c                ób   —  | j                   |d| j                  |j                  «      z   fi |¤ŽS r  )rt  rš  r  r„  s       r  Úvisit_custom_op_unary_modifierz*SQLCompiler.visit_custom_op_unary_modifier™  s:   € Ø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 )Nr
  FTÚ
_binary_oprÆ  r  )r­  rC  r‰   rÝ  r�   )r  r¢   r  rÆ  rÕ  r
  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  rc  ©r  rq  r  rÕ  s       r  rs  z,SQLCompiler._generate_generic_unary_operator·  s$   € ØÐ:˜%Ÿ-™-×:Ñ:¸4ÑFÀ2ÑFÑFÐFr  c                óB   —  |j                   j                  | fi |¤Ž|z   S r  rc  rÕ  s       r  rt  z,SQLCompiler._generate_generic_unary_modifierº  s#   € Ø/ˆu�}‰}×/Ñ/°Ñ;¸Ñ;¸hÑFÐFr  c                óL   — t        j                  dt        j                  ¬«      S )Nz'%')r  )r   Úliteral_columnr%   Ú
STRINGTYPErA  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(r*  rc  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  ©Ú_clonerÚ  Úconcatr�   Úvisit_like_op_binary©r  r¢   rC  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Ú  rà  r�   Úvisit_not_like_op_binaryrâ  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Ú  r  r‰   rà  r�   Úvisit_ilike_op_binaryrâ  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Ú  r  r‰   rà  r�   Úvisit_not_ilike_op_binaryrâ  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�   rá  râ  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Ú  rò  r�   rç  râ  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Ú  r  r‰   rò  r�   rë  râ  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Ú  r  r‰   rò  r�   rï  râ  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Þ  râ  s        r  Úvisit_endswith_op_binaryz$SQLCompiler.visit_endswith_op_binaryü  sF   € Ø—‘“ˆØ×,Ñ,ˆØ—~‘~ f§l¡lÓ3ˆŒØ(ˆt×(Ñ(¨°Ñ@¸RÑ@Ð@r  c                ó¢   — |j                  «       }| j                  }|j                  |j                  «      |_         | j                  ||fi |¤ŽS r  ræ  râ  s        r  Úvisit_not_endswith_op_binaryz(SQLCompiler.visit_not_endswith_op_binary  sF   € Ø—‘“ˆØ×,Ñ,ˆØ—~‘~ f§l¡lÓ3ˆŒØ,ˆt×,Ñ,¨V°XÑDÀÑDÐDr  c                óè   — |j                  «       }| j                  }t        |j                  «      |_        |j	                  t        |j
                  «      «      |_         | j                  ||fi |¤ŽS r  rê  râ  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  rî  râ  s        r  Úvisit_not_iendswith_op_binaryz)SQLCompiler.visit_not_iendswith_op_binary  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 )Nra  z LIKE ú ESCAPE r£  ©Ú	modifiersr­  r‰   rÝ  r�   r÷  r%   rÙ  ©r  r¢   rC  rÕ  ra  s        r  rá  z SQLCompiler.visit_like_op_binary  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 )Nra  z
 NOT LIKE r  r£  r  r  s        r  rç  z$SQLCompiler.visit_not_like_op_binary"  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ß  r  r‰   r�   rá  r|  s       r  rë  z!SQLCompiler.visit_ilike_op_binary-  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ß  r  r‰   r�   rç  r|  s       r  rï  z%SQLCompiler.visit_not_ilike_op_binary6  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 ©r  r­  r�  ©r  r¢   rC  rÕ  r¿   s        r  Úvisit_between_op_binaryz#SQLCompiler.visit_between_op_binary?  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 r  r  s        r  Úvisit_not_between_op_binaryz'SQLCompiler.visit_not_between_op_binaryE  sD   € Ø×$Ñ$×(Ñ(¨°eÓ<ˆ	Ø,ˆt×,Ñ,ØÙ)2Ñ%¸ñ
ð ñ
ð 	
r  c                óZ   — t        j                  d| j                  j                  z  «      ‚©Nz/%s dialect does not support regular expressions©r2   r×  r´  r  r|  s       r  Úvisit_regexp_match_op_binaryz(SQLCompiler.visit_regexp_match_op_binaryM  ó,   € ô ×ÑØ=Ø�l‰l×Ññ ó
ð 	
r  c                óZ   — t        j                  d| j                  j                  z  «      ‚r  r  r|  s       r  Ú visit_not_regexp_match_op_binaryz,SQLCompiler.visit_not_regexp_match_op_binaryU  r  r  c                óZ   — t        j                  d| j                  j                  z  «      ‚)Nz;%s dialect does not support regular expression replacementsr  r|  s       r  Úvisit_regexp_replace_op_binaryz*SQLCompiler.visit_regexp_replace_op_binary]  s,   € ô ×ÑØIØ�l‰l×Ññ ó
ð 	
r  c           	     óì  — |rE|j                   €9|j                  €-| j                  �!| j                  j                  d¬«      | _        |sí|j                  j                  | j                  «      }	|	j                  r¼|	j                  |«      }
 | j                  |
fd||xr |j                   ||dœ|¤Ž}|j                  rut        j                  d|«      }|sJ d«       ‚d|j                  d«      ›d|j                  d	«      ›d
|j                  d«      ›d�}|r | j                  |fd|dœ|¤Ž}d|z  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|z  }|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|z  }|S )NT)rT  )Úskip_bind_expressionrn  Úliteral_bindsr  Úrender_postcompilez&^(.*)\(__\[POSTCOMPILE_(\S+?)\]\)(.*)$r¥  z(__[POSTCOMPILE_r1   r  r   z~~REPL~~r  z~~]))rn  r¯  r  Frn  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Ú  rO  r®  r  Údialect_implr´  r­  Úbind_expressionr»  r   r`  r  r—   r  r  r@  Ú_truncate_bindparamr<  r«   r  ÚintersectionrZ  r2   r×  Ú_is_crudr<  rT  r£  Ú
isoutparamÚhas_out_parametersrI  rQ  rR  rÅ  )r  rË  rn  r  r  r  r  Úis_upsert_setrß  Úimplr#  Úwrappedr¤  rR  r  r  Úexistingrà  r‚  r�  r]  r_  s                         r  Úvisit_bindparamzSQLCompiler.visit_bindparame  s<  € ñ Ø—‘Ð'Ø×"Ñ"Ð*Ø×&Ñ&Ð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<ñð %ñ	˜ð  &¨™|Ð+à�áàò DØ×,Ñ,òDà)ÒB¨d×.BÑ.Bð ð
 +ÒA¨i×.AÑ.A‰Là ˆLáØ/�$×/Ñ/ØñØ15ðØ9?ñˆCð ×"Ò"Ø˜s‘l�Øˆ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×#Ñ#Øð
à%Ø×)Ñ)Ø$Ÿ>™>ñ	
ð
 ñ
ˆð ×ÒØ˜3‘,ˆCàˆ
r  c                ó   — t        «       ‚r  rØ  )r  r  Ú
dbapi_typer\  s       r  r·  zSQLCompiler.render_bind_cast  s   € Ü!Ó#Ð#r  c                óØ  — |t         ur|}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 )NrÓ  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¯  )r-   rÌ  rÚ  r­  r!   Úis_Úis_notr&   Úwarn_limitedr<  r»  r%   rÉ  rÛ  r   r³  r÷  r  )
r  rË  r÷  r¯  rÕ  rÌ  ÚopÚleepr   r"  s
             r  r  z$SQLCompiler.render_literal_bindparam  sä   € ð  ¤vÑ-Ø(‰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   rK   Ú	_instanceÚ_cached_literal_processorr´  r   r2   r×  Úsql_utilÚ_repr_single_value)r  rÌ  r  Ú	processorÚes        r  r÷  z SQLCompiler.render_literal_value9  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Ë  )r=  r<  r¹  r   rC   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'  r1   )	rt  Ú	apply_maprs  r¬  rq  ru  r­  ÚmaxÚhex)r  Úident_classr  ÚanonnameÚcounterÚ	truncnames         r  r„  z!SQLCompiler._truncated_identifierm  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  ©rs  ©r  r  s     r  Ú
_anonymizezSQLCompiler._anonymize‚  s   € Ø�d—m‘mÑ#Ð#r  c                óÐ  ‡ — |�|j                  |«       |�|j                  |«       |s>‰ j                  j                  |«      r#‰ j                  j	                  ˆ fd„|«      }	|}|	}|r"‰ j
                  j                  ||i«      ‰ _        |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   )r2  r—   )r¤  r  s    €r  r¸  z.SQLCompiler.bindparam_string.<locals>.<lambda>Ÿ  s   ø€ ˜d×8Ñ8¸¿¹À»ÑD€ r  z__[POSTCOMPILE_%s]r  )Úaddr£  r1  r®  rª  rS  rŸ   rè  r´  Úrender_literal_castr·  r¥  rr  rs  rB  rA  r¾  )r  r  r  r   Úescaped_fromr!  Úaccumulate_bind_namesÚvisited_bindparamrÕ  Únew_namerR  Ú	type_impls   `           r  rÅ  zSQLCompiler.bindparam_string…  ss  ø€ ð !Ð,Ø!×%Ñ% dÔ+ØÐ(Ø×$Ñ$ TÔ*áØ×&Ñ&×-Ñ-¨dÔ3ð  ×2Ñ2×6Ñ6ÛDØó�ð  $�Ø�áØ&*×&=Ñ&=×&CÑ&CØ˜tÐ$ó'ˆ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_ctesÈ  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: %rr  rØ   c              3  ól   •K  — | ]+  }‰j                   j                  |‰j                  ¬ «      –— Œ- y­w)rI  N)r¬  Úformat_label_namers  )r;  Úidentr  s     €r  r=  z(SQLCompiler.visit_cte.<locals>.<genexpr>t  s8   øè ø€ ò "ð !&ð !ŸM™M×;Ñ;Ø %°·±ð <÷ ñ"ùs   ƒ14Úsubqueryre  rÚ   z
(r*  r/  )'rš  rX  r  r¹  r   rC   r„  Ú_get_reference_cteÚnestingrZ  rY  r2   r×  r¬  r’  Ú	_restatesÚhashÚ_is_clone_ofÚcompareÚ
_cte_aliasÚ	visit_cteÚ	recursiver[  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[  re  ÚashintÚ	fromhintsr^  rÂ  rV  rß  Ú	self_ctesÚcte_nameÚ
is_new_cteÚembedded_in_current_named_cteÚ_reference_cterd  Ú	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  rj  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|rMt        ‰j                  t
        j                  «      r‰ j                  d‰j                  «      }n‰j                  }|r‰ j                  j                  ‰«      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Ã  )re  rt  Úiscrudru  ÚlateralÚenclosing_aliasr)  r*  r•  r—  T)re  r”  r  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  )r;  r  r—  rß  r  s     €€€r  r=  z*SQLCompiler.visit_alias.<locals>.<genexpr>ú  s{   øè ø€ ò ð  ð !ŸM™M×/Ñ/°·±Ô9ð $)×#@Ò#@ð	 !&Ø"M $§,¡,×"EÑ"E×"MÑ"MØ$'§H¡Hñ#"Ø06ñ#"ò!"ð
 &(ð!(ô	ñùs   ƒA3A6r”  )rŒ  rÓ  rÝ  r¹  r  r   rC   r„  r¬  rl  r…  r)   rs  Ú_supports_derived_columnsÚ_render_derivedrˆ   rŠ  Úformat_from_hint_text)r  r—  re  rt  r“  ru  rb  r”  r•  rÂ  rß  r™   Ú
alias_namerR  s   ``        `   r  rŽ  zSQLCompiler.visit_alias³  s/  ú€ ñ Ø"¨&Ñ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 )NTrb  ©rŽ  )r  rb  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 )Nre  Tz TABLESAMPLE z REPEATABLE (%s))rŽ  Ú_get_methodrÝ  Úseed)r  Útablesamplere  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  )r;  ÚchunkÚelemrÓ  rÕ  r  s      €€€r  r=  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Ÿ  r)  r*  ú (rØ   c              3  óD   •K  — | ]  } |j                   ‰fi ‰¤Ž–— Œ y ­wr  rÜ  rñ  s     €€r  r=  z+SQLCompiler.visit_values.<locals>.<genexpr>a  s+   øè ø€ ò "à !ð 1˜A×0Ñ0°Ñ<¸Õ<ñ"ùr™  )rÒ  rÓ  r°  Ú_unnamedr¹  r  r   rC   r„  rŒ  r…  r)   rÓ  r2   r×  rs  r¬  r›  rˆ   Úcolumns)	r  rÓ  re  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 rb  )r°  rª  s      r  Úvisit_scalar_valueszSQLCompiler.visit_scalar_valuesk  s%   € ØÐ&�4×&Ñ& wÑ5°"Ñ5Ð6°aÐ8Ð8r  c                ó   — d|z   S )NrÚ   r  )r  Úalias_name_texts     r  rs  z&SQLCompiler.get_render_as_alias_suffixn  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.)rF  rE  rÉ  r2   r×  r§  r£  rÿ   r  s        r  rÕ  zSQLCompiler._add_to_result_mapq  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  rY  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                  |	||¬	«        |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_mapÅ  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)rn  rˆ  rŸ  )r  r"  r´  Ú_has_column_expressionÚcolumn_expressionrÕ  r¹  r   rJ   r  r  rÓ  r™  rG   r˜  rž   Ú
TextClauseÚUnaryExpressionrC  r!   Úis_falseÚis_trueræ  Ú_wraps_unnamed_columnÚNamedColumnÚ_non_anon_labelÚ_anon_name_labelrC   rz  rÝ  )r  rª   r£   rÛ  re  r¿  r  r…  r†  rn  Ú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 r  )Úget_from_hint_text)r  r\  rž   Úhintr“  Úhinttexts         r  r›  z!SQLCompiler.format_from_hint_textr  s*   € Ø×*Ñ*¨5°$Ó7ˆÙØ�s˜X‘~Ñ%ˆGØˆr  c                 ó   — y r  r  )r  Úbyfromss     r  Úget_select_hint_textz SQLCompiler.get_select_hint_textx  ó   € Ør  c                 ó   — y r  r  ©r  rž   r¾  s      r  rÔ  zSQLCompiler.get_from_hint_text{  s   € ð r  c                 ó   — y r  r  rÜ  s      r  Úget_crud_hint_textzSQLCompiler.get_crud_hint_text€  rÚ  r  c                ó$   — dj                  |«      S r  rò  )r  Ú
hint_textss     r  Úget_statement_hint_textz#SQLCompiler.get_statement_hint_textƒ  s   € Ø�x‰x˜
Ó#Ð#r  r&  rÑ  r#  r"  c                ó  — | j                    }|r| j                  n| j                   d   }|j                  || «      }|d   }|d   }	|r&|s$|j                  |j	                  |	«      d¬«      }
|
S |j                  ||	¬«      }
|
S )Nr�  r#  r"  r  ©Úexplicit_correlate_fromsÚimplicit_correlate_froms)r’  rÑ  r[  Ú_get_display_fromsÚ
difference)r  Úselect_stmtre  r”  rÕ  rÙ  rž  r'  r#  r"  r…  s              r  Ú_display_froms_for_selectz%SQLCompiler._display_froms_for_select�  s¨   € ð —z‘z�>ˆÙ-5�×)Ò)¸4¿:¹:Àb¹>ˆà#×:Ñ:¸;ÈÓMˆàÐ 1Ñ2ˆØ˜^Ñ,ˆá™'Ø!×4Ñ4Ø)8×)CÑ)CØ ó*ð *,ð	 5ó ˆEð ˆð	 "×4Ñ4Ø)8Ø)5ð 5ó ˆEð ˆr  Útranslate_select_structurec	                óþ  ‡%— |�J d«       ‚d|	d<    |j                   || fi |	¤Ž}
|
j                  |	d<   |
j                  }| j                   }|r| j                  s|
| _        |d uxs |}| j
                  r? | j
                  |fd|i|	¤Ž}||ur&|
}|}|} |j                   || fi |	¤Ž}
|
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                  r| j                  |«      \  }}|r||dz   z  }nd }|j                  r| j                  ||	«       |j                  r!| | j                   ||j                  fi |	¤Žz  }| | j"                  |fi |	¤Žz  }|
j$                  D �����cg c]#  \  }}}}}| j'                  ||||||||||¬«
      ‘Œ% c}}}}}D �cg c]  }|�|‘Œ }}|r«|�©t)        t+        |
j$                  D �����cg c]
  \  }}}}}|‘Œ c}}}}}j$                  D �����cg c]
  \  }}}}}|‘Œ c}}}}}«      «      Š%| j,                  D ���� cg c]'  \  }}}} t/        ||t1        ˆ%fd„|D «       «      | «      ‘Œ) c} }}}| _        | j3                  |||
|||||	«      }|j4                  rQ|j4                  D �!�"cg c]!  \  }!}"|!d| j6                  j8                  fv r|"‘Œ# }#}!}"|#r|d| j;                  |#«      z   z  }| j<                  r2|r|r.|st?        | j                  «      nd }$| jA                  |$¬«      |z   }|jB                  r$|d | j                   ||jB                  fi |	¤Žz   z  }| j                  jE                  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 objectsFrn  r   re  r�  r*  r)  rˆ  )rƒ  rn  zSELECT r/  )r  r…  r†  rÎ  rÏ  c              3  óB   •K  — | ]  }‰j                  ||«      –— Œ y ­wr  r2  )r;  ÚorX  s     €r  r=  z+SQLCompiler.visit_select.<locals>.<genexpr>W  s   øè ø€ Ò$F¸Q Y§]¡]°1°a×%8Ñ$Fùs   ƒr¼  rÏ  )#r[  Ú_ambiguous_table_name_mapr1  r’  r'  rê  rÑ  r­  Ú_setup_select_stackrW  rz  Ú_hintsÚ_setup_select_hintsrÒ  rÓ  rp  ro  Úget_select_precolumnsÚcolumns_plus_namesr¾  rÖ  rØ  r§  rÿ   r@  Ú_compose_select_bodyÚ_statement_hintsr´  r  rá  rX  r¬  rÖ  rq  rˆ  )&r  rè  re  Úinsert_intoru  rØ  Úselect_wraps_forr”  rÂ  rß  r'  rÙ  Úis_embedded_selectÚnew_select_stmtÚcompile_state_wraps_forrž  rÛ  rÏ  r…  r¿  r¾  Ú	hint_textÚbyfromr  r…  r†  r£   r‡  rŠ  Úinner_columnsr<  rÞ  r  Údialect_nameÚhtÚper_dialectrÐ  rX  s&                                        @r  Úvisit_selectzSQLCompiler.visit_select±  sÿ  ø€ ð  Ð'ð 	
ð-ó	
Ð'ð +0ˆÐ&Ñ'à:˜×:Ñ:Ø˜ñ
Ø!'ñ
ˆð ×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ô	
ð ˆà×ÒØ $× 8Ñ 8¸Ó EÑˆI�vÙØ˜	 C™Ñ'‘àˆFà×(Ò(Ø×+Ñ+¨K¸Ô@à× Ò ØÐ+�D×+Ñ+Ø˜[×2Ñ2ñØ6<ññ ˆDð 	Ð*�×*Ñ*¨;ÑA¸&ÑAÑAˆð. #×5Ñ5÷'ò ñØØØ'ØØð# ×)Ñ)ØØØ'ØØ&ØØ)Ø(;Ø'/Ø,Cð *õ öö
àð* ˆ}ò- ð
ˆð 
ñ4 Ð#3Ð#?ô Üð +×=Ñ=÷	ò 	ñØØ&Ø/Ø Ø$ò ö	ð$ 5×GÑG÷	ò 	ñØØ&Ø/Ø Ø$ò ö	óóˆIð: .2×-AÑ-A÷	$ñ $ñ *�C˜˜s Eô #Ø˜œuÓ$FÀ#Ô$FÓFÈõõ$ˆDÔ ð ×(Ñ(ØØØØØØØØó	
ˆð ×'Ò'ð +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Ôàˆùöyùò
ùö@	ùö	ùõ$ùó&s$   Ç&(OÈOÉOÉ+O(Ê,O1
Ì&O9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)rt  )rð  r{  r´  r  rÝ  rÙ  )r  rª   r˜  r´  rÖ  rü  rû  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   }|d   }|dk(  r||d<   nf|rd|d   }	t        |	j                  «      }
t        |j                  «      |
k7  r2t        j                  dd|
|dz   t        |j                  «      fz  «      ‚|r%|s#|j                  |j                  |«      d¬«      }n|j                  ||¬«      }t        t        |Ž «      }|j                  |«      }||||d	œ}| j                  j                  |«       |S )
Nr#  r"  r   r+  z}All selectables passed to CompoundSelect must have identical numbers of columns; select #%d has %d columns, select #%d has %dr   r  rã  )r"  r#  r$   r'  )r¬  r‰  ró  r2   r×  ræ  rç  r€   r*   rŸ   r’  r£  )r  rª   r'  rž  re  r”  rØ  r#  r"  r+  Únumcolsr…  Únew_correlate_fromsÚall_correlate_fromsrÚ  s                  r  rï  zSQLCompiler._setup_select_stackŠ  s;  € ð  Ð 1Ñ2ˆØ˜^Ñ,ˆà˜QÒØ &ˆE�*ÒÙØ˜ZÑ(ˆHÜ˜(×8Ñ8Ó9ˆGä�=×3Ñ3Ó4¸Ò?Ü×&Ñ&ð!ð
 ØØ&¨Ñ*Ü˜F×8Ñ8Ó9ð	ñ		óð ñ ™'Ø!×4Ñ4Ø)8×)CÑ)CØ ó*ð *,ð	 5ó ‰Eð "×4Ñ4Ø)8Ø)5ð 5ó ˆEô
 "¤-°Ð"7Ó8ÐØ1×7Ñ7¸ÓHÐð 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"                  r| | j$                  |fi |¤Žz  }|j&                  r| | j(                  |fi |¤Žz  }|j*                  �| | j,                  |fi |¤Žz  }|S c c}w c c}w )
NrØ   Fz 
FROM T)re  ru  rÂ  ©re  rÂ  rÂ  z 
WHERE z	 
HAVING )rˆ   rk  ry  r}  r€   rz  rÂ  Úrstriprð  rÝ  rU  Ú_where_criteriarþ  r›  Ú_group_by_clausesr_  Ú_having_criteriaÚ_order_by_clausesr`  ra  rb  Ú_for_update_argÚfor_update_clause)r  r¾  rª   r'  rý  r…  rü  rÙ  rß  rÂ  Úwarn_lintingÚfÚts                r  rô  z SQLCompiler._compose_select_body¾  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Ñ(Ñ(�à×#Ò#ØÐ(�D×(Ñ(¨Ñ:°6Ñ:Ñ:ˆDà×*Ò*ØÐ*�D×*Ñ*¨6Ñ<°VÑ<Ñ<ˆDà×!Ñ!Ð-ØÐ*�D×*Ñ*¨6Ñ<°VÑ<Ñ<ˆDàˆùòq	ùòs   ÂH
Ã
H
c                óN   ‡ ‡— dj                  ˆˆ fd„|D «       «      }|r|dz  }|S )Nr/  c              3  ó„   •K  — | ]7  \  }}|d v s|‰j                   j                  k(  r |j                  ‰fi ‰¤Ž–— Œ9 y­w))Nr¼  N)r´  r  rÝ  )r;  Úprefixrþ  rÕ  r  s      €€r  r=  z1SQLCompiler._generate_prefixes.<locals>.<genexpr>  sH   øè ø€ ò 
á$�˜Ø˜{Ñ*¨l¸d¿l¹l×>OÑ>OÒ.Oð &ˆF×%Ñ% dÑ1¨bÕ1ñ
ùs   ƒ=A rò  )r  rY  r‰  rÕ  r  s   `  ` r  ro  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   r/  ú, 
z
 )rX  r&   r™  r”  ÚkeysrZ  rc  rd  rx   rk  Úget_cte_preamblerˆ   r»  rY  )r  rÐ  rZ  rX  r[  r{  rw  rV  rd  Úis_rendered_levelr[  Ú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  rk  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_precolumnsb  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_clauser  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.z
 ORDER BY r£  )rô  r  r…  r!   r'  )r  rª   rÕ  r-  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†  rÎ  r  r…  ú
RETURNING rØ   )rn  r   Ú_select_iterablesrÀ  rˆ   )r  rY  Ú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  rj  zSQLCompiler.limit_clause¬  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)rã  Ú	with_tiesr£  z
 OFFSET %s ROWSz
 OFFSET 0 ROWSz
 FETCH FIRST rã  z PERCENTz ROWS r5  z	WITH TIESÚONLY)rh  Ú_fetch_clause_optionsr3  Ú_simple_int_clauseÚrender_literal_executer»  )
r  rª   ri  Úrequire_offsetÚ"use_literal_execute_for_simple_intrÕ  Úfetch_clause_optionsr¾  Úoffset_clauseÚ
offset_strs
             r  ri  zSQLCompiler.fetch_clause¶  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
                ór  — |r|j                   |j                  |<   |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)Nr,  r—  r£  )Úfullnamer…  r¬  r�  rž  r›  r  rÓ  r„  rs  rl  r›  )r  rž   re  r“  rt  ru  Ú
use_schemarÂ  r   r•  rß  r£  rR  Ú	anon_names                 r  Úvisit_tablezSQLCompiler.visit_tableß  s9  € ñ Ø',§~¡~ˆ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 Tr  ú ON rÂ  )r†  rz  r¹  rÅ  r)   r‰   r*   r�   r†   ÚisouterrÝ  Úonclause)r  rˆ   re  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  rY  Ú
table_textrž   r´  rû  Údialect_hintss          r  Ú_setup_crud_hintszSQLCompiler._setup_crud_hints2  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_explicitr2   r?  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©  r)  r*  Ú__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¼  rA  )r  Ú	formattedr<  rS  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  )r;  r'  r`  Ú	bind_keysra  s       €r  r=  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>M  s(   øè ø€ ò 6á.�A�q˜) Yñ # 9¨i×8ñ6ùr   c              3  óZ   •K  — | ]"  \  }}}}|D ]  }‰j                  ||«      –— Œ Œ$ y ­wr  r2  )r;  r'  rc  r<  rS  s       €r  r=  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>R  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  )r;  r�  r<  Úlen_rê  Úgeneric_setinputsizess        €r  r=  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>™  sF   øè ø€ ò /à!Ø.Cò/ñ +˜C  sð  ˜5  % Ð)¨4°Ô5ð/Ø5ñ/ùr„  r  c              3  ó(   •K  — | ]	  }|‰‰ –— Œ y ­wr  r  )r;  r€  Úexpand_pos_lower_indexÚexpand_pos_upper_indexs     €€r  r=  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>®  s"   øè ø€ ò &àð Ð0Ð1GÔHñ&ùs   ƒc              3  óZ   •K  — | ]"  \  }}‰j                  d t        |«      «      –— Œ$ y­w)Ú_IMV_VALUES_COUNTERN)r¼  r   )r;  rú  r'  Úexecutemany_values_w_commas      €r  r=  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>µ  s3   øè ø€ ò  ñ !%  1ð 7×>Ñ>Ø 5´s¸1³v÷ñ ùre  éþÿÿÿc              3  ó>   •K  — | ]  }‰j                   › |› �–— Œ y ­wr  )rC  )r;  rú  r  s     €r  r=  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>Ò  s)   øè ø€ ò &àð  ×>Ñ>Ð?À¸sÔCñ&ùr²  ÚEXECMANY_INDEX__rm  Ú__)4rO  rR  rC  rP  r¬  rH  r´  Úsupports_default_metavalueÚsupports_multivalues_insertr§  rP  rN  rU  rT  rù  r   rØ  rW  Ú	functoolsÚpartialr¬  r¼  rI  r¼  Úinsertmanyvalues_max_parametersr=  rJ  Úminr”  re  rS  r€   rˆ   r%  rç  rz  r6  rB  rH  r`  ra  rC  rª  ÚrangerL  r@  r¹  rº  Úfrom_iterablerW  r   r£  )Er  r1  r2  Úcompiled_parametersrh  Ú
batch_sizerM  r©  ÚimvÚ_sentinel_from_paramsÚ	lenparamsÚuse_row_at_a_timeÚ
downgradedr_  Ú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_batchesr[  r`  rJ  r  r<  r  ÚstÚall_keysÚimv_values_counterÚformatted_values_clauseÚkeys_to_replaceÚbase_parametersÚall_names_we_will_expandr«  r6  rQ  r  Úall_expand_positionsÚescapedr\  Úcompiled_batchr^  Únew_keyrg  rê  Únum_ins_paramsÚextra_params_leftÚextra_params_rightÚbatch_iteratorÚexpanded_values_stringr�  rz   r§  rX  rY  Úreplaced_values_clausesrú  Úfmvr_  ra  rS  rn  rj  rk  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   rR  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Û  r/  r�  r-  rö  rY  r—  z DEFAULT VALUES)rM  rN  rP  rQ  rS  z VALUES c              3  óR   K  — | ]  }d dj                  d„ |D «       «      z  –— Œ! y­w)r  rØ   c              3  ó*   K  — | ]  \  }}}}|–— Œ y ­wr  r  )r;  r'  rÌ  s      r  r=  z5SQLCompiler.visit_insert.<locals>.<genexpr>.<genexpr>  s   è ø€ Ò L©>¨1¨a°¸¤Ñ Lùs   ‚Nrò  )r;  Úcrud_param_sets     r  r=  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  )r;  rú  ÚcpÚadd_sentinel_sets      €r  r=  z+SQLCompiler.visit_insert.<locals>.<genexpr>'  s0   øè ø€ ò %á˜˜2Ø˜!‘uÐ$4Ñ4ð ˜�s”Gñ%ùr>  c              3  óÀ   •K  — | ]U  \  }\  }}}}|‰vrC‰j                  |j                  |j                  j                  ‰j                  «      d |› �«      n|–— ŒW y­w©r§  N)r·  r  rè  r´  )r;  rú  r  r'  r  r©  r  s        €€r  r=  z+SQLCompiler.visit_insert.<locals>.<genexpr>5  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  )r;  rú  r  r'  r  r©  s        €r  r=  z+SQLCompiler.visit_insert.<locals>.<genexpr>D  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 (r*  )rH  rI  rJ  rL  rM  rN  rP  rQ  rR  rS  rU  )>r[  r1  r’  r4  r®  r'  r£  r€   re  r   Ú_get_crud_paramsr¬  rH  rU  Úsingle_paramsr´  Úsupports_default_valuesrs  Úsupports_empty_insertr2   r×  r  Ú_has_multi_parametersrt  r:  Ú
_returningÚ_sort_by_parameter_orderr¬  rp  ro  Úformat_tablerž   rð  rM  rÒ  rÓ  rˆ   Úuse_insertmanyvaluesÚuse_sentinel_columnsr/  rO  rd  rm  Ú_insert_sentinelr”  r0  r>  rª   r»  rX  Úcte_follows_insertrÖ  rG  Údefault_metavalue_tokenÚ_post_values_clauserO  Úall_multi_paramsro  Úis_default_metavalue_onlyrp  rù  rˆ  )'r  Úinsert_stmtrR  r^  rÕ  r'  rÙ  Úcounted_bindparamÚcrud_params_structÚcrud_params_singler¬  r¯  r¾  rK  r'  r  rµ  Únamed_sentinel_paramsÚadd_sentinel_colsrS  r/  r  Úparam_namesÚ_params_by_colÚ_add_sentinel_colÚ
param_namer0  Úselect_textrÐ  Úembed_sentinel_valueÚrender_bind_castsrÌ  r‡  ÚcolnamesÚcolnames_w_castr«  rJ  Ú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                 ó   — y)z3Provide a hook for MySQL to add LIMIT to the UPDATENr  )r  Úupdate_stmts     r  Úupdate_limit_clausezSQLCompiler.update_limit_clause”  ó   € àr  c                 ó   — y)z3Provide a hook for MySQL to add LIMIT to the DELETENr  )r  Údelete_stmts     r  Údelete_limit_clausezSQLCompiler.delete_limit_clause˜  rÑ  r  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.

        Tre  r“  rÜ  )r  rÏ  Ú
from_tableÚextra_fromsrÕ  s        r  Úupdate_tables_clausez SQLCompiler.update_tables_clauseœ  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Ï  rÖ  r×  Ú
from_hintsrÕ  s         r  Úupdate_from_clausezSQLCompiler.update_from_clause¦  s   € ô "ð%ó
ð 	
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  }| jQ                  |«      }|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  )r;  r'  r  rÌ  s       r  r=  z+SQLCompiler.visit_update.<locals>.<genexpr>  s)   è ø€ ò 
á!��4˜ ð �3‰J˜Õñ
ùs   ‚zList[Tuple[Any, str, str, Any]]r/  r¢  ú WHERE rÏ  ÚUPDATE©rš  r�  ).r[  r   r¹  rA   r1  r’  r5  r®  r'  rk  ry  r}  r€   rz  rÂ  Ú_extra_fromsr(  r*   rž   rŸ   r£  rp  ro  rØ  r   r­  r®  rð  rM  rÒ  rÓ  rˆ   r   r:  r²  r>  r0  rÜ  r
  rþ  rÐ  rX  r¬  rÖ  r›  rˆ  )r  rÏ  r^  rÕ  r'  rÙ  rÂ  r  r×  Úis_multitableÚ
main_fromsr  Úrender_extra_fromsr#  r¾  rK  r¿  Úcrud_paramsrL  Úextra_from_textr  rj  rÐ  s                          r  Úvisit_updatezSQLCompiler.visit_update´  sb  € ð ;˜×:Ñ:Ø˜ñ
Ø!#ñ
ˆõ Ü˜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™Ñ%�à×/Ñ/°Ó<ˆÙØ�C˜,Ñ&Ñ&ˆDð ×#Ò# {×'=Ò'=Ø×0Ò0Ø�C˜$×/Ñ/ØØ×'Ñ'ÒA¨;×+AÑ+AØ$,ð 0ó ñ ñ ˆDð �9Š9Ù3;œC §
¡
œOÀˆMØ×*Ñ*¸Ð*ÓGÈ$ÑNˆDáØÐ*Ð*Ð*Ø×Ñ xÐÔ0à�
‰
�‰�rÔàˆùòS"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  rÓ  rÖ  r×  rÛ  rÕ  s         r  Údelete_extra_from_clausez$SQLCompiler.delete_extra_from_clauseH  s   € ô "ð%ó
ð 	
r  c                ó.   —  |j                   | fdddœ|¤ŽS )NT)re  r“  rÜ  )r  rÓ  rÖ  r×  rÕ  s        r  Údelete_table_clausezSQLCompiler.delete_table_clauseX  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  }
| jE                  |«      }|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 �ŒAw xY w)Nr^  FTrÎ  zDELETE úFROM )rÂ  r/  r¢  rÂ  rà  rÏ  ÚDELETErâ  r�  )(r[  r1  r’  r3  r®  r'  rk  ry  r}  r€   rz  rÂ  rã  rž   rŸ   r£  rp  ro  rî  Ú	TypeErrorr»  r   r­  rð  rM  rÒ  rÓ  r:  r²  r>  r0  rì  r
  rþ  rÔ  rX  r¬  rÖ  r›  rˆ  )r  rÓ  r^  rÕ  r'  rÙ  rÂ  r  r×  r#  r¾  rK  r'  rL  rè  r  rj  rÐ  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™Ñ%�à×/Ñ/°Ó<ˆÙØ�C˜,Ñ&Ñ&ˆDð ×#Ò# {×'=Ò'=Ø×0Ò0Ø�C˜$×/Ñ/ØØ×'Ñ'ÒA¨;×+AÑ+AØ$,ð 0ó ñ ñ ˆDð �9Š9Ù3;œC §
¡
œOÀˆMØ×*Ñ*¸Ð*ÓGÈ$ÑNˆDáØÐ*Ð*Ð*Ø×Ñ xÐÔ0à�
‰
�‰�rÔàˆøôU ò 	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 %srõ  r÷  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 %srõ  r÷  s      r  Úvisit_release_savepointz#SQLCompiler.visit_release_savepointè  s#   € Ø%¨¯©×(FÑ(FØó)
ñ 
ð 	
r  )r´  rm   r1  r¢  r°  r¯  ri  r5  rj  r(  rk  rw  r  zOptional[SQLCompiler]rß  r   )r  rK  )r  r9  )r  zDict[Any, Any])r  zMutableMapping[CTE, str])r  zVMutableMapping[str, Union[_BindProcessorType[Any], Sequence[_BindProcessorType[Any]]]])r  r6   )NT)rä  rð  ræ  r(  r  r0  )NNTNTF)rä  rð  rå  rñ  ræ  r(  rÜ  úOptional[int]rÝ  r(  rg  r(  r  rl   ©F)r2  rl   rh  r(  r  r0  )r  zCallable[[Any], str]rí  )NFFNr  )NTr  N)r£   úColumnClause[Any]rˆ  úOptional[_ResultMapAppender]rŸ  r(  r‰  r  r   z Optional[_AmbiguousTableNameMap]rß  r   r  r   r  )NF)r  rK   rÕ  r   r  r   )r  rL   rÕ  r   r  r   )r  rI   rÕ  r   r  r   )r5  úFunction[Any]rˆ  r  rß  r   r  r   )r5  r  rß  r   r  r   )FN©Nr  )NFNN)
r¢   úBinaryExpression[Any]r  r   rÆ  r(  rÕ  r   r  r   )r¢   r  rC  r   rÕ  r   r  r   )FFFFFF)rÌ  r   r  zsqltypes.TypeEngine[Any]r  r   )rD  r   r  rC   r  r   )r  r   r  r   )FFNNNN)r  r   r  r(  r   r(  rP  rK  r!  zOptional[TypeEngine[Any]]rQ  zOptional[Set[str]]rR  rM  rÕ  r   r  r   )r[  rZ   re  r(  rt  r(  ru  zOptional[_FromHintsType]r^  úOptional[CTE]rÂ  zOptional[FromLinter]rV  zselectable._CTEOptsrß  r   r  rK  )FFFNFFNN)FNN)
r  r   r  r   r  r  r  r  r  r  )NNNTFFT)rž   r[   r¾  rK  r  rK  )FFNNNFN)rª   r,  r  zTuple[str, _FromHintsType])rª   r,  rÕ  r   r  r   ©
rY  r@   r/  zSequence[_ColumnsClauseElement]rÛ  r(  rÕ  r   r  r   )NFF)FFFNTNNN)rž   rU   r  rO  )r1  r   r2  rh   r{  z%List[_MutableCoreSingleExecuteParams]rh  rZ  r|  rK  rM  r(  r©  r¨  r  z Iterator[_InsertManyValuesBatch]r  )rÏ  r?   r^  r  rÕ  r   r  r   )úr  r	  r
  r  ÚEXTRACT_MAPr:  r&   rõ  r0  r  rò  ÚCOMPOUND_KEYWORDSr\  r3  r4  r5  r7  r8  r:  r;  r>  r?  r@  rD  rE  rF  rG  rH  rI  rJ  rL  rN  rO  rP  Ú	frozensetrQ  rR  rô  rS  r(  Úpostfetch_lastrowidrT  r6  rU  rV  rW  r`  rb  r  r½  Úpatternr«  rö  rÂ  r^  rx  rÀ  rE  r‡  Úro_memoized_propertyr‹  r�  r’  r•  Úmemoized_propertyr—  Úmemoized_instancemethodrš  Ú
contextlibÚcontextmanagerrŸ  r}  r|  rÍ  rÏ  rÚ  rÒ  rç  ró  rä  r~  Úpreload_moduler*  r/  rJ  rS  rU  r`  rf  ri  rz  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  r3  r8  r=  rC  r?  rQ  rN  rK  rf  rb  r  ru  r}  r€  r…  rˆ  r�  r�  rœ  rš  r³  r  r‹  rÉ  rË  rÍ  rÏ  rÑ  r�  rs  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·  r-   r  r÷  r$  r„  rK  rÅ  rÓ  r$   Ú_CTEOptsrj  r�  r‘  rŽ  rŸ  r�  r¦  r°  r¶  r¸  rs  rÕ  rÀ  r¾  r›  rÙ  rÔ  rÞ  rá  Útypingr   rÑ  ré  rê  r  rñ  rï  rô  ro  rÖ  r  rò  r_  r`  r  r0  rj  ri  rC  rI  rM  r,   Ú
CLIENTSIDErd  rn  ÚSENTINEL_DEFAULTÚNONErk  rl  rT  rŸ   rj  rR  rZ  rŸ  rÍ  rÐ  rÔ  rØ  rÜ  ré  rì  rî  ró  rù  rû  rý  r  r  r  rì  rì  *  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óÐð ñ#ó ð#ð ñCó ðCð )-Ø/3Ø %Ø%Ø59ðPàðPð +ðPð &ð	Pð
 -ðPð ðPð ðPð 3ðPð ôPðd ó=ó ð=ð$ 
×Ñóó ðð0 ñ(ó ð(ð ñ Mó ð MðD ñGó ðGð 
×Ñóó ðð 
×!Ñ!óó "ðð. ×Ññó ðò.9òvGðR 
×Ñð
ð
ó
ó ð
ò8#ð óó ðð
 6:Ø!ñ
à2ð
ð ð
ð 
ô	
ð2 6:ØGKØ!Ø'+ØØ %ñ~à2ð~ð Eð~ð ð	~ð
 %ð~ð ð~ð ð~ð 
)ô~ð@ 
×!Ñ!ñ$ó "ð$ðL ñ
3ó ð
3ð  %ñCà3ðCð ðCð 
ô	CðJ €T×ÑÐ3Ó4ñ
ó 5ð
ð 4Ó3à	×Ñóó ðð 
×ÑØ€T×ÑÐ3Ó4ñPó 5ó ðPðd 
×ÑØ€T×ÑÐ3Ó4ñ)ó 5ó ð)ôVò>ô@OòOð .3ô-
ð` .3ô+ð` Ø!Ø#Ø"Øô/òb
ò
/ð ;?Ø"Ø.0ØEIñ9Oà!ð9Oð 8ð9Oð ð	9Oð
 ,ð9Oð #Cð9Oð ð9Oð 
ô9OòvAòòò
òò
ô

ð4 05ô2ôhôôò
òò"@òLòò&ò&Kò
ò(
òT
òB
ò
ò
ò7ð ;?ñ,àð,ð 8ð,ð ð	,ð
 
ô,ò\8ò
ôCð 04ô?òB3ò-ð ACô$òLò6ò$BòBò
ò

ò4ò$
ð ;?ôH*òTM1ðd ØØØ ô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ð
à	ô
ð $ØØ"ØØ Øônò`$ð $Ø!%ó	DðB%Øð%Ø!9ð%à	ô%òNðØðØ&6ðà	ôô*$ð #ØØ&*Ø48Ø48Ø15ñAàðAð ðAð ð	Að
 $ðAð 2ðAð  2ðAð /ðAð ðAð 
ôAòFCð ØØ.2Ø&*Ø,0Ø(;¨
×(;Ò(;¸EÓ(BðVàðVð ðVð ð	Vð
 ,ðVð $ðVð *ðVð &ðVð ðVð 
ôVòp3ò0ð ØØØØØØØôbòH0ò?ôò"ð EIô/òb9ò(ð
àð
ð ð
ð !ð	
ð
 ð
ð 
ô
ð4 EIô
ð8 ØØ Ø"Ø Ø %ØôQJòfòðØðØ'4ðà	ôò
ò$ð .Ó-à×ÓØ1˜t×1Ñ1Ø¡£Ð-°Á	ÃÐ/LÐMó 
Ðð
 ,1ôð: '+Ð Ó*ðð ØØØØØØôKðZ
!Ø!ð
!à	#ô
!ò2òh]ò~ð Ø %ô3òjô7ò 	ò
òð1àð1ð 8ð1ð
 "ð1ð ð1ð 
ô1ò@ð ØØ+0ô'ðX ØØØØØØ!%Øô3ôj
ò<
)ð" (: 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ò
ð" '+ñRàðRð $ðRð ð	Rð
 
ôRòh
ó 
õ
AóFOó
ô

r  rì  c                  ó¶   ‡ — e Zd Z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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                 ó   — 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&   r&  Ú
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 )Nr-  r.  )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_sequencerT  s      r  rN  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  rY  r/  rÛ  rÕ  rŠ  rµ  s          r  r0  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 )NTre  rð  rØ   c              3  óH   •K  — | ]  } |j                   ‰fd ‰i‰¤Ž–— Œ y­w©ru  NrÜ  ©r;  r  rÛ  rÕ  r  s     €€€r  r=  z4StrSQLCompiler.update_from_clause.<locals>.<genexpr>6  s0   øè ø€ ò #
àð !ˆA× Ñ  ÑB°ÐB¸rÕBñ#
ùr„  rò  rÚ  s   `   ``r  rÜ  z!StrSQLCompiler.update_from_clause2  s3   ú€ ð ˆˆ8‰Ø˜Ÿ™õ #
à ô#
ó 
ñ 
ð 	
r  c                óP   ‡ ‡‡— d‰d<   ddj                  ˆˆˆ fd„|D «       «      z   S )NTre  rØ   c              3  óH   •K  — | ]  } |j                   ‰fd ‰i‰¤Ž–— Œ y­wr0  rÜ  r1  s     €€€r  r=  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_exprD  s   € Ø$r  c                ó   — d|z  S )Nz[%s]r  rÜ  s      r  rÔ  z!StrSQLCompiler.get_from_hint_textG  s   € Ø˜‰}Ðr  c                ó*   —  | j                   |dfi |¤ŽS )Nz
 <regexp> ©r�  r|  s       r  r  z+StrSQLCompiler.visit_regexp_match_op_binaryJ  s   € Ø,ˆt×,Ñ,¨V°\ÑHÀRÑHÐHr  c                ó*   —  | j                   |dfi |¤ŽS )Nz <not regexp> r7  r|  s       r  r  z/StrSQLCompiler.visit_not_regexp_match_op_binaryM  s   € Ø,ˆt×,Ñ,¨VÐ5EÑLÈÑLÐLr  c                ó€   — d |j                   j                  | fi |¤Ž›d |j                  j                  | fi |¤Ž›d�S )Nz<regexp replace>(rØ   r*  )r‰   rÝ  r�   r|  s       r  r  z-StrSQLCompiler.visit_regexp_replace_op_binaryP  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Ú   r*  )r  rÝ  rµ  )r  r   rß  s      r  Úvisit_try_castzStrSQLCompiler.visit_try_castV  s>   � à*ˆD�K‰K×*Ñ*¨4Ñ:°6Ó:Ø.ˆD�O‰O×.Ñ.¨tÑ>°vÓ>ð
ð 	
r  r  )r  r	  r
  r  r‘  r&   r  rÖ  r#  r&  r)  rN  r0  rÜ  rì  rš  rÔ  r  r  r  r;  r÷  rø  s   @r  r  r  î  s¦   ø„ ñò& ð €T×ÑÐ0Ó1óCó 2ðCò
òAòAò
ð
1àð1ð 8ð1ð
 "ð1ð ð1ð 
ó1ò
ò
ò%òòIòMò
ö
r  r  c                  óv  — e Zd ZdZer	 	 	 d7	 	 	 	 	 	 	 	 	 d8d„Zej                  d9d„«       Zej                  d„ «       Z
	 	 	 d:	 	 	 	 	 	 	 d;d„Zd„ Zd„ Zd	„ Zd
„ Zd<d„Z	 d=d„Zd„ Zd„ Zd>d„Z	 d?d„Zd„ Z	 d<	 	 	 	 	 d@d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdAd„Zd=d„Z d„ Z!d„ Z"d„ Z#d„ Z$d „ Z%dBd!„Z&dCd"„Z'd#„ Z(d$„ Z)d%„ Z*	 	 	 	 	 	 dDd&„Z+	 	 	 	 	 	 dEd'„Z,d(„ Z-	 	 	 	 	 	 dFd)„Z.	 	 	 	 	 	 dGd*„Z/	 	 	 	 	 	 dDd+„Z0	 	 	 	 	 	 dEd,„Z1	 	 	 	 	 	 dFd-„Z2dHd.„Z3	 	 	 	 	 	 dFd/„Z4	 	 	 	 dId0„Z5	 	 	 	 dId1„Z6	 	 	 	 dId2„Z7dJd3„Z8dId4„Z9d5„ Z:d6„ Z;y)KÚDDLCompilerTc                 ó   — y r  r  r½  s         r  rÀ  zDDLCompiler.__init__b  s   € ð r  c                óf   — | j                   j                  | j                   d | j                  ¬«      S )Nr\  )r´  r  r©  rA  s    r  rÚ  zDDLCompiler.sql_compilerk  s/   € à�|‰|×.Ñ.Ø�L‰L˜$°T×5NÑ5Nð /ó 
ð 	
r  c                ó.   — | j                   j                  S r  )r´  r´  rA  s    r  Útype_compilerzDDLCompiler.type_compilerq  s   € à�|‰|×2Ñ2Ð2r  Nc                 ó   — y r  r  rã  s       r  rç  zDDLCompiler.construct_paramsu  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#   rU   rW  r¬  Úformat_table_seqr¬  r­  r´  rÚ  r¿  r1  )r  Úddlrß  rD  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_schema�  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¬  rN  rÓ  Úcascade©r  ÚdroprÕ  r¾  s       r  Úvisit_drop_schemazDDLCompiler.visit_drop_schema–  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 r/  zTABLE rL  r)  ú
F©Úfirst_pkr  ú	Tz(in table 'z', column 'z'): r   )Ú _include_foreign_key_constraintsz
)%s

)rÓ  r¬  rp  rˆ   rM  r´  Úcreate_table_suffixrµ  r»  rB  r2   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_tableŸ  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                   }|j                  ry ‰ j                  ||¬«      }dj                  ˆ fd„|j                  D «       «      }|r|d|z   z  }|S )NrZ  r/  c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr  )r»  ©r;  rÁ   r  s     €r  r=  z2DDLCompiler.visit_create_column.<locals>.<genexpr>Ú  s   øè ø€ ò 
Ø)3ˆD�L‰L˜×$ñ
ùs   ƒ)rÓ  ÚsystemÚget_column_specificationrˆ   Úconstraints)r  r¤   r[  rÕ  r£   r¾  rg  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;  r§  s     r  r=  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_alterrE  r»  rk  s     €r  r=  z7DDLCompiler.create_table_constraints.<locals>.<genexpr>û  sI   øè ø€ ò àØ×:Ñ:¸4Ô@àŸ™×3Ò3Ü" :¨{¸EÔBð —‘˜Z×(ñùr¬  )rB  r£  Úforeign_key_constraintsrç  r€   r  Ú_sorted_constraintsrˆ   )r  rž   r]  rÕ  rn  Úall_fkcsÚ	omit_fkcsrŠ  s   `       r  ra  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 rQ  )rS  r¬  r´  rÓ  rU  s       r  Úvisit_drop_tablezDDLCompiler.visit_drop_table  s6   € ØˆØ�>Š>Ø�LÑ ˆDØ�d—m‘m×0Ñ0°·±Ó>Ñ>Ð>r  c                óR   — d| j                   j                  |j                  «      z   S )Nz
DROP VIEW ©r¬  r´  rÓ  ©r  rV  rÕ  s      r  Úvisit_drop_viewzDDLCompiler.visit_drop_view  s    € Ø §¡× :Ñ :¸4¿<¹<Ó HÑHÐHr  c                ó`   — |j                   €"t        j                  d|j                  z  «      ‚y )Nz,Index '%s' is not associated with any table.)rž   r2   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 rL  ©Úinclude_schemarE  ©rA  r²  rØ   c              3  óZ   •K  — | ]"  }‰j                   j                  |d d¬«      –— Œ$ y­w)FT©rŸ  r  N)rÚ  r»  )r;  r  r  s     €r  r=  z1DDLCompiler.visit_create_index.<locals>.<genexpr>-  s8   øè ø€ ò ð ð ×!Ñ!×)Ñ)Ø¨¸Tð *÷ ñùre  r*  )rÓ  r�  r¬  r«   r  r2   r×  rM  Ú_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 rQ  Tr„  )rÓ  r  r2   r×  rS  r‰  )r  rV  rÕ  r�  r¾  s        r  Úvisit_drop_indexzDDLCompiler.visit_drop_index6  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 ©Nr,  )rž   r¬  r�  rž  Úformat_index)r  r�  r…  r£  Úschema_nameÚ
index_names         r  r‰  z DDLCompiler._prepared_index_nameC  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_constraintU  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_comment[  sL   � à�M‰M×&Ñ& v§~¡~Õ6Ø×Ñ×2Ñ2Ø—‘×&Ñ&¬¯©Ó(9ôð
ð 	
r  c                óR   — d| j                   j                  |j                  «      z  S )NzCOMMENT ON TABLE %s IS NULLr}  r~  s      r  Úvisit_drop_table_commentz$DDLCompiler.visit_drop_table_commentc  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_tablerA  rÛ   )r¬  Úformat_columnrÓ  rÚ  r÷  r™  r%   rš  r–  s      r  Úvisit_set_column_commentz$DDLCompiler.visit_set_column_commenth  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_commentr  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_commentw  s   € Ü×-Ñ-¨d´D¸³LÓAÐAr  c                ó@   — t        j                  | t        |«      «      ‚r  rÐ  r~  s      r  Úvisit_drop_constraint_commentz)DDLCompiler.visit_drop_constraint_commentz  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 CYCLEr/  )
Ú	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 rL  r/  )rM  r¬  r,  rÓ  r²  )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 rQ  )rS  r¬  r,  rÓ  rU  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 rQ  r£  rR  )
rÓ  r  r¬  Úformat_constraintr2   r×  r´  rž   rS  rT  )r  rV  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 )Nr/  )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  rm  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©Nr£  r  ©r  rž   s     r  r^  zDDLCompiler.create_table_suffixÒ  ó   € Ør  c                 ó   — yrÄ  r  rÅ  s     r  rc  zDDLCompiler.post_create_tableÕ  rÆ  r  c                ó–   — t        |j                  t        j                  «      r%| j	                  |j                  j
                  «      S y r  )r¹  Úserver_defaultr#   ÚDefaultClauseÚrender_default_stringÚargr�  s     r  r½  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  rË  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  rÕ  rÙ  s       r  rÐ  z)DDLCompiler.visit_column_check_constraintò  rÚ  r  c                óž   — t        |«      dk(  ry | j                  |fi |¤Ž}| | j                  |fi |¤Žz  }|| j                  |«      z  }|S ©Nr   r£  )r¬  rÖ  Údefine_primary_key_bodyrØ  rÙ  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  )rÖ  Údefine_foreign_key_bodyÚdefine_constraint_matchÚdefine_constraint_cascadesrØ  rÙ  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 rÝ  )r¬  rÖ  Údefine_unique_bodyrØ  rÙ  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¬  r¹  )r  rÁ   rÕ  r¾  rº  s        r  rÖ  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 r  rØ   c              3  óh   •K  — | ])  }‰j                   j                  |j                  «      –— Œ+ y ­wr  ©r¬  r›  r  ©r;  rŠ  r  s     €r  r=  z6DDLCompiler.define_primary_key_body.<locals>.<genexpr>*  s,   øè ø€ ò #
àð �M‰M×Ñ §¡×'ñ#
ùó   ƒ/2)rˆ   Ú_implicit_generatedÚcolumns_autoinc_firstrµ  rÙ  s   `   r  rÞ  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  ©r;  r  r¬  s     €r  r=  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  r=  z6DDLCompiler.define_foreign_key_body.<locals>.<genexpr>@  rö  rï  r*  )r¬  r”  r   r£   rž   rˆ   ræ  )r  rÁ   rÕ  Úremote_tabler¾  r¬  s        @r  rá  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ƒ  r)  rØ   c              3  óh   •K  — | ])  }‰j                   j                  |j                  «      –— Œ+ y ­wr  rí  rî  s     €r  r=  z1DDLCompiler.define_unique_body.<locals>.<genexpr>K  s$   øè ø€ ÒF°a�d—m‘m×)Ñ)¨!¯&©&×1ÑFùrï  r*  )Ú!define_unique_constraint_distinctrˆ   rÙ  s   `   r  rè  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\  rÙ  s       r  r×  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  rã  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¬  Úvalidate_sql_phraserÿ  Ú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¬  r  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¬  r  ÚFK_INITIALLYr  s      r  rØ  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)r  r  s      r  râ  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¡  )Úalwaysr²  )r  r¿  rÕ  r¾  r´  s        r  Úvisit_identity_columnz!DDLCompiler.visit_identity_column�  s@   � à Ÿš‰H¨\Ñ9ð
ˆð ×+Ñ+¨HÓ5ˆÙØ�G˜gÑ%Ñ%ˆDØˆr  )...)
r´  rm   r1  r=   r©  r¨  r¾  r(  r¿  rê  rë  rî  rï  rÿ  r  )r�  rS   r  r  )FT)r�  rS   r…  r(  r  r   )r±  rR   r  r   )r£   zColumn[Any]r  rK  )r°   zUnion[Visitable, str]r  r   )rÁ   rT   rÕ  r   r  r   )rÁ   rQ   rÕ  r   r  r   )rÁ   rV   rÕ  r   r  r   )rÁ   rP   rÕ  r   r  r   )rÁ   rN   rÕ  r   r  r   )rÁ   rQ   r  r   )rÁ   rP   r  r   )<r  r	  r
  ró  r   rÀ  r&   r  rÚ  r  rA  rç  rJ  rO  rW  rh  ro  ra  r{  r  r�  rŒ  rŽ  r‰  r—  r›  r�  r¡  r£  r¥  r§  r²  rµ  r·  r»  rm  r^  rc  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=  ]  sÌ  „ Ø€Fáð FIØ,/Ø03ð	àð	ð ,ð	ð #Cð		ð
 &*ð	ð .ó	ð 
×Ñò
ó ð
ð
 
×Ññ3ó ð3ð
 6:ØGKØ!ð	à2ðð Eðð ð	ð
 
3óòLò&Bòò2óhð  7;ó#
òJ?òIóð BFóò@Lð 49ðØðØ,0ðà	óò$
ò
ò
ò

ò
ò
Bò@óó(òBò
ò&ò6òóó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@d„ZdAd„ZdBd„ZdCd„ZdDd„Zd?d„ZdEd„ZdFd„ZdGd„ZdHd„ZdId„ZdEd„Z	 	 	 	 	 	 dFd„ZdId„Zd=d„Z d;d„Z!d<d „Z"d9d!„Z#	 	 	 	 	 	 d8d"„Z$d7d#„Z%d4d$„Z&d1d%„Z'd2d&„Z(d5d'„Z)dCd(„Z*dJd)„Z+d?d*„Z,	 	 	 	 	 	 dKd+„Z-dLd,„Z.d-„ Z/	 	 	 	 	 	 dMd.„Z0	 	 	 	 	 	 dNd/„Z1y0)OÚ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Ë  r6  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  c                ó6   — |}|r	|d|› d�z  }|r	|d|› d�z  }|S )Nr)  r*  z
 COLLATE "r—  r  )r  r  Úlengthr©  r¾  s        r  Ú_render_string_typez'GenericTypeCompiler._render_string_typeÚ  s9   € ð ˆÙØ�a˜�x˜q�MÑ!ˆDÙØ�j  ¨1Ð-Ñ-ˆDØˆr  c                óP   — | j                  d|j                  |j                  «      S )NÚCHAR©rN  rM  r©  rþ  s      r  Ú
visit_CHARzGenericTypeCompiler.visit_CHARä  ó   € Ø×'Ñ'¨°·±¸e¿o¹oÓNÐNr  c                óP   — | j                  d|j                  |j                  «      S )NÚNCHARrQ  rþ  s      r  Úvisit_NCHARzGenericTypeCompiler.visit_NCHARç  s   € Ø×'Ñ'¨°·±¸u¿¹ÓOÐOr  c                óP   — | j                  d|j                  |j                  «      S )NÚVARCHARrQ  rþ  s      r  Úvisit_VARCHARz!GenericTypeCompiler.visit_VARCHARê  s$   € Ø×'Ñ'Ø�u—|‘| U§_¡_ó
ð 	
r  c                óP   — | j                  d|j                  |j                  «      S )NÚNVARCHARrQ  rþ  s      r  Úvisit_NVARCHARz"GenericTypeCompiler.visit_NVARCHARï  s$   € Ø×'Ñ'Ø˜Ÿ™ e§o¡oó
ð 	
r  c                óP   — | j                  d|j                  |j                  «      S )NÚTEXTrQ  rþ  s      r  Ú
visit_TEXTzGenericTypeCompiler.visit_TEXTô  rS  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£  ©rM  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Ú	VARBINARYrh  r£  ri  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  r2  r  c                ó”   — |j                   r| j                  j                  s| j                  ddd ¬«      S  | j                  |fi |¤ŽS )NrP  é    )rM  r©  )Únative_uuidr´  Úsupports_native_uuidrN  rb  rþ  s      r  Ú
visit_uuidzGenericTypeCompiler.visit_uuid  sE   € Ø× Ò ¨¯©×(IÒ(IØ×+Ñ+¨F¸2ÈÐ+ÓNÐNà"�4—?‘? 5Ñ/¨BÑ/Ð/r  c                ó(   —  | j                   |fi |¤ŽS r  )re  rþ  s      r  Úvisit_large_binaryz&GenericTypeCompiler.visit_large_binary  ó   € ð ˆt�‰˜uÑ+¨Ñ+Ð+r  c                ó(   —  | j                   |fi |¤ŽS r  )rp  rþ  s      r  Úvisit_booleanz!GenericTypeCompiler.visit_boolean  ó   € Ø!ˆt×!Ñ! %Ñ.¨2Ñ.Ð.r  c                ó(   —  | j                   |fi |¤ŽS r  )rE  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_datetime  s   € Ø"ˆt×"Ñ" 5Ñ/¨BÑ/Ð/r  c                ó(   —  | j                   |fi |¤ŽS r  )rB  rþ  s      r  Ú
visit_datezGenericTypeCompiler.visit_date  r~  r  c                ó(   —  | j                   |fi |¤ŽS r  )r9  rþ  s      r  Úvisit_big_integerz%GenericTypeCompiler.visit_big_integer  ó   € Ø ˆt× Ñ  Ñ-¨"Ñ-Ð-r  c                ó(   —  | j                   |fi |¤ŽS r  )r5  rþ  s      r  Úvisit_small_integerz'GenericTypeCompiler.visit_small_integer   s   € ð #ˆt×"Ñ" 5Ñ/¨BÑ/Ð/r  c                ó(   —  | j                   |fi |¤ŽS r  )r1  rþ  s      r  Úvisit_integerz!GenericTypeCompiler.visit_integer%  r{  r  c                ó(   —  | j                   |fi |¤ŽS r  )r$  rþ  s      r  Ú
visit_realzGenericTypeCompiler.visit_real(  r~  r  c                ó(   —  | j                   |fi |¤ŽS r  )r  rþ  s      r  Úvisit_floatzGenericTypeCompiler.visit_float+  s   € Øˆt×Ñ Ñ,¨Ñ,Ð,r  c                ó(   —  | j                   |fi |¤ŽS r  )r  rþ  s      r  Úvisit_doublez GenericTypeCompiler.visit_double.  r…  r  c                ó(   —  | j                   |fi |¤ŽS r  )r*  rþ  s      r  Úvisit_numericz!GenericTypeCompiler.visit_numeric1  r{  r  c                ó(   —  | j                   |fi |¤ŽS r  ©rY  rþ  s      r  Úvisit_stringz GenericTypeCompiler.visit_string4  r{  r  c                ó(   —  | j                   |fi |¤ŽS r  r“  rþ  s      r  Úvisit_unicodez!GenericTypeCompiler.visit_unicode7  r{  r  c                ó(   —  | j                   |fi |¤ŽS r  ©r_  rþ  s      r  Ú
visit_textzGenericTypeCompiler.visit_text:  r~  r  c                ó(   —  | j                   |fi |¤ŽS r  r˜  rþ  s      r  Úvisit_unicode_textz&GenericTypeCompiler.visit_unicode_text=  rx  r  c                ó(   —  | j                   |fi |¤ŽS r  r“  rþ  s      r  Ú
visit_enumzGenericTypeCompiler.visit_enumB  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_nullE  s"   € Ü×Ñð#à%*ñ+ó
ð 	
r  c                óZ   —  | j                   |j                  | j                  «      fi |¤ŽS r  )r»  Útype_enginer´  rþ  s      r  Úvisit_type_decoratorz(GenericTypeCompiler.visit_type_decoratorL  s)   € ð ˆt�|‰|˜E×-Ñ-¨d¯l©lÓ;ÑB¸rÑBÐBr  c                ó&   —  |j                   di |¤ŽS r  )Úget_col_specrþ  s      r  Úvisit_user_definedz&GenericTypeCompiler.visit_user_definedQ  s   € ð "ˆu×!Ñ!Ñ' BÑ'Ð'r  N)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   rM  rþ  r©  rK  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.  r1  r5  r9  r<  r?  rB  rE  rH  rK  rN  rR  rV  rY  r\  r_  rb  re  rj  rm  rp  ru  rw  rz  r}  r€  r‚  r„  r‡  r‰  r‹  r�  r�  r‘  r”  r–  r™  r›  r�  rá  r¡  r¤  r  r  r  r  r  š  s¦  „ óóð"Ø3ð"Ø;>ð"à	ó"ó
ó	ó	óóóóóóóóóðØðØ!.ðØ;Hðà	óóOóPó
ó

ó
Oóóó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.processX  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        |«      ‚)Nrl  )rn  r©  r¨  )r  r<  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  r©  z!StrSQLTypeCompiler._visit_unknownf  sA   € Ø�?‰?×#Ñ# u§¡×'?Ñ'?×'EÑ'EÓ'GÒGØ—?‘?×+Ñ+Ð+ä˜“;Ðr  c                 ó   — yrÞ  r  rþ  s      r  rá  zStrSQLTypeCompiler.visit_nulll  râ  r  c                ó`   — 	 |j                   } |di |¤ŽS # t        $ r t        |«      cY S w xY wr  )r£  r¨  r®  )r  r  rÕ  r£  s       r  r¤  z%StrSQLTypeCompiler.visit_user_definedo  s=   € ð	&Ø ×-Ñ-ˆLñ  Ñ% "Ñ%Ð%øô ò 	Ü˜“;Òð	ús   ‚ –-¬-N)r  r	  r
  r»  r«  r©  rá  r¤  r  r  r  r¦  r¦  W  s   „ ò2ò&òòó&r  r¦  c                  ó   — e Zd Zdd„Zy)Ú_SchemaForObjectCallablec                 ó   — y r  r  )r  Ú_SchemaForObjectCallable__objs     r  r  z!_SchemaForObjectCallable.__call__y  ó   � r  N)r´  r   r  r   r  r  r  r  r²  r²  x  s   „ Ü.r  r²  c                  ó   — e Zd Zdd„Zy)r+  c                 ó   — y r  r  )r  r  s     r  r  z _BindNameForColProtocol.__call__}  rµ  r  N)r  r   r  r   r  r  r  r  r+  r+  |  s   „ Ü:r  r+  c                  óh  — 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d0d1d„Zd0d2d„Zd„ Z	 d3	 	 	 	 	 d4d„Z	 d0	 	 	 	 	 d5d„Z	 d0	 	 	 	 	 d6d„Zd0d„Z ej@                  d«      	 d3	 	 	 	 	 d7d„«       Z!	 d3	 	 	 	 	 d8d „Z"	 d3	 	 	 	 	 d8d!„Z#	 	 	 	 	 	 	 	 d9d"„Z$d:d#„Z%	 	 d;	 	 	 	 	 	 	 d<d$„Z&d%„ Z'	 d0d&„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�  Fr(  Ú_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.
        r1   )rÑ   rÏ   N)
r´  r¹  rº  Úescape_quoteÚescape_to_quoteÚomit_schemaÚquote_case_sensitive_collationsr»  rm  r»  )r  r´  r¹  rº  r¾  rÁ  rÀ  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 )Nr-  r.  zJSquare bracket characters ([]) not supported in schema translate name '%s'z__[SCHEMA_%s]Ú_noneF©r›  )r#   Ú_use_schema_mapr2   r×  r.   )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__ry  rz  r�  r¼  )r  r©  ÚpreprÈ  rÇ  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.rÄ  c                óð   •— | j                  d«      }|‰v r‰|   }n|dv rt        j                  d«      ‚|}|s-‰j                  j                  }|st        j
                  d«      ‚‰j                  |«      S )Nr1   )NrÄ  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—   r2   r?  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_([^\]]+)\]))r¼  r2   r?  r`  rª  )r  r1  r©  r¼  rÎ  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.
        r(  r¹  )r¼  r¾  r¿  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¼  r¿  r¾  rÐ  s     r  Ú_unescape_identifierz'IdentifierPreparer._unescape_identifier  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.

        .. versionadded:: 1.3

        zUnexpected SQL phrase: z (matching against r*  )r  r2   r×  r  )r  rÓ  rc  s      r  r  z&IdentifierPreparer.validate_sql_phrase  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.
        )r¹  rÑ  rº  rÐ  s     r  Úquote_identifierz#IdentifierPreparer.quote_identifier*  s3   € ð ×ÑØ×%Ñ% eÓ,ñ-à×Ññð	
r  c                óÀ   — |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.r   )rF  Úreserved_wordsÚillegal_initial_charactersÚlegal_charactersr  r   )r  rÌ  Úlc_values      r  rr  z#IdentifierPreparer._requires_quotes7  sf   € à—;‘;“=ˆà˜×+Ñ+Ð+ò #Ø�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.)rÚ  r  r   rÐ  s     r  rI  z1IdentifierPreparer._requires_quotes_illegal_charsA  s"   € ð ×(Ñ(×.Ñ.¬s°5«zÓ:Ð:Ð:r  c                óV   — |�t        j                  dd¬«       | 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
        :param force: unused

            .. deprecated:: 0.9

                The :paramref:`.IdentifierPreparer.quote_schema.force`
                parameter is deprecated and will be removed in a future
                release.  This flag has no effect on the behavior of the
                :meth:`.IdentifierPreparer.quote` method; please refer to
                :class:`.quoted_name`.

        zÚThe IdentifierPreparer.quote_schema.force parameter is deprecated and will be removed in a future release.  This flag has no effect on the behavior of the IdentifierPreparer.quote method; please refer to quoted_name().ú0.9r   )r&   r#  r›  )r  r#   Úforces      r  rž  zIdentifierPreparer.quote_schemaF  s5   € ð. Ðô × Ñ ð!ð õð �z‰z˜&Ó!Ð!r  c                óR  — |�t        j                  dd¬«       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
        :param force: unused

            .. deprecated:: 0.9

                The :paramref:`.IdentifierPreparer.quote.force`
                parameter is deprecated and will be removed in a future
                release.  This flag has no effect on the behavior of the
                :meth:`.IdentifierPreparer.quote` method; please refer to
                :class:`.quoted_name`.

        NzÓThe IdentifierPreparer.quote.force parameter is deprecated and will be removed in a future release.  This flag has no effect on the behavior of the IdentifierPreparer.quote method; please refer to quoted_name().rÞ  r   r›  )r&   r#  rE  r»  rr  rÖ  )r  ra  rß  s      r  r›  zIdentifierPreparer.quotem  s±   € ð, Ðô × Ñ ð!ð õô ˜˜w¨Ó-ˆàˆ=Ø˜Ÿ™Ñ%Ø—}‘} UÑ+Ð+à×(Ñ(¨Ô/Ø+/×+@Ñ+@ÀÓ+G�D—M‘M %Ò(à+0�D—M‘M %Ñ(Ø—}‘} UÑ+Ð+ÙØ×(Ñ(¨Ó/Ð/àˆLr  c                ó@   — | j                   r| j                  |«      S |S r  )rÁ  r›  )r  Úcollation_names     r  r¨  z#IdentifierPreparer.format_collation¡  s    € Ø×/Ò/Ø—:‘:˜nÓ-Ð-à!Ð!r  c                ó¬   — | j                  |j                  «      }| j                  |«      }| j                  s|r|�| j	                  |«      dz   |z   }|S r�  )r›  r  r�  rÀ  rž  )r  rO  rA  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  rå  )r  r—  r  s      r  rl  zIdentifierPreparer.format_alias»  s7   € ð ˆ<ØÐ$Ð$Ð$Ø—:‘:˜eŸj™jÓ)Ð)à—:‘:˜dÓ#Ð#r  c                ój   — |xs |j                   }| j                  |«      r| j                  |«      }|S r  )ra  rr  rÖ  )r  Ú	savepointr  ra  s       r  rö  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&   r&  Ú
sql_namingr  r+   Ú_constraint_name_for_tablerž   r  Útruncate_and_render_index_nameÚ#truncate_and_render_constraint_name)r  rÁ   rê  Únamingr  s        r  r¹  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_lengthrr  Ú _truncate_and_render_maxlen_name©r  r  rê  Úmax_s       r  rí  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_lengthrr  rò  ró  s       r  rî  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   rf  r'  éüÿÿÿ)	r¹  r   rC   r¬  r&   Úmd5_hexr´  Úvalidate_identifierr›  )r  r  rô  rê  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  )r¹  )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.r,  )r   r¹  r\   r  r›  r�  rÀ  rž  )r  rž   rA  r  rH  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.rÅ  rJ  s     r  rN  z IdentifierPreparer.format_schema*  s   € ð �z‰z˜$ÓÐr  c                ó~   — |�+t        |t        j                  «      r|j                  |«      }| j	                  |«      S )úPrepare a quoted column name.)r¹  r   rC   rA  r›  )r  r  rs  s      r  r`  z$IdentifierPreparer.format_label_name/  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)rA  r  r,  )	r  r¹  r   rC   rA  rE  r´  rž   r›  )r  r£   rŸ  r  Ú
table_namerA  rs  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�  rÀ  rž  r´  )r  rž   rA  r£  s       r  rF  z#IdentifierPreparer.format_table_seqk  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`  ra  rí  s     r  r=  z4IdentifierPreparer._r_identifiers.<locals>.<genexpr>~  s    è ø€ ò )
àô �I‰I�a�Lñ)
ùs   ‚!zM(?:(?:%(initial)s((?:%(escaped)s|[^%(final)s])+)%(final)s|([^\.]+))(?=\.|$))+)ÚinitialÚfinalr•  )r¹  rº  rÑ  r`  rb  )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´  rm   r¹  r   rº  rK  r¾  r   rÁ  r(  rÀ  r(  )r1  r   r©  rn   r  r   )rÌ  r   r  r   )rÌ  r   r  r(  r  )r#   r   rß  r   r  r   )ra  r   rß  r   r  r   )T)rO  zschema.SequencerA  r(  r  r   )r  z
Label[Any]r  rK  r  r   )r—  zOptional[AliasedReturnsRows]r  rK  r  r   )rÁ   zUnion[Constraint, Index]rê  r(  r  rK  )r  r   rê  r(  r  r   )r  r   rô  rK  rê  r(  r  r   )r�  rS   r  r   )TN)rž   r[   rA  r(  r  rK  r  r   )FNNFN)r£   zColumnElement[Any]rŸ  r(  r  rK  r	  rK  rA  r(  rs  zOptional[Mapping[str, Any]]r  r   )r	  r   r  zSequence[str]).r  r	  r
  r  ÚRESERVED_WORDSrØ  ÚLEGAL_CHARACTERSrÚ  ÚILLEGAL_INITIAL_CHARACTERSrÙ  r  rC  Ú
attrgetterr�  r¼  rÀ  r¶  r¼  rÑ  rÓ  r  rÖ  rr  rI  rž  r›  r¨  r,  r‡  rl  rö  r&   r  r¹  rí  rî  rò  r‘  r´  rN  r`  r   rF  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òó$
ó
ò;ô
%"ôN2òh"ð =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   ru  r¹  rC  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:  Ú_typingr'   r(   r)   r*   r+   r,   r-   r.   r/   Úvisitorsr0   r2   r3   Úutil.typingr4   r5   r6   r7   Ú
annotationr8   r9   r:   r;   r°  r<   rG  r=   Údmlr>   r?   r@   rA   rB   rC   rD   rE   rF   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_   Útype_apir`   ra   rb   rc   rd   Úengine.cursorre   Úengine.interfacesrf   rg   rh   ri   rj   rk   rl   rm   rn   r   Ú_FromHintsTyper	  rb  ÚIr	  ÚLEGAL_CHARACTERS_PLUS_SPACEry  rŸ   r	  r  r
  r  ÚUNICODErË  rÊ  ro  rp  rú  Úor_rN  Ú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†  r1  r2  r¯   ÚexistsÚdistinct_opÚ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!  r&  r0  rG  rW  rd  rr  rw  r@  rx  ry  rz  r{  Ú
namedtupler}  r¡  ÚEnsureKWArgrú  ÚBinaryElementRoleÚCompilerColumnElementr  r  rì  r  r=  r  r¦  r²  r+  r«  )r  s   0r  ú<module>rL	     s5  ðòõ$ #ã Ý )Û Ý Û Û Û Û 	Ý Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý !Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý å Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý &Ý Ý Ý Ý Ý 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Ó<€Øˆb�jŠjÐAÀ2Ç:Â:ÓN€Ø�"—*’*Ð9¸2¿:º:ÓF€à$Ð à"ØØØØ$Øñ€ð.à‡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¸õ $ô:�Jô :ôzA˜
ô AôH˜Zô ô2! ;ô !ô$�Gô ô ˆgô ñ. FKØóFÑ B€
Ð&¨°lô
?#Ð'�×'Ò'¨°wÀÐ6HÓIô ?#÷DI'ñ I'ôXF�4×#Ò#ô Fô0Ø	×Ò˜CÑ  (×"@Ò"@ôô2#
Ø	×Ò˜CÑ  (×"@Ò"@ô#
ôLAW
�(ô AW
ôHnl
�[ô l
ô^z�(ô zözz(˜,ô z(öz&Ð,ô &öB/˜xô /ö;˜hô ;÷U
ô U
ùòOd <s   Ì	c4