Files
aitsc/.venv/Lib/site-packages/alembic/ddl/__pycache__/postgresql.cpython-312.pyc

279 lines
33 KiB
Plaintext
Raw Normal View History

2025-02-23 09:07:52 +08:00
<EFBFBD>
㺡h3x<00><01><><00>ddlmZddlZddlZddlmZddlmZddlmZddlmZddlm Z ddlm
2025-02-23 09:07:52 +08:00
Z
dd lm Z dd
lm Z dd lm Z dd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddl!m"Z"ddl#m$Z$ddl#m%Z%ddl#m&Z&ddl#m'Z'ddl#m(Z(dd l#m)Z)dd!l#m*Z*dd"l#m+Z+dd#l#m,Z,dd$l-m.Z.dd%l-m/Z/d&d'l0m1Z1d&d(l2m3Z3d&d)l4m5Z5d&d*l4m6Z6d&d+l7m8Z8d&d,l7m9Z9d&d-l1m:Z:d&d.l;m<Z<e rldd/lm=Z=dd0lm>Z>dd1lm?Z?dd2l@mAZAdd3lBmCZCdd4lDmEZEdd5lFmGZGdd6lFmHZHdd7lmIZIdd8lmJZJdd9lmKZKdd:lLmMZMdd;lLmNZNdd<lOmPZPdd=l#mQZQd&d>lRmSZSd&d?lTmUZUd&d@lVmWZWej<>eY<65>ZZGdA<64>dBe/<2F>Z[GdC<64>dDe&<26>Z\e<e,dE<64> dTdF<64><04>Z]e<e\dE<64> dUdG<64><04>Z^e<e'dE<64> dVdH<64><04>Z_e<e+dE<64> dWdI<64><04>Z`e9j<39>dJ<64>e8j<38>dJdK<64>e5j<35>j<>dL<64>GdM<64>dNe5j<35><00><00><00><00>Zde3j<33>j<>ed<65> dXdO<64><04>Zge3j<33>j<>e<18> dYdP<64><04>ZidZdQ<64>Zj d[dR<64>Zk d\dS<64>Zly)]<5D>)<01> annotationsN)<01>Any)<01>cast)<01>Dict)<01>List)<01>Optional)<01>Sequence)<01>Tuple)<01> TYPE_CHECKING)<01>Union)<01>Column)<01>Float)<01>literal_column)<01>Numeric)<01>text)<01>types)<01>BIGINT)<01>ExcludeConstraint)<01>INTEGER)<01> CreateIndex)<01> ColumnClause)<01>
TextClause)<01>FunctionElement)<01>NULLTYPE<50>)<01> alter_column)<01> alter_table)<01> AlterColumn)<01> ColumnComment)<01>format_column_name)<01>format_table_name)<01> format_type)<01>IdentityColumnDefault)<01> RenameTable)<01>ComparisonResult)<01> DefaultImpl<70>)<01>util)<01>render)<01>ops)<01> schemaobj)<01>BatchOperations)<01>
Operations)<01> sqla_compat)<01>compiles)<01>Literal)<01>Index)<01>UniqueConstraint)<01>ARRAY)<01> PGDDLCompiler)<01>HSTORE)<01>JSON)<01>JSONB)<01> ClauseElement)<01> ColumnElement)<01> quoted_name)<01>MetaData)<01>Table)<01>
TypeEngine)<01>_ServerDefault)<01>AutogenContext)<01>_f_name)<01>MigrationContextc<01>J<00><00>eZdZdZdZej ddhfzZdd<05>Zd<06>Zd<07>Z d d<1E>fd<08> Z
d <09>Z d
<EFBFBD>Z e jd <0B>e jd <0C>e jd <0A>e jd<0E>e jd<0F>fZdd<10>Z d d<11>Z d!d<12>Z d"d<13>Z d#d<14>Zd$d<15>Z d% d&<26>fd<16> Z d'd<17>Z d(d<18>Z d)d<19>Z d*d<1A>Z d+d<1B>Z<1B>xZS),<2C>PostgresqlImpl<70>
postgresqlT<EFBFBD>FLOATzDOUBLE PRECISIONc <01> <00>|jjdd<00>xsd}|D]N}||jjvs<01>|jj t |t j<00><00><00>P|jt|fi|<02><01><01>y)N<>postgresql_include<64>)
<EFBFBD>kwargs<67>get<65>table<6C>c<> append_columnr <00>sqltypes<65>NullType<70>_execr)<05>self<6C>index<65>kwrG<00>cols <20>@D:\wxxcx\aitsc\.venv\Lib\site-packages\alembic\ddl\postgresql.py<70> create_indexzPostgresqlImpl.create_indexVsu<00><00>#<23>\<5C>\<5C>-<2D>-<2D>.B<>D<EFBFBD>I<>O<>R<EFBFBD><1A>%<25>C<EFBFBD><12>%<25>+<2B>+<2B>-<2D>-<2D>'<27><15> <0B> <0B>)<29>)<29><1A>3<EFBFBD><08> 1<> 1<>2<><12>&<26>
2025-02-23 09:07:52 +08:00
<0A>
<EFBFBD>
<EFBFBD>;<3B>u<EFBFBD>+<2B><02>+<2B>,<2C>c<01><><00>|jD]9}|j<00><01>|j|jvs<01>)|j|<03><00>;y<00>N)<04> constraints<74>name<6D>named_constraints<74>drop_constraint)rQ<00>
batch_implrK<00>
constraints rU<00>prep_table_for_batchz#PostgresqlImpl.prep_table_for_batchbs<<00><00><1F>+<2B>+<2B>J<EFBFBD><1A><0F><0F>+<2B><1E>O<EFBFBD>O<EFBFBD>z<EFBFBD>'C<>'C<>C<><14>$<24>$<24>Z<EFBFBD>0<> ,rWc<01><><00>|jr||jjury|}||k(}|ryd|||jfvr| S|jj}t |t <00>rHt |jttf<02>stjdd|<07>}d|<07>d<04>}t|<07>}|j}|<08>J<00>|jtj t|<05>|k(<00><00> S)NFz^'|'$<24><00>')<11> primary_keyrK<00>_autoincrement_column<6D>server_default<6C>arg<72>
isinstance<EFBFBD>str<74>typerr<00>re<72>subr<00>
connection<EFBFBD>scalarr.<00>_select) rQ<00>inspector_column<6D>metadata_column<6D>rendered_metadata_default<6C>rendered_inspector_default<6C>conn_col_default<6C>defaults_equal<61>metadata_default<6C>conns rU<00>compare_server_defaultz%PostgresqlImpl.compare_server_defaultjs<00><00> <1C> '<27> '<27><1F>?<3F>#8<>#8<>#N<>#N<>N<><18>5<><18>)<29>-F<>F<><0E> <19><18> <0F> <1C> %<25> <1B> *<2A> *<2A>
<EFBFBD>
<EFBFBD>
&<26>%<25> %<25>*<2A>9<>9<>=<3D>=<3D><18> <15>&<26><03> ,<2C><1D>.<2E>3<>3<>g<EFBFBD>u<EFBFBD>5E<35>F<>#%<25>6<EFBFBD>6<EFBFBD>(<28>B<EFBFBD>8H<38>#I<> <20>%&<26>'7<>&8<><01>#:<3A> <20>-<2D>.><3E>?<3F> <1C><14><EFBFBD><EFBFBD><04><13><1F><1F><1F><17>;<3B>;<3B> <17> <1F> <1F><1E>/<2F>0<>4D<34>D<> <0E>
<EFBFBD>
<EFBFBD>
rWc <01><><00><01>| jdd<00>}|<0E>|<06>tjd<02><00>|<06>"|jt |||||| |
| <0B><03><00>t <00>|<00>||f|||||| |
| | d<04> | <0A><01>y)N<>postgresql_usingz6postgresql_using must be used with the type_ parameter)<05>schema<6D>using<6E> existing_type<70>existing_server_default<6C>existing_nullable) <09>nullablerfr[r{<00> autoincrementr}r~r<00>existing_autoincrement)<07>popr(<00> CommandErrorrP<00>PostgresqlColumnType<70>superr)rQ<00>
table_name<EFBFBD> column_namer<65>rfr[<00>type_r{r<>r}r~rr<>rSr|<00> __class__s <20>rUrzPostgresqlImpl.alter_column<6D>s<><00><><00> <13><06><06>)<29>4<EFBFBD>0<><05> <10> <1C><15><1D><16>#<23>#<23>H<><0E> <0E> <11> <1C> <10>J<EFBFBD>J<EFBFBD>$<24><1E><1F><19>!<21><1F>"/<2F>,C<>&7<> <12> <0E> <0E><07><1C> <16> <17>
<EFBFBD><1E>)<29><15><19>'<27>'<27>$;<3B>/<2F>#9<>
<EFBFBD><11>
rWc<01>|<00>|jd<01>r<>t|dttf<02>r<>t j
d|d<00>}|rut j|td<04>|jd<05><00><06>j<00>}|r4|\}}||dk(r&tjd||j|<07>|d=yyyyyy) N<>defaultrjznextval\('(.+?)'::regclass\)a9select c.relname, a.attname from pg_class as c join pg_depend d on d.objid=c.oid and d.classid='pg_class'::regclass and d.refclassid='pg_class'::regclass join pg_class t on t.oid=d.refobjid join pg_attribute a on a.attrelid=t.oid and a.attnum=d.refobjsubid where c.relkind='S' and c.oid=cast(:seqname as regclass)r)<01>seqnamer[z^Detected sequence named '%s' as owned by integer column '%s(%s)', assuming SERIAL and omitting)rJrhrrrk<00>matchr.<00>_exec_on_inspectorr<00>group<75>first<73>log<6F>infor[)rQ<00> inspectorrK<00> column_info<66> seq_matchr<68>r<><00>colnames rU<00>autogen_column_reflectz%PostgresqlImpl.autogen_column_reflect<63>s<><00><00> <16>?<3F>?<3F>9<EFBFBD> %<25>*<2A> <17><06> <1F>'<27>6<EFBFBD>!2<>+
<EFBFBD><1B><08><08>/<2F><1B>Y<EFBFBD>1G<31><0E>I<EFBFBD><19>"<22>5<>5<><1D><18> ;<3B> <16>&<26>O<EFBFBD>O<EFBFBD>A<EFBFBD>.<2E><12><18>%<25>'<27><15> <18>'+<2B>$<24>G<EFBFBD>W<EFBFBD><1E>+<2B>f<EFBFBD>"5<>5<><1B><08><08>;<3B>$<24>!<21>J<EFBFBD>J<EFBFBD>#<23> <1A>(<28> <09>2<>6<><18>#<19> +
<EFBFBD> %rWc<01><><00>|D<00>chc]}|jjd<01>r|<05><02>!}}|D]}|j|<07><00>tjs|j ||<02>yycc}w)N<>duplicates_constraint)r<>rJ<00>remover.<00>sqla_2<5F>_skip_functional_indexes)rQ<00>conn_unique_constraints<74> conn_indexes<65>metadata_unique_constraints<74>metadata_indexesrR<00>doubled_constraints<74>ixs rU<00>correct_for_autogen_constraintsz.PostgresqlImpl.correct_for_autogen_constraints<74>su<00><00>&<26>
<EFBFBD>%<25><05><14>z<EFBFBD>z<EFBFBD>~<7E>~<7E>5<>6<> <12>%<25> <1C>
<EFBFBD> &<26>B<EFBFBD> <18> <1F> <1F><02> #<23>&<26><1B>!<21>!<21> <10> )<29> )<29>*:<3A>L<EFBFBD> I<>"<22><>
s<00>$A'z( asc nulls last)$z(?<! desc)( nulls last)$z( asc)$z( asc) nulls first$z desc( nulls first)$c<01><00>|j<00>jdd<02>jdd<02>}|j<00>7|j|jjj<00><00>d<04>d<02>}d|vrt j
dd|<02>}|r(|ddk(r |d d
k(r|d d }|r|ddk(r |d d
k(r<01>|j D]6}|j|<02>x}s<01>|jd <0B>\}}|d|||dz}n|r(|ddk(r |d d
k(r|d d }|r|ddk(r |d d
k(r<01>t jd <0C>}|j|<02>r)|j d|<02>}t j
d d|<02>}|jdd<02>}|S)N<>"rbrc<00>.z::z (::[\w ]+\w)r<00>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)rz cast\s*\(z as\s+[^)]+\)<29> ) <0B>lower<65>replacerKr[rkrl<00>_default_modifiers_re<72>search<63>span<61>compiler<65>)rQrR<00>expr<70>rsr<73><00>start<72>end<6E>cast_res rU<00>_cleanup_index_exprz"PostgresqlImpl._cleanup_index_exprs<><00><00><13>z<EFBFBD>z<EFBFBD>|<7C>#<23>#<23>C<EFBFBD><12>,<2C>4<>4<>S<EFBFBD>"<22>=<3D><04> <10>;<3B>;<3B> "<22><17><<3C><<3C>5<EFBFBD>;<3B>;<3B>#3<>#3<>#9<>#9<>#;<3B>"<<3C>A<EFBFBD> ><3E><02>C<>D<EFBFBD> <0F>4<EFBFBD><<3C><15>6<EFBFBD>6<EFBFBD>/<2F>2<EFBFBD>t<EFBFBD>4<>D<EFBFBD><12>t<EFBFBD>A<EFBFBD>w<EFBFBD>#<23>~<7E>$<24>r<EFBFBD>(<28>c<EFBFBD>/<2F><17><01>"<22>:<3A>D<EFBFBD><13>t<EFBFBD>A<EFBFBD>w<EFBFBD>#<23>~<7E>$<24>r<EFBFBD>(<28>c<EFBFBD>/<2F>
<17>,<2C>,<2C>B<EFBFBD><1A> <09> <09>$<24><0F>'<27>u<EFBFBD>'<27>"<22>Z<EFBFBD>Z<EFBFBD><01>]<5D>
<EFBFBD><05>s<EFBFBD><1B>F<EFBFBD>U<EFBFBD>|<7C>d<EFBFBD>3<EFBFBD>4<EFBFBD>j<EFBFBD>0<><04><15> -<2D> <13>t<EFBFBD>A<EFBFBD>w<EFBFBD>#<23>~<7E>$<24>r<EFBFBD>(<28>c<EFBFBD>/<2F><17><01>"<22>:<3A>D<EFBFBD><13>t<EFBFBD>A<EFBFBD>w<EFBFBD>#<23>~<7E>$<24>r<EFBFBD>(<28>c<EFBFBD>/<2F><15>*<2A>*<2A>\<5C>*<2A><07> <12>=<3D>=<3D><14> <1E><1A>;<3B>;<3B>r<EFBFBD>4<EFBFBD>(<28>D<EFBFBD><15>6<EFBFBD>6<EFBFBD>/<2F>2<EFBFBD>t<EFBFBD>4<>D<EFBFBD><13>|<7C>|<7C>C<EFBFBD><12>$<24><04><13> rWc<01><<00>|jjd<01>ryy)N<>postgresql_nulls_not_distinct)<01>nulls_not_distinctrH)<02>dialect_kwargsrJ)rQ<00>items rU<00>_dialect_optionszPostgresqlImpl._dialect_options:s<00><00>
<10> <1E> <1E> "<22> "<22>#B<> C<>*<2A>rWc
<01><00>g}|j||<02>}|r|j|<04>|j}|j}t|<05>t|<06>k7r)|jdt|<06><00>dt|<05><00><00><04>|rt j
|<03>Sg}t t||<06>d<03>D]<5D>\}\} }
|j| <09>} |j|| <0B>} |j|
<EFBFBD>} |j|| <0A>}| |k(r<01>U| j<00>jd<04>rJd| vsd| vrB|jd|<08>d| <0B>d<08><05>tjd |<08>d| <0B>d
|j<00>d <0B><07><00><>|jd|<08>d| <0A>d| <0B><02><06><00><>|j|<01>}|j|<02>}||k7r|j!d |<10>d|<0F><00><04>|rt j
|<03>S|rt j"|<07>St j$<00>S) Nzexpression number <20> to r<00>_opsr<73>r<>z expression #z' detected as including operator clause.z Expression #z
in index a  detected to include an operator clause. Expression compare cannot proceed. Please move the operator clause to the ``postgresql_ops`` dict to enable proper compare of the index expressions: https://docs.sqlalchemy.org/en/latest/dialects/postgresql.html#operator-classeszoptions )<13>_compare_index_unique<75>append<6E> expressions<6E>lenr%<00> Different<6E> enumerate<74>zip<69>_compile_elementr<74><00>strip<69>endswithr(<00>warnr[r<><00>extend<6E>Skip<69>Equal)rQ<00>metadata_index<65>reflected_index<65>msg<73>
unique_msg<EFBFBD>m_exprs<72>r_exprs<72>skip<69>pos<6F>m_e<5F>r_e<5F> m_compile<6C>m_text<78> r_compile<6C>r_text<78> m_options<6E> r_optionss rU<00>compare_indexeszPostgresqlImpl.compare_indexesCs<00><00>
<11><03><19>/<2F>/<2F> <1A>O<EFBFBD>
<EFBFBD>
<EFBFBD> <16> <0F>J<EFBFBD>J<EFBFBD>z<EFBFBD> "<22> <20>,<2C>,<2C><07>!<21>-<2D>-<2D><07> <0E>w<EFBFBD><<3C>3<EFBFBD>w<EFBFBD><<3C> '<27> <0F>J<EFBFBD>J<EFBFBD>+<2B>C<EFBFBD><07>L<EFBFBD>><3E><14>c<EFBFBD>'<27>l<EFBFBD>^<5E>L<> M<> <0E>#<23>-<2D>-<2D>c<EFBFBD>2<> 2<><11><04>(<28><13>W<EFBFBD>g<EFBFBD>)><3E><01>B<>O<EFBFBD>C<EFBFBD><1A>#<23>s<EFBFBD><1C>-<2D>-<2D>c<EFBFBD>2<>I<EFBFBD><19>-<2D>-<2D>n<EFBFBD>i<EFBFBD>H<>F<EFBFBD><1C>-<2D>-<2D>c<EFBFBD>2<>I<EFBFBD><19>-<2D>-<2D>n<EFBFBD>i<EFBFBD>H<>F<EFBFBD><15><16><1F><18><1A><1F><1F>"<22>+<2B>+<2B>F<EFBFBD>3<><13>y<EFBFBD> <20>C<EFBFBD>9<EFBFBD>$4<><14> <0B> <0B>"<22>3<EFBFBD>%<25>q<EFBFBD><19> <0A>64<36>4<><12><15> <09> <09>"<22>3<EFBFBD>%<25>q<EFBFBD><19> <0A>Z<EFBFBD>&<26>+<2B>+<2B>.<2E>/f<01>f<01><12><14>
<EFBFBD>
<EFBFBD>\<5C>#<23><15>a<EFBFBD> <09>}<7D>D<EFBFBD><19> <0A>N<>O<>5 C<01>8<19>)<29>)<29>.<2E>9<> <09><18>)<29>)<29>/<2F>:<3A> <09> <14> <09> !<21> <0F>J<EFBFBD>J<EFBFBD><18>)<29><1B>D<EFBFBD><19> <0B><<3C> =<3D> <0E>#<23>-<2D>-<2D>c<EFBFBD>2<> 2<> <11>#<23>(<28>(<28><14>.<2E> .<2E>#<23>)<29>)<29>+<2B> +rWc<01><><00>|j|<01>}|j|<02>}|j}|j}||k7rtjd|<06>d|<05><00><04>S|j |j <00>}|j |j <00>}||k7rtjd|<08>d|<07><00><04>Stj<00>S)Nz expression r<>)<08>_create_metadata_constraint_sig<69> _create_reflected_constraint_sig<69>unnamedr%r<>r<><00>constr<74>) rQ<00>metadata_constraint<6E>reflected_constraint<6E> metadata_tup<75> reflected_tup<75>meta_sig<69>conn_sig<69> metadata_do<64>conn_dos rU<00>compare_unique_constraintz(PostgresqlImpl.compare_unique_constraints<><00><00>
<1C>;<3B>;<3B> <1F>
<EFBFBD> <0C><1D>=<3D>=<3D> <20>
<EFBFBD> <0A> <20>'<27>'<27><08> <20>(<28>(<28><08> <13>x<EFBFBD> <1F>#<23>-<2D>-<2D><1D>h<EFBFBD>Z<EFBFBD>t<EFBFBD>H<EFBFBD>:<3A>6<><0E> <0E><1B>+<2B>+<2B>L<EFBFBD>,><3E>,><3E>?<3F> <0B><16>'<27>'<27> <0A>(;<3B>(;<3B><<3C><07> <16>'<27> !<21>#<23>-<2D>-<2D><1D>g<EFBFBD>Y<EFBFBD>d<EFBFBD>;<3B>-<2D>8<><0E> <0E> <20>%<25>%<25>'<27>'rWc<01><><00>|jdi<00>j<00>}|jd<02>s|jdd<00>|S)N<>dialect_optionsrG)rJ<00>copyr<79>)rQ<00>reflected_options<6E>kind<6E>optionss rU<00> adjust_reflected_dialect_optionsz/PostgresqlImpl.adjust_reflected_dialect_options<6E>sA<00><00>$<24>'<27>'<27>(9<>2<EFBFBD>><3E>C<>C<>E<><07><16>{<7B>{<7B>/<2F>0<> <13>K<EFBFBD>K<EFBFBD>,<2C>d<EFBFBD> 3<><16>rWc<01>z<00>t|t<00>r|S|j|jddd<03><02><04>jS)NTF)<02> literal_binds<64> include_table)<02>dialect<63>compile_kwargs)rhrir<>r<><00>string)rQ<00>elements rUr<>zPostgresqlImpl._compile_element<6E>s=<00><00> <15>g<EFBFBD>s<EFBFBD> #<23><1A>N<EFBFBD><16><EFBFBD><EFBFBD><18>L<EFBFBD>L<EFBFBD>-1<>E<EFBFBD>J<><1F>
<EFBFBD> <11>&<26> rWc <01>n<00><01>|r t|t<00>s|j<00>}t<00>|<00>|f||d<01>|<04><01>S)zdRender a SQL expression that is typically a server default,
index expression, etc.
)<02>is_server_default<6C>is_index)rhr<00>
self_groupr<EFBFBD><00>render_ddl_sql_expr)rQr<>r<>r<>rSr<>s <20>rUrz"PostgresqlImpl.render_ddl_sql_expr<70>sD<00><><00> <14>J<EFBFBD>t<EFBFBD>\<5C>:<3A><17>?<3F>?<3F>$<24>D<EFBFBD><14>w<EFBFBD>*<2A> <10>
<EFBFBD>$5<><08>
<EFBFBD>LN<EFBFBD>
<EFBFBD>
rWc<01><><00>t|<01>j}|jd<01>syt|d|jz<00>r"t |d|jz<00>}|||<02>Sy)Nzsqlalchemy.dialects.postgresqlFz_render_%s_type)rj<00>
__module__<EFBFBD>
startswith<EFBFBD>hasattr<74>__visit_name__<5F>getattr)rQr<><00>autogen_context<78>mod<6F>meths rU<00> render_typezPostgresqlImpl.render_type<70>sa<00><00><13>5<EFBFBD>k<EFBFBD>$<24>$<24><03><12>~<7E>~<7E>><3E>?<3F><18> <12>4<EFBFBD>*<2A>U<EFBFBD>-A<>-A<>A<> B<><1A>4<EFBFBD>!2<>U<EFBFBD>5I<35>5I<35>!I<>J<>D<EFBFBD><17><05><EFBFBD>/<2F> /<2F>rWc <01>N<00>tttj||dd<02><00>S)N<> text_typez(.+?\(.*text_type=)<29>rrir)<00>_render_type_w_subtype<70>rQr<>rs rU<00>_render_HSTORE_typez"PostgresqlImpl._render_HSTORE_type<70>s,<00><00><14> <0F> <12> )<29> )<29><15><EFBFBD> <0B>5K<35> <0E>
<EFBFBD>
rWc <01>N<00>tttj||dd<02><00>S)N<> item_typez(.+?\()r rs rU<00>_render_ARRAY_typez!PostgresqlImpl._render_ARRAY_type<70>s+<00><00><14> <0F> <12> )<29> )<29><15><EFBFBD> <0B>Z<EFBFBD> <0E>
<EFBFBD>
rWc <01>N<00>tttj||dd<02><00>S<00>N<> astext_typez(.+?\(.*astext_type=)r rs rU<00>_render_JSON_typez PostgresqlImpl._render_JSON_type<70><00>,<00><00><14> <0F> <12> )<29> )<29><15><EFBFBD> <0A>7O<37> <0E>
<EFBFBD>
rWc <01>N<00>tttj||dd<02><00>Srr rs rU<00>_render_JSONB_typez!PostgresqlImpl._render_JSONB_type<70>rrW)rRr1rSr<00>return<72>None)
NFNNNNNNNN)r<>rir<>rir<><00>Optional[bool]rfz%Union[_ServerDefault, Literal[False]]r[<00> Optional[str]r<><00>Optional[TypeEngine]r{rr<>rr}rr~zOptional[_ServerDefault]rrr<>rrSrrr)rRr1r<>rirri)r<>zUnion[Index, UniqueConstraint]rzTuple[Any, ...])r<>r1r<>r1rr%)r<>r2r<>r2rr%)r<><00>Dict[str, Any]r<>rirr )r<>zUnion[ClauseElement, str]rri)FF)
r<EFBFBD>r8r<><00>boolr<6C>r!rSrrri)r<>r=rr?rzUnion[str, Literal[False]])r<>r5rr?rri)r<>r3rr?rri)r<>r6rr?rri)r<>r7rr?rri)<1D>__name__r<00> __qualname__<5F> __dialect__<5F>transactional_ddlr&<00> type_synonymsrVr`rxrr<>r<>rkr<>r<>r<>r<>r<>r<>r<>r<>rr
rrrr<00> __classcell__<5F>r<>s@rUrCrCOs<><00><><00><1E>K<EFBFBD><1C><15><1F>-<2D>-<2D> <10>$<24>%<25>1<06><06>M<EFBFBD>
-<2D>1<>+
<EFBFBD>b$(<28>@E<>"<22>&*<2A> $<24>(,<2C>.2<EFBFBD><@<40>,0<>15<31>2
<EFBFBD><17>2
<EFBFBD><19>2
<EFBFBD>!<21> 2
<EFBFBD>
><3E> 2
<EFBFBD> <1C> 2
<EFBFBD>$<24>2
<EFBFBD><1E>2
<EFBFBD>&<26>2
<EFBFBD>,<2C>2
<EFBFBD>":<3A>2
<EFBFBD>*<2A>2
<EFBFBD>!/<2F>2
<EFBFBD><12>2
<EFBFBD>
<0E>2
<EFBFBD>h%3<>NJ<01>> <13><02>
<EFBFBD>
<EFBFBD>'<27>(<28><12><02>
<EFBFBD>
<EFBFBD>-<2D>.<2E><12><02>
<EFBFBD>
<EFBFBD>9<EFBFBD><1D><12><02>
<EFBFBD>
<EFBFBD>(<28>)<29><12><02>
<EFBFBD>
<EFBFBD>)<29>*<2A> <06><19> <14>D<12>2<><12> <18><12>:,<2C><1D>:,<2C><1F>:,<2C>
<1A> :,<2C>x(<28>-<2D>(<28>/<2F>(<28>
<1A> (<28>8<17>!/<2F><17>7:<3A><17> <17><17><11>#(<28><1E> 
<EFBFBD><1B>
<EFBFBD> <20>
<EFBFBD><17> 
<EFBFBD>
<12> 
<EFBFBD>
<0A> 
<EFBFBD>. <15><1F> <15>2@<40> <15> #<23> <15>
<EFBFBD><1B>
<EFBFBD>.<<3C>
<EFBFBD> <0C>
<EFBFBD>
<EFBFBD><1A>
<EFBFBD>-;<3B>
<EFBFBD> <0C>
<EFBFBD>
<EFBFBD><19>
<EFBFBD>,:<3A>
<EFBFBD> <0C>
<EFBFBD>
<EFBFBD><1A>
<EFBFBD>-;<3B>
<EFBFBD> <0C>
rWrCc<01>0<00><00>eZdZ d<02>fd<01> Z<03>xZS)r<>c <01><><00><01>|jdd<00>}t<00>|<00>||fi|<04><01>tj|<03>|_||_y)Nr|)r<>r<><00>__init__rN<00> to_instancer<65>r|)rQr[r<>r<>rSr|r<>s <20>rUr+zPostgresqlColumnType.__init__<5F>sB<00><><00><13><06><06>w<EFBFBD><04>%<25><05> <0A><07><18><14>{<7B>1<>b<EFBFBD>1<><1D>)<29>)<29>%<25>0<><04>
<EFBFBD><1A><04>
rW)r[rir<>rir<>r=rr)r"rr#r+r'r(s@rUr<>r<><00>s-<00><><00><1B><17><1B>&)<29><1B>2<<3C><1B> <0A><1B>rWr<>rDc <01>x<00>t||j|j<00><00>dt||jd<00><00><01>S)Nz RENAME TO )rr<>r{r!<00>new_table_name<6D>r<><00>compilerrSs rU<00>visit_rename_tabler1s6<00><00>
<14>H<EFBFBD>g<EFBFBD>0<>0<>'<27>.<2E>.<2E>A<><19>(<28>G<EFBFBD>$:<3A>$:<3A>D<EFBFBD>A<> <06>rWc <01><><00>t||j|j<00><00>dt||j<00><00>ddt ||j <00>z<00>d|jrd|jz<00><01>Sd<04><01>S)Nr<4E>zTYPE %szUSING %srb)rr<>r{rr<>r"r<>r|r/s rU<00>visit_column_typer3 sn<00><00>
<14>H<EFBFBD>g<EFBFBD>0<>0<>'<27>.<2E>.<2E>A<><14>X<EFBFBD>w<EFBFBD>2<>2<>3<><11>K<EFBFBD><08>'<27>-<2D>-<2D>8<>8<>&-<2D>m<EFBFBD>m<EFBFBD>
<EFBFBD>W<EFBFBD>]<5D>]<5D>"<22>;<3B>  <06><06>:<<3C>;<3B>  <06>rWc <01> <00>d}|j<00>8|jj|jtj<00><00>nd}|j t ||j|j<00>t||j<00>|<04><03>S)Nz9COMMENT ON COLUMN {table_name}.{column_name} IS {comment}<7D>NULL)r<>r<><00>comment) r6<00> sql_compiler<65>render_literal_valuerN<00>String<6E>formatr!r<>r{r r<>)r<>r0rS<00>ddlr6s rU<00>visit_column_commentr<s<><00><00> F<01>C<EFBFBD>
<13>?<3F>?<3F> &<26> <11><1D><1D>2<>2<> <13>O<EFBFBD>O<EFBFBD>X<EFBFBD>_<EFBFBD>_<EFBFBD>.<2E>
<EFBFBD><14>  <0C> <0F>:<3A>:<3A>$<24> <14>g<EFBFBD>(<28>(<28>'<27>.<2E>.<2E>
<EFBFBD>'<27>x<EFBFBD><17>1D<31>1D<31>E<><17> <16> <06>rWc <01>H<00>t||j|j<00><00>dt||j<00><00>d<01>}|j
<00>|dz }|S|j <00>%|dz }||j|j
<00>z }|S|jj|j
|j <00>\}}}|j
}t|<04>D]T}|dk(r|d|jrdndzz }<03>|d|jtjd i|t||<07>i<01><01><01>zz }<03>V|S)
Nr<EFBFBD>z DROP IDENTITYzADD <20>alwayszSET GENERATED %s <20>ALWAYSz
BY DEFAULTzSET %s rH)rr<>r{rr<>r<>r~<00>visit_identity_column<6D>impl<70>_compare_identity_default<6C>sortedr><00>get_identity_optionsr.<00>Identityr)r<>r0rSr<00>diff<66>_<>identity<74>attrs rUr@r@/s,<00><00>
<14>H<EFBFBD>g<EFBFBD>0<>0<>'<27>.<2E>.<2E>A<><14>X<EFBFBD>w<EFBFBD>2<>2<>3<> <06>D<EFBFBD><0F><EFBFBD><EFBFBD><1E> <0C><0F><1F><04><13> <0B> <10> (<28> (<28> 0<> <0C><06><0E><04> <0C><08>.<2E>.<2E>w<EFBFBD><EFBFBD><EFBFBD>?<3F>?<3F><04><13> <0B><1D>\<5C>\<5C>;<3B>;<3B> <13>O<EFBFBD>O<EFBFBD>W<EFBFBD><<3C><<3C>
<EFBFBD>
<EFBFBD><04>a<EFBFBD><11><1B>?<3F>?<3F><08><1A>4<EFBFBD>L<EFBFBD>D<EFBFBD><13>x<EFBFBD><1F><14>+<2B> (<28><0F><0F>H<EFBFBD>\<5C><12><12><04><15> <09>H<EFBFBD>$A<>$A<><1F>(<28>(<28>K<>D<EFBFBD>'<27>(<28>D<EFBFBD>2I<32>+J<>K<>%<12><12><12><04> !<21><14> rW<00>create_exclude_constraint<6E>batch_create_exclude_constraint<6E>exclude_constraintc<01><><00>eZdZdZdZ d d
d<04>Ze d d<05><04>Z d d d<06>Ze dd<07><04>Z e dd<08><04>Z
y)<10>CreateExcludeConstraintOpz0Represent a create exclude constraint operation.<2E>excludeNc <01>f<00>||_||_||_||_||_||_||_yrY)<07>constraint_namer<65><00>elements<74>wherer{<00>_orig_constraintrS)rQrQr<>rRrSr{rTrSs rUr+z"CreateExcludeConstraintOp.__init__\s7<00><00> /<2F><04><1C>$<24><04><0F> <20><04> <0A><1A><04>
<EFBFBD><1C><04> <0B> 0<><04><1D><14><04>rWc <01>@<00>tj|<01>}||j|j|jD<00><03><04>cgc]
\}}}||f<02><02> c}}}t d|j
<00>|j ||j|j|j<00><02> Scc}}}w)NzColumnElement[bool] | None)rSr{rT<00>
deferrable<EFBFBD> initiallyr|)
r.<00>_table_for_constraintr[<00> _render_exprsrrSr{rVrWr|)<06>clsr_<00>constraint_tabler<65>r[<00>ops rU<00>from_constraintz)CreateExcludeConstraintOp.from_constraintqs<><00><00>'<27><<3C><<3C>Z<EFBFBD>H<><18><12> <16>O<EFBFBD>O<EFBFBD> <1C> !<21> !<21>1;<3B>1I<31>1I<31> <0E>1I<31>~<7E>t<EFBFBD>T<EFBFBD>2<EFBFBD><14>r<EFBFBD>
<EFBFBD>1I<EFBFBD> <0E><17>3<>Z<EFBFBD>5E<35>5E<35>F<>#<23>*<2A>*<2A>'<27>!<21>,<2C>,<2C> <20>*<2A>*<2A><1C>"<22>"<22> 
<EFBFBD>
<EFBFBD><EFBFBD> s<00>Bc<01><><00>|j<00> |jStj|<01>}|j|j|j
<00><01>}t |j|j|jd<02>|j<00><01>}|jD]%\}}}|jt|t<00><00><00>'|j|<04>|S)N)r{)r[rS)rTr+<00> SchemaObjectsrKr<>r{rrRrQrSrSrYrMr r<00>append_constraint)rQ<00>migration_context<78>
schema_obj<EFBFBD>t<>exclr<6C>r[<00>opers rU<00> to_constraintz'CreateExcludeConstraintOp.to_constraint<6E>s<><00><00> <10> <20> <20> ,<2C><17>(<28>(<28> (<28><1E>,<2C>,<2C>-><3E>?<3F>
<EFBFBD> <16> <1C> <1C>T<EFBFBD>_<EFBFBD>_<EFBFBD>T<EFBFBD>[<5B>[<5B> <1C> A<><01> <20> <11>]<5D>]<5D><15>%<25>%<25><16>*<2A>*<2A>
<EFBFBD><13>g<EFBFBD>g<EFBFBD> 
<EFBFBD><04><12> <1F> <1F> 
<EFBFBD> <10> <10> <10> <0A>O<EFBFBD>O<EFBFBD>F<EFBFBD>4<EFBFBD><18>2<> 3<> <20> <09><1B><1B>D<EFBFBD>!<21><13> rWc<01>:<00>||||fi|<05><01>}|j|<06>S)a<>Issue an alter to create an EXCLUDE constraint using the
current migration context.
.. note:: This method is Postgresql specific, and additionally
requires at least SQLAlchemy 1.0.
e.g.::
from alembic import op
op.create_exclude_constraint(
"user_excl",
"user",
("period", "&&"),
("group", "="),
where=("group != 'some group'"),
)
Note that the expressions work the same way as that of
the ``ExcludeConstraint`` object itself; if plain strings are
passed, quoting rules must be applied manually.
:param name: Name of the constraint.
:param table_name: String name of the source table.
:param elements: exclude conditions.
:param where: SQL expression or SQL string with optional WHERE
clause.
:param deferrable: optional bool. If set, emit DEFERRABLE or
NOT DEFERRABLE when issuing DDL for this constraint.
:param initially: optional string. If set, emit INITIALLY <value>
when issuing DDL for this constraint.
:param schema: Optional schema name to operate within.
)<01>invoke)rZ<00>
operationsrQr<>rRrSr\s rUrJz3CreateExcludeConstraintOp.create_exclude_constraint<6E>s)<00><00>V<11><1F>*<2A>h<EFBFBD> =<3D>"<22> =<3D><02><19> <20> <20><12>$<24>$rWc<01><><00>|jj|d<|||jj|fi|<04><01>}|j|<05>S)a3Issue a "create exclude constraint" instruction using the
current batch migration context.
.. note:: This method is Postgresql specific, and additionally
requires at least SQLAlchemy 1.0.
.. seealso::
:meth:`.Operations.create_exclude_constraint`
r{)rAr{r<>rh)rZrirQrRrSr\s rUrKz9CreateExcludeConstraintOp.batch_create_exclude_constraint<6E>sE<00><00>&"<22><EFBFBD><EFBFBD>-<2D>-<2D><02>8<EFBFBD> <0C> <10><1F>*<2A>/<2F>/<2F>"<<3C>"<<3C>h<EFBFBD> M<>"<22> M<><02><19> <20> <20><12>$<24>$rW)NNN)rQzsqla_compat._ConstraintNamer<65>zUnion[str, quoted_name]rRzIUnion[Sequence[Tuple[str, str]], Sequence[Tuple[ColumnClause[Any], str]]]rSz)Optional[Union[ColumnElement[bool], str]]r{rrTzOptional[ExcludeConstraint]rr)r_rrrNrY)razOptional[MigrationContext]rr) rir-rQrir<>rirRrrSrr<00>Optional[Table])
rir,rQrirRrrSrrrk) r"rr#<00>__doc__<5F>constraint_typer+<00> classmethodr]rfrJrKrHrWrUrNrNRs3<00><00> ;<3B><1F>O<EFBFBD><@<01> $<24>8<<3C><15>4<><15>,<2C><15>
<EFBFBD> <15>9<><15><1E><15>6<><15>
<0E><15>*<11>
<EFBFBD>*<2A>
<EFBFBD> "<22>
<EFBFBD><11>
<EFBFBD>&?C<01><14>!;<3B><14> <1A><14>,<11>+%<25><1E>+%<25><1D>+%<25><18> +%<25>
<17> +%<25> <12> +%<25>
<19>+%<25><11>+%<25>Z<11>%<25>#<23>%<25><1D>%<25><17> %<25>
<12> %<25>
<19> %<25><11>%rWrNc<01>:<00>t|j<00>|d<01><02>S)NT)<01>alter)<02>_exclude_constraintrf)rr\s rU<00>_add_exclude_constraintrr<00>s<00><00> <1F>r<EFBFBD>/<2F>/<2F>1<>?<3F>$<24> O<>OrWc<01>V<00>tjd||<01>}|dur|St||d<02>S)NrOF)r)<00>_user_defined_renderrq)r_r<00>namespace_metadata<74>rendereds rU<00>!_render_inline_exclude_constraintrw<00>s9<00><00> <16>*<2A>*<2A><11>:<3A><EFBFBD><06>H<EFBFBD><10>u<EFBFBD><1C><17><0F> <1E>z<EFBFBD>?<3F>E<EFBFBD> B<>BrWc<01>B<00>|j}|<01>|jd<01>y)Nz*from sqlalchemy.dialects import postgresqlz postgresql.)<02>imports<74>add)rrys rU<00>_postgresql_autogenerate_prefixr{<00>s#<00><00><1D>%<25>%<25>G<EFBFBD><0E><1A><0F> <0B> <0B>@<40>A<> rWc<01><00><00><01><06>g<00><06>j}<03>jr&<26>jdt<00>j<00>f<02><00>jr&<26>jdt<00>j<00>f<02><00>j
r&<26>jdt<00>j
<00>f<02>|sR|rP<72>j jr:<3A>jdtj<00>j j<00>f<02>|s=<3D>jr1<72>jdtj<00><01>j<00>f<02><00><01><00>fd<06>}|r<>ttj<00><01>j<00><00>g}|s6|ttj<00>j j<00><00>gz }|j|<04><00>dtj<00><01>dj|<05>d <09>zS|<04>}d
t!<00><01>dj|<05>d <09>zS) NrVrWr|r{r[c
<01>T<00><03><00>jD<00><00><01>cgc]\}}}dt|<00><06><00>d|<02>d<03><05><02>}}}}<02>j<00>2|jdt j
<00>j<00><06>z<00>|j <00>D<00><04>cgc] \}}|<04>d|<05><02><03><02>c}}<04>|Scc}}}wcc}}w)Nr<4E><00>, r<>zwhere=%s<>=)rY<00>_render_potential_columnrSr<>r)<00>_render_potential_exprr<72>) <09>sqltextr[<00>opstring<6E>args<67>k<>vrr_<00>optss <20><><EFBFBD>rU<00>do_expr_where_optsz/_exclude_constraint.<locals>.do_expr_where_optss<><00><><00>,6<>+C<>+C<>

<EFBFBD>,D<01>'<27><07><14>x<EFBFBD> )<29><1B>#<23><12><19>  <0E>,D<01> <0A>

<EFBFBD> <16> <1B> <1B> '<27> <10>K<EFBFBD>K<EFBFBD><1A><18>/<2F>/<2F><1E>$<24>$<24>o<EFBFBD><12><12> <0E> <0A> <0B> <0B>$<24>7<>$<24>$<24>!<21>Q<EFBFBD><01>1<EFBFBD>%<25>$<24>7<>8<><13> <0B><>'

<EFBFBD><EFBFBD>$8s <00>B<08>B$
z-%(prefix)screate_exclude_constraint(%(args)s)r~)<02>prefixr<78>z%%(prefix)sExcludeConstraint(%(args)s))<11>
_has_batchrVr<>rirWr|rKr{r)<00>_identr[<00>_render_gen_name<6D>reprr<72><00>_alembic_autogenerate_prefix<69>joinr{)r_rrp<00> has_batchr<68>r<>r<>s`` @rUrqrq<00>s<><00><><00>
FH<01>D<EFBFBD><1F>*<2A>*<2A>I<EFBFBD><11><1C><1C> <0C> <0B> <0B>\<5C>3<EFBFBD>z<EFBFBD>'<<3C>'<<3C>#=<3D>><3E>?<3F><11><1B><1B> <0C> <0B> <0B>[<5B>#<23>j<EFBFBD>&:<3A>&:<3A>";<3B><<3C>=<3D><11><17><17> <0C> <0B> <0B>W<EFBFBD>c<EFBFBD>*<2A>"2<>"2<>3<>4<>5<> <14><15>:<3A>#3<>#3<>#:<3A>#:<3A> <0C> <0B> <0B>X<EFBFBD>v<EFBFBD>}<7D>}<7D>Z<EFBFBD>-=<3D>-=<3D>-D<>-D<>E<>F<>G<> <10>Z<EFBFBD>_<EFBFBD>_<EFBFBD> <0C> <0B> <0B> <13>V<EFBFBD>,<2C>,<2C>_<EFBFBD>j<EFBFBD>o<EFBFBD>o<EFBFBD>N<> O<>
<EFBFBD><14>, <0A> <10><16>(<28>(<28><1F>*<2A>/<2F>/<2F>J<> K<>
<EFBFBD><04><19> <10>T<EFBFBD>&<26>-<2D>-<2D>
<EFBFBD>(8<>(8<>(=<3D>(=<3D>><3E>?<3F>@<40> @<40>D<EFBFBD> <0C> <0B> <0B>&<26>(<28>)<29>><3E><1C>9<>9<>/<2F>J<><18>I<EFBFBD>I<EFBFBD>d<EFBFBD>O<EFBFBD>B
<EFBFBD>
<EFBFBD>
<EFBFBD>
"<22>#<23><04>6<>5<>o<EFBFBD>F<><18>I<EFBFBD>I<EFBFBD>d<EFBFBD>O<EFBFBD>:
<EFBFBD>
<EFBFBD>
rWc <01><><00>t|t<00>r6|jrd}nd}|tj|<01>|j
d<03>zStj ||t|ttf<02><00><04>S)Nz"%(prefix)sliteral_column(%(name)r)z%(prefix)scolumn(%(name)r))r<>r[)<01> wrap_in_text) rhr<00>
is_literalr)<00>_sqlalchemy_autogenerate_prefixr[r<>rr)<03>valuer<00>templates rUr<>r<><sr<00><00> <12>%<25><1C>&<26> <10> <1B> <1B>;<3B>H<EFBFBD>3<>H<EFBFBD><17><1C><<3C><<3C>_<EFBFBD>M<><19>J<EFBFBD>J<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<16>,<2C>,<2C> <11> <1B>#<23>E<EFBFBD>J<EFBFBD><0F>+H<>I<>
<EFBFBD>
rW)r<>r$r0r4rri)r<>r<>r0r4rri)r<>rr0r4rri)r<>r#r0r4)rr?r\rNrri)r_rrr?rur;rri)rr?rri)r_rrr?rpr!rri)r<>zGUnion[ColumnClause[Any], Column[Any], TextClause, FunctionElement[Any]]rr?rri)m<>
__future__r<00>loggingrk<00>typingrrrrrr r
r r <00>
sqlalchemyr rrrrrrN<00>sqlalchemy.dialects.postgresqlrrr<00>sqlalchemy.schemar<00>sqlalchemy.sql.elementsrr<00>sqlalchemy.sql.functionsr<00>sqlalchemy.typesr<00>baserrrrr r!r"r#r$rAr%r&rbr(<00> autogenerater)rir*r+<00>operations.baser,r-r.<00>util.sqla_compatr/r0r1r2<00>$sqlalchemy.dialects.postgresql.arrayr3<00>#sqlalchemy.dialects.postgresql.baser4<00>%sqlalchemy.dialects.postgresql.hstorer5<00>#sqlalchemy.dialects.postgresql.jsonr6r7r8r9r:<00>sqlalchemy.sql.schemar;r<<00>sqlalchemy.sql.type_apir=r><00>autogenerate.apir?<00>autogenerate.renderr@<00>runtime.migrationrA<00> getLoggerr"r<>rCr<>r1r3r<r@<00>register_operation<6F>AddConstraintOp<4F>register_add_constraintrN<00> renderers<72> dispatch_forrr<00>_constraint_renderersrwr{rqr<>rHrWrU<00><module>r<>s <00><01>#<23><0E> <09><16><17><17><17><1B><1B><18> <20><18><1D><1C>%<25><1E><1B>(<28>1<><<3C>2<>)<29>0<>.<2E>4<>%<25><1E><1D><1D><1F>$<24>#<23><1D>'<27><1D>"<22><1D><13>!<21><1C>"<22>-<2D>(<28><1E>'<27><10><1E> <20>+<2B>:<3A>A<><<3C>8<>9<>5<>5<>3<>.<2E>+<2B>2<>$<24>1<>-<2D>4<><18>g<EFBFBD><17><17><08>!<21><03>g
<EFBFBD>[<5B>g
<EFBFBD>T <1B>;<3B><1B>
<EFBFBD>+<2B>|<7C>$<24><06> <18><06>$1<><06><08><06>%<25><06>
<EFBFBD>
<1E> <0C>-<2D><06> !<21><06>-:<3A><06><08><06>.<2E><06>
<EFBFBD>-<2D><1C>&<26><06> <1A><06>&3<><06><08><06>'<27><06>*
<EFBFBD>
<1F><1C>.<2E><14> "<22><14>.;<3B><14>/<2F><14>D<1F><1A><1E><1E>:<3A>;<3B>#<23><1F>#<23>#<23><1F>!B<><02><05><14><14>,<2C>,<2C>-A<>B<>F%<25><03> 3<> 3<>F%<25>C<01><02><<3C>
F%<25>R<08><11><11><1E><1E>8<>9<>P<01>#<23>P<01>)B<>P<01><08>P<01>:<3A>P<01> <08><1D><1D>*<2A>*<2A>+<<3C>=<3D> C<01>!<21> C<01>#<23> C<01>!<21> C<01> <09> C<01>><3E> C<01><19><
<EFBFBD>!<21><
<EFBFBD>#<23><
<EFBFBD> <10><
<EFBFBD> <09> <
<EFBFBD>~
<EFBFBD> <06>
<EFBFBD>$<24> 
<EFBFBD>
 <09> 
rW