Ë
    ¹ûàg@{ ã                   óV  — d dl Z d dlZd dlZd dlmZ d dlm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mZmZmZmZmZ d d	lmZmZmZmZmZmZ d d
lmZm Z m!Z!m"Z"m#Z# d dl$m%Z% d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@mAZA d dlBmCZC d dlDmEZE d dlFmGZG d dlHmIZImJZJ d dlKmLZM  G d„ d«      ZN eN«       ZOd„ ZPd„ ZQ G d„ deR«      ZS G d „ d!«      ZT G d"„ d#«      ZU G d$„ d%e@eS¬&«      ZVd,d'„ZWd(„ ZXd)„ ZYd*„ ZZd+eZ_[        y)-é    N)Úpartialmethod)Úchain)Úsync_to_async)Úapps)Úsettings)Úchecks)ÚNON_FIELD_ERRORSÚFieldDoesNotExistÚ
FieldErrorÚMultipleObjectsReturnedÚObjectDoesNotExistÚValidationError)ÚDJANGO_VERSION_PICKLE_KEYÚDatabaseErrorÚ
connectionÚconnectionsÚrouterÚtransaction)ÚNOT_PROVIDEDÚExpressionWrapperÚIntegerFieldÚMaxÚValue©Ú
LOOKUP_SEP)ÚCASCADEÚ	Collector)ÚDatabaseDefault)ÚForeignObjectRelÚOneToOneFieldÚlazy_related_operationÚresolve_relation)ÚCoalesce)ÚManager)ÚOptions)ÚFÚQ)Úclass_preparedÚ	post_initÚ	post_saveÚpre_initÚpre_save)Ú
AltersDataÚmake_model_tuple)ÚRemovedInDjango60Warning)Ú	force_str)Úmake_hashable)ÚcapfirstÚget_text_list)Úgettext_lazyc                   ó   — e Zd Zd„ Zd„ Zy)ÚDeferredc                  ó   — y©Nz<Deferred field>© ©Úselfs    úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/db/models/base.pyÚ__repr__zDeferred.__repr__;   ó   € Ø!ó    c                  ó   — yr8   r9   r:   s    r<   Ú__str__zDeferred.__str__>   r>   r?   N)Ú__name__Ú
__module__Ú__qualname__r=   rA   r9   r?   r<   r6   r6   :   s   „ ò"ó"r?   r6   c                 ó@   — t        | |||j                  ›d| ›�dœ«      S )zï
    Create exception subclass. Used by ModelBase below.

    The exception is created in a way that allows it to be pickled, assuming
    that the returned exception class will be added as an attribute to the
    'attached_to' class.
    ú.)rC   rD   )ÚtyperD   )ÚnameÚbasesÚmoduleÚattached_tos       r<   Úsubclass_exceptionrL   E   s-   € ô ØØà Ø'2×'?Ó'?ÁÐFñ	
óð r?   c                 óJ   — t        j                  | «       xr t        | d«      S )NÚcontribute_to_class)ÚinspectÚisclassÚhasattr)Úvalues    r<   Ú_has_contribute_to_classrS   W   s!   € ä�‰˜uÓ%Ð%ÒO¬'°%Ð9NÓ*OÐOr?   c                   óN   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zed„ «       Zed„ «       Z	ˆ xZ
S )Ú	ModelBasezMetaclass for all models.c                 ó  •— t         ‰'| �  }|D �cg c]  }t        |t        «      sŒ|‘Œ }}|s || |||«      S |j	                  d«      }d|i}	|j	                  dd «      }
|
�|
|	d<   |j	                  dd «      }i }|j                  «       D ]  \  }}t        |«      r|||<   Œ||	|<   Œ  || |||	fi |¤Ž}t        |dd«      }|xs t        |dd «      }t        |dd «      }d }t        j                  |«      }t        |dd «      €"|€|st        d|›d	|›d
�«      ‚|j                  }|j                  dt        ||«      «       |sÌ|j                  dt        dt        d„ |D «       «      xs t         f||¬«      «       |j                  dt        dt        d„ |D «       «      xs t"        f||¬«      «       |rZ|j$                  sNt'        |d«      s|j(                  |j*                  _        t'        |d«      s|j,                  |j*                  _        |j*                  j.                  }|r)|r'|j0                  rt3        |›d|j0                  ›d�«      ‚|j                  «       D ]  \  }}|j                  ||«       Œ t5        |j*                  j6                  |j*                  j8                  |j*                  j:                  «      }|D �ch c]  }|j<                  ’Œ }}|rïd }|D �cg c]  }t'        |d«      sŒ|‘Œ c}D ]|  }|j*                  j$                  r%|j*                  j>                  rt3        d|z  «      ‚Œ>|€|}ŒC|j*                  j@                  |j*                  j@                  usŒpt3        d|z  «      ‚ |€t3        d|z  «      ‚|j*                  jC                  |«       |j*                  j@                  |j*                  _         n||j*                  _         i }tE        |g|z   «      D ]œ  }t'        |d«      sŒ||k7  r|j*                  j$                  sŒ,|j*                  j6                  D ]X  }t        |tF        «      sŒ|jH                  jJ                  sŒ+tM        ||jH                  jN                  «      }||tQ        |«      <   ŒZ Œž tS        «       }|jU                  «       D �]#  }||vst'        |d«      s|jW                  |jX                  «       Œ0|j*                  j6                  |j*                  j8                  z   } |j*                  j$                  �s| D ]T  }|j<                  |v r)t[        d|j<                  ›d|›d|j\                  ›d	�«      ‚|j_                  |j<                  «       ŒV |j*                  j@                  }tQ        |«      }!|!|v r||!   }ns|sod|j*                  j`                  z  }"tG        |tb        |"dd¬«      }|"|v rt[        d|"›d|›d|j\                  ›d �«      ‚t'        ||"«      s|j                  |"|«       nd }||j*                  jd                  |<   nè|j*                  jd                  jg                  «       }#| D ]š  }|j<                  |vsŒ|j<                  |jX                  vsŒ+|j<                  |vsŒ:tg        jh                  |«      }$|j                  |j<                  |$«       |jj                  sŒx|#j                  «       D ]  \  }}%||%k(  sŒ|$|#|<   Œ Œœ |j*                  jd                  jW                  |#«       |j*                  j:                  D ]ž  }|j<                  |v r@|j*                  j$                  rŒ(t[        d|j<                  ›d|›d|j\                  ›d	�«      ‚tg        jh                  |«      }|j*                  j$                  sd|_6        |j                  |j<                  |«       Œ  �Œ& |j*                  jn                  D �&cg c]  }&tg        jh                  |&«      ‘Œ c}&|j*                  _7        |rd|_        ||_8        |S |js                  «        |j*                  j                  ju                  |j*                  jv                  |«       |S c c}w c c}w c c}w c c}&w )!NrC   Ú__classcell__ÚMetaÚabstractFÚ_metaÚ	app_labelzModel class rF   zU doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.ÚDoesNotExistc              3   óx   K  — | ]2  }t        |d «      r$|j                  j                  s|j                  –— Œ4 y­w©rZ   N)rQ   rZ   rY   r\   ©Ú.0Úxs     r<   ú	<genexpr>z$ModelBase.__new__.<locals>.<genexpr>•   s2   è ø€ ò àÜ" 1 gÔ.°q·w±w×7GÒ7Gð Ÿ�ñùó   ‚8:)rK   r   c              3   óx   K  — | ]2  }t        |d «      r$|j                  j                  s|j                  –— Œ4 y­wr^   )rQ   rZ   rY   r   r_   s     r<   rb   z$ModelBase.__new__.<locals>.<genexpr>£   s4   è ø€ ò àÜ" 1 gÔ.°q·w±w×7GÒ7Gð ×1Õ1ñùrc   ÚorderingÚget_latest_byz! cannot proxy the swapped model 'ú'.zOAbstract base class containing model fields not permitted for proxy model '%s'.zAProxy model '%s' has more than one non-abstract model base class.z6Proxy model '%s' has no non-abstract model base class.zLocal field z
 in class z5 clashes with field of the same name from base class z%s_ptrT)Ú	on_deleterH   Úauto_createdÚparent_linkzAuto-generated field 'z' in class z for parent_link to base class z. clashes with declared field of the same name.)<ÚsuperÚ__new__Ú
isinstancerU   ÚpopÚitemsrS   Úgetattrr   Úget_containing_app_configÚRuntimeErrorÚlabelÚadd_to_classr%   rL   Útupler   r   rY   rQ   re   rZ   rf   ÚproxyÚswappedÚ	TypeErrorr   Úlocal_fieldsÚlocal_many_to_manyÚprivate_fieldsrH   ÚfieldsÚconcrete_modelÚsetup_proxyÚreversedr    Úremote_fieldrj   r"   Úmodelr.   ÚsetÚmroÚupdateÚ__dict__r   rB   ÚaddÚ
model_namer   ÚparentsÚcopyÚdeepcopyÚ
one_to_oneÚmti_inheritedÚindexesrX   Ú_prepareÚregister_modelr[   )(ÚclsrH   rI   ÚattrsÚkwargsÚ	super_newÚbrˆ   rJ   Ú	new_attrsÚ	classcellÚ	attr_metaÚcontributable_attrsÚobj_nameÚobjÚ	new_classrY   ÚmetaÚ	base_metar[   Ú
app_configÚis_proxyÚ
new_fieldsÚfÚfield_namesÚbaseÚklsÚparentÚparent_linksÚfieldÚrelatedÚinherited_attributesÚparent_fieldsÚbase_keyÚ	attr_nameÚbase_parentsÚ	new_fieldrj   ÚidxÚ	__class__s(                                          €r<   rl   zModelBase.__new___   s   ø€ Ü‘G‘Oˆ	ð $Ö@˜¤z°!´YÕ'?’1Ð@ˆÐ@ÙÙ˜S $¨¨uÓ5Ð5ð —‘˜<Ó(ˆØ! 6Ð*ˆ	Ø—I‘I˜o¨tÓ4ˆ	ØÐ Ø)2ˆI�oÑ&Ø—I‘I˜f dÓ+ˆ	ð !ÐØ"Ÿ[™[›]ò 	*‰MˆH�cÜ'¨Ô,Ø03Ð# HÒ-à&)�	˜(Ò#ð		*ñ
 ˜c 4¨°	ÑD¸VÑDˆ	ä˜9 j°%Ó8ˆØÒ<œG I¨v°tÓ<ˆÜ˜I w°Ó5ˆ	àˆ	ô ×3Ñ3°FÓ;ˆ
ä�4˜ dÓ+Ð3ØÐ!ÙÝ&ò .4²Tð;óð ð '×,Ñ,�	à×Ñ˜w¬°°iÓ(@ÔAÙØ×"Ñ"ØÜ"Ø"Üñ à!(ôó ò -ô
 +Ð,ØØ )ô
ôð ×"Ñ"Ø)Ü"Ø-Üñ à!(ôó ò 2ô
 0Ð1ØØ )ô
ôñ  ×!3Ò!3ô ˜t ZÔ0Ø/8×/AÑ/A�I—O‘OÔ,Ü˜t _Ô5Ø4=×4KÑ4K�I—O‘OÔ1à—?‘?×(Ñ(ˆñ ™	 i×&7Ò&7ÜÚ=AÀ9×CTÓCTÐUóð ð 1×6Ñ6Ó8ò 	2‰MˆH�cØ×"Ñ" 8¨SÕ1ð	2ô Ø�O‰O×(Ñ(Ø�O‰O×.Ñ.Ø�O‰O×*Ñ*ó
ˆ
ð
 (2Ö2 !�q—v“vÐ2ˆÐ2ñ ØˆDØ*1ÖK 3´W¸SÀ'Õ5Jš3ÒKò �Ø—<‘<×(Ò(Ø—|‘|×*Ò*Ü'ð>Ø@DñEóð ð
 !Ø�<Ø!‘DØ—\‘\×0Ñ0¸¿
¹
×8QÑ8QÒQÜ#ð!Ø#'ñ(óð ðð  ˆ|ÜØLÈtÑSóð ð �O‰O×'Ñ'¨Ô-Ø-1¯Z©Z×-FÑ-FˆI�O‰OÕ*à-6ˆI�O‰OÔ*ð ˆÜ˜i˜[¨7Ñ2Ó3ò 	DˆDä˜4 Ô)Øà�yÒ ¨¯©×)<Ò)<ØàŸ™×0Ñ0ò D�Ü˜e¤]Õ3¸×8JÑ8J×8VÓ8VÜ.¨y¸%×:LÑ:L×:RÑ:RÓS�GØ>C�LÔ!1°'Ó!:Ò;ñDð	Dô  #›uÐà—M‘M“Oó c	>ˆDØ˜7Ñ"¬'°$¸Ô*@ð %×+Ñ+¨D¯M©MÔ:Øà ŸJ™J×3Ñ3°d·j±j×6SÑ6SÑSˆMØ—:‘:×&Ó&ð +ò =�EØ—z‘z [Ñ0Ý(ð !&§
£
Ú $Ø $§£ðóð ð -×0Ñ0°·±Õ<ð=ð —z‘z×0Ñ0�Ü+¨DÓ1�Ø˜|Ñ+Ø(¨Ñ2‘EÙ!Ø (¨4¯:©:×+@Ñ+@Ñ @�IÜ)ØÜ")Ø&Ø%)Ø$(ô�Eð ! KÑ/Ý(ò
 !*Ú $Ø $§£ðó	ð 	ô # 9¨iÔ8Ø!×.Ñ.¨y¸%Õ@à �EØ05�	—‘×'Ñ'¨Ò-à#Ÿz™z×1Ñ1×6Ñ6Ó8�ð +ò E�EàŸ
™
¨+Ò5Ø!ŸJ™J¨i×.@Ñ.@Ò@Ø!ŸJ™JÐ.BÒBä$(§M¡M°%Ó$8˜	Ø!×.Ñ.¨u¯z©z¸9ÔEð !×+Ó+Ø7C×7IÑ7IÓ7Kò EÑ 3 ¨Ø#(¨KÓ#7Ø;D L°Ò$8ñEðEð  —‘×'Ñ'×.Ñ.¨|Ô<ð Ÿ™×2Ñ2ò >�Ø—:‘: Ñ,ØŸ:™:×.Ó.Ý(ð !&§
£
Ú $Ø $§£ðóð ô !ŸM™M¨%Ó0�EØŸ:™:×.Ò.Ø.2˜Ô+Ø×*Ñ*¨5¯:©:°uÕ=ò!>ðgc	>ðP +4¯/©/×*AÑ*Aö#
Ø#&ŒD�M‰M˜#Õò#
ˆ	�‰Ôñ ð "'ˆIÔØ&ˆIŒNØÐà×ÑÔØ�‰×Ñ×+Ñ+¨I¯O©O×,EÑ,EÀyÔQØÐùòW AùòL 3ùò
 Lùòd#
s"   �a4¦a4Ëa9Ë%a>Ë7a>ß(bc                 óZ   — t        |«      r|j                  | |«       y t        | ||«       y ©N)rS   rN   Úsetattr)r�   rH   rR   s      r<   rt   zModelBase.add_to_classq  s&   € Ü# EÔ*Ø×%Ñ% c¨4Õ0ä�C˜˜uÕ%r?   c                 ó²  — | j                   }|j                  | «       |j                  r�t        | j                  d¬«      | _        t        | j                  d¬«      | _        |j                  j                  r3|j                  }|j                  j                  }t        t        | |«       | j                  €7| j                  ›ddj                  d„ |j                  D «       «      ›d�| _        t        j                   j#                  |j$                  «      }|rt'        | d	|«       |j(                  sWt+        d
„ |j                  D «       «      rt-        d| j                  z  «      ‚t/        «       }d|_        | j3                  d|«       | j                   j4                  D ]   }|j6                  rŒ|j9                  | «       Œ" t;        j<                  | ¬«       y)z7Create some methods once self._meta has been populated.T)Úis_nextFNú(ú, c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr²   ©rH   ©r`   r¡   s     r<   rb   z%ModelBase._prepare.<locals>.<genexpr>’  s   è ø€ Ò6 Q˜!Ÿ&�&Ñ6ùó   ‚ú)Úget_absolute_urlc              3   ó:   K  — | ]  }|j                   d k(  –— Œ y­w)ÚobjectsNr¹   rº   s     r<   rb   z%ModelBase._prepare.<locals>.<genexpr>œ  s   è ø€ Ò<¨1�1—6‘6˜YÕ&Ñ<ùs   ‚zOModel %s must specify a custom Manager, because it has a field named 'objects'.r¿   )Úsender)rZ   rŽ   Úorder_with_respect_tor   Ú_get_next_or_previous_in_orderÚget_next_in_orderÚget_previous_in_orderr€   r�   r!   Úmake_foreign_order_accessorsÚ__doc__rB   Újoinr|   r   ÚABSOLUTE_URL_OVERRIDESÚgetÚlabel_lowerr³   ÚmanagersÚanyÚ
ValueErrorr$   ri   rt   r�   rH   Úset_name_with_modelr(   Úsend)r�   ÚoptsÚwrtÚremoteÚget_absolute_url_overrideÚmanagerÚindexs          r<   rŽ   zModelBase._preparew  s‹  € à�y‰yˆØ�‰�cÔà×%Ò%Ü$1Ø×2Ñ2¸Dô%ˆCÔ!ô )6Ø×2Ñ2¸Eô)ˆCÔ%ð ×)Ñ)×6Ò6Ø×0Ñ0�Ø×)Ñ)×/Ñ/�Ü&Ô'CÀSÈ&ÔQð �;‰;Ðà—“Ø—	‘	Ñ6¨$¯+©+Ô6Õ6ðˆCŒKô
 %-×$CÑ$C×$GÑ$GØ×Ñó%
Ð!ñ %Ü�CÐ+Ð-FÔGà�}Š}ÜÑ<°·±Ô<Ô<Ü ð-Ø/2¯|©|ñ<óð ô “iˆGØ#'ˆGÔ Ø×Ñ˜Y¨Ô0ð
 —Y‘Y×&Ñ&ò 	/ˆEØ—:“:Ø×)Ñ)¨#Õ.ð	/ô 	×Ñ 3Ö'r?   c                 ó.   — | j                   j                  S r²   )rZ   Úbase_manager©r�   s    r<   Ú_base_managerzModelBase._base_manager®  s   € à�y‰y×%Ñ%Ð%r?   c                 ó.   — | j                   j                  S r²   )rZ   Údefault_managerrØ   s    r<   Ú_default_managerzModelBase._default_manager²  s   € à�y‰y×(Ñ(Ð(r?   )rB   rC   rD   rÆ   rl   rt   rŽ   ÚpropertyrÙ   rÜ   rW   ©r°   s   @r<   rU   rU   \   s@   ø„ Ù#ôPòd&ò5(ðn ñ&ó ð&ð ñ)ó ô)r?   rU   c                   ó   — e Zd Zdd„Zy)ÚModelStateFieldsCacheDescriptorNc                 ó    — |€| S i x}|_         |S r²   )Úfields_cache)r;   Úinstancer�   Úress       r<   Ú__get__z'ModelStateFieldsCacheDescriptor.__get__¸  s   € ØÐØˆKØ&(Ð(ˆˆhÔ#Øˆ
r?   r²   )rB   rC   rD   rå   r9   r?   r<   rà   rà   ·  s   „ ôr?   rà   c                   ó&   — e Zd ZdZdZdZ e«       Zy)Ú
ModelStatezStore model instance state.NT)rB   rC   rD   rÆ   ÚdbÚaddingrà   râ   r9   r?   r<   rç   rç   ¿  s   „ Ù%à	€Bð
 €FÙ2Ó4�Lr?   rç   c                   ó$  ‡ — e Zd Zˆ fd„Zed„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ ZdEd„Zd„ Z eee«      Zd„ ZdFd„ZdFd„Zd„ Zd„ Zddd
d
dœd„Zde_        ddd
d
dœd„Zde_        ed„ «       Z	 	 	 	 	 dGd„Zde_        	 dEd„Z	 	 	 	 	 	 dHd„Zd„ Zd„ ZdEd„ZdId„Z de _        dId„Z!de!_        d „ Z"d!„ Z#d"„ Z$dEd#„Z%d$„ Z&d%„ Z'dEd&„Z(dId'„Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-d,„ Z.dEd-„Z/dJd.„Z0dEd/„Z1ed0„ «       Z2ed1„ «       Z3ed2„ «       Z4ed3„ «       Z5ed4„ «       Z6ed5„ «       Z7ed6„ «       Z8ed7„ «       Z9ed8„ «       Z:ed9„ «       Z;ed:„ «       Z<ed;„ «       Z=ed<„ «       Z>ed=„ «       Z?ed>„ «       Z@ed?„ «       ZAed@„ «       ZBedA„ «       ZCedB„ «       ZDedC„ «       ZEedD„ «       ZFˆ xZGS )KÚModelc                 óÐ  •— | j                   }| j                  }t        }t        }|j                  rt        d«      ‚t        j                  |||¬«       t        «       | _	        t        |«      t        |j                  «      kD  rt        d«      ‚|sCt        |j                  «      }t        ||«      D ]  \  }}	||u rŒ || |	j                  |«       Œ  n�t        |j                   «      }t        ||«      D ]i  \  }}	||u rŒ || |	j                  |«       |j#                  |	j$                  t&        «      t&        usŒFt        |j(                  › d|	j$                  › d�«      ‚ |D ]È  }	d}
|	j                  |vr|	j*                  �|	j,                  rŒ,|rVt/        |	j0                  t2        «      r	 |j#                  |	j$                  «      }d}
n-	 |j#                  |	j                  «      }n|	j7                  «       }|
r|usŒ› || |	j$                  |«       Œ°|usŒµ || |	j                  |«       ŒÊ |r�|j8                  }d}|j;                  «       D ]:  \  }}||v r||usŒ || ||«       Œ	 |j=                  |«       ||usŒ1 || ||«       Œ< |r2d	jA                  d
„ |D «       «      }t        |jB                  › d|› �«      ‚tD        ‰| ��  «        tI        j                  || ¬«       y # t4        $ r@ 	 |j#                  |	j                  «      }n# t4        $ r |	j7                  «       }Y nw xY wY �Œ6w xY w# t4        $ r |	j7                  «       }Y �ŒVw xY w# t>        $ r
 ||fz  }Y �Œw xY w)Nz'Abstract models cannot be instantiated.)rÀ   Úargsr’   z'Number of args exceeds number of fieldsz8() got both positional and keyword arguments for field 'rg   FTr9   r·   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr²   )Úrepr)r`   Úns     r<   rb   z!Model.__init__.<locals>.<genexpr>6  s   è ø€ Ò,I¸¬T°!¯WÑ,Iùs   ‚z%() got unexpected keyword arguments: )rÀ   rã   )%r°   rZ   r³   ÚDEFERREDrY   rx   r+   rÏ   rç   Ú_stateÚlenÚconcrete_fieldsÚ
IndexErrorÚiterÚzipÚattnamer|   rn   rH   r   rD   ÚcolumnÚ	generatedrm   r€   r   ÚKeyErrorÚget_defaultÚ_property_namesro   Ú	get_fieldr
   rÇ   rB   rk   Ú__init__r)   )r;   rí   r’   r�   rÐ   Ú_setattrÚ	_DEFERREDÚfields_iterÚvalr§   Úis_related_objectÚrel_objÚproperty_namesÚ
unexpectedÚproprR   Úunexpected_namesr°   s                    €r<   rÿ   zModel.__init__Ì  sZ  ø€ à�n‰nˆØ�z‰zˆÜˆÜˆ	Ø�=Š=ÜÐEÓFÐFä�‰˜S t°FÕ;ô !“lˆŒô ˆt‹9”s˜4×/Ñ/Ó0Ò0äÐFÓGÐGáÜ˜t×3Ñ3Ó4ˆKô
 " $¨Ó4ò 3‘
��UØ˜)Ñ#ØÙ˜˜uŸ}™}¨cÕ2ñ3ô ˜tŸ{™{Ó+ˆKÜ! $¨Ó4ò ‘
��UØ˜)Ñ#ØÙ˜˜uŸ}™}¨cÔ2Ø—:‘:˜eŸj™j¬,Ó7¼|ÒKÜ#Ø×+Ñ+Ð,ð -8Ø8=¿
¹
°|À2ðGóð ðð !ò &	7ˆEØ %Ðà�}‰} FÑ*¨u¯|©|Ð/CÀuÇÂØÙÜ˜e×0Ñ0Ô2BÔCð	6à"(§*¡*¨U¯Z©ZÓ"8˜Ø,0Ñ)ð2Ø$Ÿj™j¨¯©Ó7™ð ×'Ñ'Ó)�á ð
  )Ò+Ù˜T 5§:¡:¨wÕ7à˜iÒ'Ù˜T 5§=¡=°#Õ6ðM&	7ñP Ø!×1Ñ1ˆNØˆJØ%Ÿ|™|›~ò 8‘��eð ˜>Ñ)Ø IÒ-Ù   t¨UÕ3ð8ØŸ™ tÔ,ð !¨	Ò1Ù$ T¨4°Õ7ð8ñ Ø#'§9¡9Ñ,I¸jÔ,IÓ#IÐ ÜØ—|‘|�nÐ$IØ'Ð(ð*óð ô 	‰ÑÔÜ�‰˜c¨DÖ1øôk $ò 6ð6à"(§*¡*¨U¯]©]Ó";™CøÜ'ò 6Ø"'×"3Ñ"3Ó"5šCð6ýð	6ûô $ò 2ð
 $×/Ñ/Ó1›ð2ûô@ -ò .Ø" t gÑ-›
ð.úsZ   Æ-K&ÇL2É*MË&	L/Ë0LÌL/ÌL(Ì%L/Ì'L(Ì(L/Ì.L/Ì2MÍMÍM%Í$M%c                 óJ  — t        |«      t        | j                  j                  «      k7  rKt        |«      }| j                  j                  D �cg c]!  }|j                  |v rt        |«      nt        ‘Œ# }} | |Ž }d|j                  _        ||j                  _	        |S c c}w ©NF)
ró   rZ   rô   rö   rø   Únextrñ   rò   ré   rè   )r�   rè   r¢   ÚvaluesÚvalues_iterr¡   Únews          r<   Úfrom_dbzModel.from_db>  s�   € äˆv‹;œ#˜cŸi™i×7Ñ7Ó8Ò8Ü˜v›,ˆKð Ÿ™×2Ñ2öàð &'§Y¡Y°+Ñ%=”�[Ô!Ä8ÑKðˆFð ñ �6ˆlˆØ!ˆ�
‰
ÔØˆ�
‰
ŒØˆ
ùòs   Á&B c                 ó<   — d| j                   j                  ›d| ›d�S )Nú<z: ú>)r°   rB   r:   s    r<   r=   zModel.__repr__K  s   � Ø!Ÿ^™^×4Ó4²dÐ;Ð;r?   c                 óN   — | j                   j                  ›d| j                  ›d�S )Nz	 object (r¼   )r°   rB   Úpkr:   s    r<   rA   zModel.__str__N  s   € Ø#'§>¡>×#:Ó#:¸D¿G»GÐDÐDr?   c                 óÌ   — t        |t        «      st        S | j                  j                  |j                  j                  k7  ry| j
                  }|€| |u S ||j
                  k(  S r  )rm   rë   ÚNotImplementedrZ   r}   r  )r;   ÚotherÚmy_pks      r<   Ú__eq__zModel.__eq__Q  sX   € Ü˜%¤Ô'Ü!Ð!Ø�:‰:×$Ñ$¨¯©×(BÑ(BÒBØØ—‘ˆØˆ=Ø˜5�=Ð Ø˜Ÿ™Ñ Ð r?   c                 óZ   — | j                   €t        d«      ‚t        | j                   «      S )Nz8Model instances without primary key value are unhashable)r  rx   Úhashr:   s    r<   Ú__hash__zModel.__hash__[  s%   € Ø�7‰7ˆ?ÜÐVÓWÐWÜ�D—G‘G‹}Ðr?   c                 ó¼   — | j                  «       }t        j                  |t        <   | j                  j
                  | j                  j                  f}t        |f|fS r²   )Ú__getstate__ÚdjangoÚ__version__r   rZ   r[   Úobject_nameÚmodel_unpickle)r;   ÚdataÚclass_ids      r<   Ú
__reduce__zModel.__reduce__`  sN   € Ø× Ñ Ó"ˆÜ*0×*<Ñ*<ˆÔ&Ñ'Ø—:‘:×'Ñ'¨¯©×)?Ñ)?Ð?ˆÜ ˜{¨DÐ0Ð0r?   c                 óŒ  — | j                   j                  «       }t        j                  |d   «      |d<   |d   j                  j                  «       |d   _        g }|j                  «       D ]2  \  }}t	        |t
        «      sŒ|j                  |t        |«      f«       Œ4 |r ||d<   |D ]  \  }}|j                  |«       Œ |S )z0Hook to allow choosing the attributes to pickle.rò   Ú_memoryview_attrs)	r…   r‰   râ   ro   rm   Ú
memoryviewÚappendÚbytesrn   )r;   Ústater(  ÚattrrR   s        r<   r  zModel.__getstate__f  s¾   € à—‘×"Ñ"Ó$ˆÜŸ)™) E¨(¡OÓ4ˆˆh‰Ø',¨X¡×'CÑ'C×'HÑ'HÓ'Jˆˆh‰Ô$ð ÐØ Ÿ;™;›=ò 	?‰KˆD�%Ü˜%¤Õ,Ø!×(Ñ(¨$´°e³Ð)=Õ>ð	?ñ Ø):ˆEÐ%Ñ&Ø0ò  ‘��eØ—	‘	˜$•ð àˆr?   c                 ó€  — |j                  t        «      }|rE|t        j                  k7  rNt	        j
                  d|›dt        j                  ›d�t        d¬«       nt	        j
                  dt        d¬«       d|v r'|j                  d«      D ]  \  }}t        |«      ||<   Œ | j                  j                  |«       y )Nz(Pickled model instance's Django version z$ does not match the current version rF   é   ©Ú
stacklevelz9Pickled model instance's Django version is not specified.r(  )rÉ   r   r   r!  ÚwarningsÚwarnÚRuntimeWarningrn   r)  r…   r„   )r;   r,  Úpickled_versionr-  rR   s        r<   Ú__setstate__zModel.__setstate__w  s¦   € ØŸ)™)Ô$=Ó>ˆÙØ¤&×"4Ñ"4Ò4Ü—’ò '¬×(:Ó(:ð<ô #Ø öô �M‰MØKÜØõð
  %Ñ'Ø$Ÿy™yÐ)<Ó=ò 0‘��eÜ(¨Ó/��d’ð0à�‰×Ñ˜UÕ#r?   Nc                 ób   — |xs | j                   }t        | |j                  j                  «      S r²   )rZ   rp   r  rø   )r;   rœ   s     r<   Ú_get_pk_valzModel._get_pk_val�  s%   € ØÒ!�t—z‘zˆÜ�t˜TŸW™WŸ_™_Ó-Ð-r?   c                 ó&  — | j                   j                  j                  «       D ]@  }|sŒ|| j                   j                  k7  sŒ t	        | |j
                  j                  |«       ŒB t	        | | j                   j                  j                  |«      S r²   )rZ   rˆ   r  r  r³   Útarget_fieldrø   )r;   rR   rj   s      r<   Ú_set_pk_valzModel._set_pk_val‘  so   € ØŸ:™:×-Ñ-×4Ñ4Ó6ò 	GˆKÚ˜{¨d¯j©j¯m©mÓ;Ü˜˜k×6Ñ6×>Ñ>ÀÕFð	Gô �t˜TŸZ™ZŸ]™]×2Ñ2°EÓ:Ð:r?   c                 ó˜   — | j                   j                  D �ch c]&  }|j                  | j                  vr|j                  ’Œ( c}S c c}w )zU
        Return a set containing names of deferred fields for this instance.
        )rZ   rô   rø   r…   )r;   r¡   s     r<   Úget_deferred_fieldszModel.get_deferred_fields™  sB   € ð —Z‘Z×/Ñ/ö
àØ�y‰y §¡Ñ-ð �I‹Iò
ð 	
ùò 
s   ™+Ac           	      óà  — |€i | _         nmt        | dd«      }t        |«      }|j                  «       D ]  }||v sŒ||= |j	                  |«       Œ |syt        d„ |D «       «      rt        dt        z  «      ‚|€,d| i}| j                  j                  j                  ||¬«      }n|�|j                  |«      }|j                  | j                  ¬«      }| j                  «       }|� |j                  |Ž }nK|rI |j                  | j                   j"                  D �	ch c]  }	|	j$                  |vr|	j$                  ’Œ c}	Ž }|j'                  «       }
|
j                  «       }| j                   j"                  D ]Ÿ  }|j$                  |v rŒt)        | |j$                  t        |
|j$                  «      «       |j*                  sŒJ|j-                  |
«      r"|j/                  | |j1                  |
«      «       Œ}|j-                  | «      sŒ�|j3                  | «       Œ¡ | j                   j4                  D ]6  }|�|j6                  |v sŒ|j-                  | «      sŒ&|j3                  | «       Œ8 | j                   j8                  D ]C  }|�|j6                  |v sŒ|j*                  sŒ!|j-                  | «      sŒ3|j3                  | «       ŒE |
j:                  j<                  | j:                  _        yc c}	w )	aU  
        Reload field values from the database.

        By default, the reloading happens from the database this instance was
        loaded from, or by the read router if this instance wasn't loaded from
        any database. The using parameter will override the default.

        Fields can be used to specify which fields to reload. The fields
        should be an iterable of field attnames. If fields is None, then
        all non-deferred fields are reloaded.

        When accessing deferred fields of an instance, the deferred loading
        of the field will call this method.
        NÚ_prefetched_objects_cacher9   c              3   ó,   K  — | ]  }t         |v –— Œ y ­wr²   r   rº   s     r<   rb   z(Model.refresh_from_db.<locals>.<genexpr>½  s   è ø€ Ò3 q”: ”?Ñ3ùs   ‚zRFound "%s" in fields argument. Relations and transforms are not allowed in fields.rã   )Úhints©r  )r?  rp   r‚   r‰   ÚremoverÌ   rÍ   r   r°   rÙ   Ú
db_managerÚusingÚfilterr  r=  ÚonlyrZ   rô   rø   rÉ   r³   Úis_relationÚ	is_cachedÚset_cached_valueÚget_cached_valueÚdelete_cached_valueÚrelated_objectsrH   r{   rò   rè   )r;   rE  r|   Úfrom_querysetÚprefetched_objects_cacher§   rA  Údb_instance_qsÚdeferred_fieldsr¡   Údb_instanceÚnon_loaded_fieldsÚrels                r<   Úrefresh_from_dbzModel.refresh_from_db£  s¹  € ð ˆ>Ø-/ˆDÕ*ä'.¨tÐ5PÐRTÓ'UÐ$Ü˜“[ˆFØŸ™›ò )�ØÐ4Ò4Ø0°Ð7Ø—M‘M %Õ(ð)ñ ØÜÑ3¨FÔ3Ô3Ü ð1Ü3=ñ>óð ð
 Ð Ø Ð&ˆEØ ŸN™N×8Ñ8×CÑCÀEÐQVÐCÓW‰MØÐØ)×/Ñ/°Ó6ˆMà&×-Ñ-°·±Ð-Ó9ˆð ×2Ñ2Ó4ˆØÐØ0˜^×0Ñ0°&Ð9‰NÙØ0˜^×0Ñ0ð "ŸZ™Z×7Ñ7öàØ—y‘y¨Ñ7ð —I“IòðˆNð %×(Ñ(Ó*ˆØ'×;Ñ;Ó=ÐØ—Z‘Z×/Ñ/ò 
	4ˆEØ�}‰}Ð 1Ñ1àÜ�D˜%Ÿ-™-¬°¸e¿m¹mÓ)LÔMà× Ó Ø—?‘? ;Ô/Ø×*Ñ*¨4°×1GÑ1GÈÓ1TÕUØ—_‘_ TÕ*Ø×-Ñ-¨dÕ3ð
	4ð —:‘:×-Ñ-ò 	.ˆCØ� #§(¡(¨fÒ"4¸#¿-¹-ÈÕ:MØ×'Ñ'¨Õ-ð	.ð
 —Z‘Z×.Ñ.ò 	0ˆEà� 5§:¡:°Ò#7Ø×%Ó%Ø—O‘O DÕ)à×)Ñ)¨$Õ/ð	0ð %×+Ñ+×.Ñ.ˆ�‰�ùòGs   Ä!K+c              ƒ   óZ   K  —  t        | j                  «      |||¬«      ƒ d {  –—† S 7 Œ­w)N)rE  r|   rN  )r   rU  )r;   rE  r|   rN  s       r<   Úarefresh_from_dbzModel.arefresh_from_dbö  s1   è ø€ Ø8”] 4×#7Ñ#7Ó8Ø °mô
÷ 
ð 	
ð 
ús   ‚"+¤)¥+c                 óœ   — 	 | j                   j                  |«      }t        | |j                  «      S # t        $ r t        | |«      cY S w xY w)aÂ  
        Return the value of the field name for this instance. If the field is
        a foreign key, return the id value instead of the object. If there's
        no Field object with this name on the model, return the model
        attribute's value.

        Used to serialize a field's value (in the serializer, or form output,
        for example). Normally, you would just access the attribute directly
        and not use this method.
        )rZ   rþ   r
   rp   rø   )r;   Ú
field_namer§   s      r<   Úserializable_valuezModel.serializable_valueû  sL   € ð	-Ø—J‘J×(Ñ(¨Ó4ˆEô �t˜UŸ]™]Ó+Ð+øô !ò 	-Ü˜4 Ó,Ò,ð	-ús   ‚3 ³AÁ
Ac          
      óP  ‡‡‡
— ddd d dœŠ
t        j                  d‰› d�t        d¬«       t        ‰«      dz   }t        ‰
«      dz   }||kD  rt	        d‰› d	|› d
|› d�«      ‚ˆˆ
ˆfd„}t        |j                  «       «      D ���	cg c]  \  }\  }}	 |||	|«      ‘Œ c}	}}S c c}	}}w )NF©Úforce_insertÚforce_updaterE  Úupdate_fieldsz Passing positional arguments to z() is deprecatedé   r0  é   úModel.z() takes from 1 to z positional arguments but z were givenc                 ó`   •— |t        ‰«      k  r|‰|    urt        d‰› d| › d�«      ‚‰|   S |S )Nrb  z%() got multiple values for argument 'ú')ró   rx   )Ú
param_nameÚparam_valueÚ	arg_indexrí   ÚdefaultsÚmethod_names      €€€r<   Ú	get_paramz&Model._parse_params.<locals>.get_param#  sS   ø€ Øœ3˜t›9Ò$Ø h¨zÑ&:Ñ:ä#Ø   ð .Ø&˜< qð*óð ð ˜I‘Ð&àÐr?   )r2  r3  r/   ró   rx   Ú	enumeratero   )r;   ri  rí   r’   Útotal_len_argsÚmax_len_argsrj  ÚiÚkÚvrh  s    ``       @r<   Ú_parse_paramszModel._parse_params  sÄ   ú€ à!Ø!ØØ!ñ	
ˆô 	�‰Ø.¨{¨mÐ;KÐLÜ$Øõ	
ô
 ˜T› Q™ˆÜ˜8“} qÑ(ˆØ˜LÒ(äØ˜˜Ð%8¸¸ð G!Ø!/Ð 0°ð=óð ö

	ô 5>¸f¿l¹l»nÓ4M×NÐN¡y q©&¨1¨a‘	˜!˜Q Õ"ÔNÐNùÔNs   ÂB!Fr\  c          	      ó~  — |r | j                   |d||||dœŽ\  }}}}| j                  d¬«       |xs! t        j                  | j                  | ¬«      }|r|s|rt        d«      ‚| j                  j                  D �ch c]4  }|j                  | j                  vr|j                  du r|j                  ’Œ6 }}|�T|syt        |«      }| j                  j                  }|j                  |«      }	|	r²t        dd	j                  |	«      z  «      ‚|s“|r‘|| j                  j                   k(  rxt#        «       }| j                  j                  D ]7  }
|
j$                  rŒt'        |
d
«      rŒ|j)                  |
j                  «       Œ9 |j                  |«      }|rt        |«      }| j+                  ||||¬«       yc c}w )aa  
        Save the current instance. Override this in a subclass if you want to
        control the saving process.

        The 'force_insert' and 'force_update' parameters can be used to insist
        that the "save" must be an SQL insert or update (or equivalent for
        non-SQL backends), respectively. Normally, they should not be set.
        Úsave©ri  r]  r^  rE  r_  )Úoperation_name©rã   z6Cannot force both insert and updating in model saving.FNz_The following fields do not exist in this model, are m2m fields, or are non-concrete fields: %sr·   Úthrough)rE  r]  r^  r_  )rq  Ú _prepare_related_fields_for_saver   Údb_for_writer°   rÍ   rZ   rô   rø   r…   rú   Ú	frozensetÚ_non_pk_concrete_field_namesÚ
differencerÇ   rò   rè   r‚   Úprimary_keyrQ   r†   Ú	save_base)r;   r]  r^  rE  r_  rí   r¡   Údeferred_non_generated_fieldsr¢   Únon_model_fieldsr§   Úloaded_fieldss               r<   rs  z
Model.save5  s½  € ñ" Ø?Q¸t×?QÑ?QØØ"Ø)Ø)ØØ+ò@Ñ<ˆL˜,¨¨}ð 	×-Ñ-¸VÐ-ÔDàÒKœ×,Ñ,¨T¯^©^ÀdÔKˆÙ™\©]ÜÐUÓVÐVð —Z‘Z×/Ñ/ö)
àØ�y‰y §¡Ñ-°!·+±+ÀÑ2Fð �I‹Ið)
Ð%ð )
ð
 Ð$ñ !Øä% mÓ4ˆMØŸ*™*×AÑAˆKØ,×7Ñ7¸ÓDÐáÜ ð=à—i‘iÐ 0Ó1ñ2óð ñ Ù-Ø˜Ÿ™Ÿ™Ò'ä›%ˆKØŸ™×3Ñ3ò 3�Ø×(Ó(´¸À	Õ1JØ—O‘O E§M¡MÕ2ð3ð (×2Ñ2Ð3PÓQˆMÙÜ )¨-Ó 8�à�‰ØØ%Ø%Ø'ð	 	õ 	
ùòM)
s   Á>9F:Tc          	   ‡   ó–   K  — |r | j                   |d||||dœŽ\  }}}} t        | j                  «      ||||¬«      ƒ d {  –—† S 7 Œ­w)NÚasavert  r\  )rq  r   rs  )r;   r]  r^  rE  r_  rí   s         r<   rƒ  zModel.asave‰  si   è ø€ ñ Ø?Q¸t×?QÑ?QØØ#Ø)Ø)ØØ+ò@Ñ<ˆL˜,¨¨}ð .”] 4§9¡9Ó-Ø%Ø%ØØ'ô	
÷ 
ð 	
ð 
ús   ‚A A	ÁAÁA	c                 ó  — |du ry|du r| fS t        |t        «      st        d«      ‚|D ]S  }t        |t        «      st        d|›d�«      ‚t	        | |«      rŒ/t        d|j
                  › d| j
                  › d�«      ‚ |S )	NFr9   Tz%force_insert must be a bool or tuple.zInvalid force_insert member. z must be a model subclass.z must be a base of rF   )rm   ru   rx   rU   Ú
issubclassrD   )r�   r]  Úmembers      r<   Ú_validate_force_insertzModel._validate_force_insert¤  s­   € à˜5Ñ ØØ˜4ÑØ�6ˆMÜ˜,¬Ô.ÜÐCÓDÐDØ"ò 		ˆFÜ˜f¤iÔ0ÜØ3°F°:Ð=WÐXóð ô ˜c 6Õ*ÜØ3°F×4GÑ4GÐ3Hð IØ"×/Ñ/Ð0°ð3óð ð		ð Ðr?   c           	      ó   — |xs! t        j                  | j                  | ¬«      }|r|s|rJ ‚|�|sJ ‚| j                  x}}|j                  j                  r|j                  j
                  }|j                  }|j                  st        j                  || |||¬«       |j                  rt        j                  |d¬«      }	nt        j                  |¬«      }	|	5  d}
|s%| j                  |«      }| j                  ||||«      }
| j                  |||xs |
|||«      }ddd«       || j                   _        d| j                   _        |j                  st'        j                  ||  |||¬«       yy# 1 sw Y   ŒUxY w)av  
        Handle the parts of saving which should be done only once per save,
        yet need to be done in raw saves, too. This includes some sanity
        checks and signal sending.

        The 'raw' argument is telling save_base not to save any parent
        models and not to do any changes to the values before save. This
        is used by fixture loading.
        rv  N)rÀ   rã   ÚrawrE  r_  F)rE  Ú	savepoint)rE  )rÀ   rã   Úcreatedr_  r‰  rE  )r   ry  r°   rZ   rv   r}   ri   r,   rÏ   rˆ   r   ÚatomicÚmark_for_rollback_on_errorr‡  Ú_save_parentsÚ_save_tablerò   rè   ré   r*   )r;   r‰  r]  r^  rE  r_  r�   Úoriginrœ   Úcontext_managerÚparent_insertedÚupdateds               r<   r~  zModel.save_base¸  su  € ð" ÒKœ×,Ñ,¨T¯^©^ÀdÔKˆÙ ¡l±mÐEÐEØÐ$©Ð5Ð5Ø—~‘~Ð%ˆˆfà�9‰9�?Š?Ø—)‘)×*Ñ*ˆCØ�y‰yˆØ× Ò Ü�M‰MØØØØØ+õð �<Š<Ü)×0Ñ0°uÈÔN‰Oä)×DÑDÈ5ÔQˆOØñ 	Ø#ˆOÙà#×:Ñ:¸<ÓH�Ø"&×"4Ñ"4Ø˜ ¨|ó#�ð ×&Ñ&ØØØÒ/ ØØØóˆG÷	ð" ˆ�‰Œà"ˆ�‰Ôð × Ò Ü�N‰NØØØ$˜Ø+ØØöð !÷-	ð 	ús   ÃAE4Å4E=c           
      óÖ  — |j                   }d}|€i }|j                  j                  «       D �]8  \  }}	|	rt        | |j                   j                  j
                  «      €Ut        | |	j
                  «      �?t        | |j                   j                  j
                  t        | |	j
                  «      «       |j                  |«      x}
€C| j                  |||||¬«      }| j                  ||||xs t        ||«      ¬«      }|sd}|||<   n|
sd}|	sŒåt        | |	j
                  | j                  |j                   «      «       |	j                  | «      s�Œ(|	j                  | «       �Œ; |S )z3Save all the parents of cls using values from self.F)r�   rE  r_  r]  Úupdated_parents)r�   rE  r_  r]  T)rZ   rˆ   ro   rp   r  rø   r³   rÉ   rŽ  r�  r…  r8  rI  rL  )r;   r�   rE  r_  r]  r•  rœ   Úinsertedr¥   r§   Úparent_updatedr’  r“  s                r<   rŽ  zModel._save_parents   s_  € ð �y‰yˆØˆØÐ"Ø ˆOØ!Ÿ\™\×/Ñ/Ó1ó $	4‰MˆF�Eñ Ü˜D &§,¡,§/¡/×"9Ñ"9Ó:ÐBÜ˜D %§-¡-Ó0Ð<ä˜˜fŸl™lŸo™o×5Ñ5´w¸tÀUÇ]Á]Ó7SÔTØ"1×"5Ñ"5°fÓ"=Ð=�ÐFØ"&×"4Ñ"4ØØØ"/Ø!-Ø$3ð #5ó #�ð ×*Ñ*ØØØ"/Ø!0Ò!T´J¸vÀ|Ó4Tð	 +ó �ñ Ø#�HØ*1� Ò'Ù#Ø�âÜ˜˜eŸm™m¨T×-=Ñ-=¸f¿l¹lÓ-KÔLð —?‘? 4Ö(Ø×-Ñ-¨dÖ3ðI$	4ðJ ˆr?   c           
      ól  — |j                   }|j                  D �cg c]  }|j                  s|j                  s|‘Œ }	}|r+|	D �cg c]   }|j                  |v s|j
                  |v r|‘Œ" }	}| j                  |«      }
|
€<|j                  j                  | «      }
t        | |j                  j
                  |
«       |
du}|s|s|rt        d«      ‚d}|s€|s~|s|| j                  j                  rf|j                  j                  r|j                  j                  t        us2|j                  j                  r|j                  j                  t        urd}|r‘|s�|j                   j#                  |«      }|	D �cg c]/  }|d|rt%        | |j
                  «      n|j'                  | d«      f‘Œ1 }}|xs |}| j)                  |||
|||«      }|r|st+        d«      ‚|r|st+        d«      ‚|�s7|j,                  r›|j,                  }|j/                  | «      } |j                   j#                  |«      j0                  di |¤Žj3                  t5        t7        t9        d«      t;        d«      z   t=        «       ¬	«      t;        d
«      «      ¬«      d   | _        |j                  D �cg c]   }|j                  s|s||j@                  ur|‘Œ" }}|jB                  }| jE                  |j                   ||||«      }|r.tG        |d
   |«      D ]  \  }}t        | |j
                  |«       Œ |S c c}w c c}w c c}w c c}w )zp
        Do the heavy-lifting involved in saving. Update or insert the data
        for a single table.
        Nz5Cannot force an update in save() with no primary key.FTz&Forced update did not affect any rows.z0Save with update_fields did not affect any rows.Ú_orderra  )Úoutput_fieldr   )Ú_order__maxr›  r9   )$rZ   Úlocal_concrete_fieldsr}  rú   rH   rø   r8  r  Úget_pk_value_on_saver³   rÍ   rò   ré   Údefaultr   Ú
db_defaultrÙ   rE  rp   r,   Ú
_do_updater   rÁ   Úget_filter_kwargs_for_objectrF  Ú	aggregater#   r   r   r   r   r™  Ú
auto_fieldÚdb_returning_fieldsÚ
_do_insertr÷   )r;   r‰  r�   r]  r^  rE  r_  rœ   r¡   Únon_pks_non_generatedÚpk_valÚpk_setr“  Úbase_qsr  Úforced_updater§   Úfilter_argsr|   Úreturning_fieldsÚresultsrR   s                         r<   r�  zModel._save_table/  s6  € ð �y‰yˆð ×/Ñ/ö!
àØ—=’=¨¯ªò ð!
Ðð !
ñ ð /ö%àØ—6‘6˜]Ñ*¨a¯i©i¸=Ñ.Hò ð%Ð!ð %ð ×!Ñ! $Ó'ˆØˆ>Ø—W‘W×1Ñ1°$Ó7ˆFÜ�D˜$Ÿ'™'Ÿ/™/¨6Ô2Ø˜tÐ#ˆÙ™<©=ÜÐTÓUÐUØˆñ Ù Ù Ø—‘×"Ò"à—‘—’ T§W¡W§_¡_¼LÑ%HØ—G‘G×&Ò&¨4¯7©7×+=Ñ+=Ä\Ñ+Qð  ˆLá™,Ø×'Ñ'×-Ñ-¨eÓ4ˆGð /öð ð	 ØÙ14”W˜T 1§9¡9Ô-¸!¿*¹*ÀTÈ5Ó:QòðˆFð ð *Ò9¨\ˆMØ—o‘oØ˜ ¨°¸}óˆGñ ¡GÜ#Ð$LÓMÐMÙ¡WÜ#Ð$VÓWÐWÚØ×)Ò)ð ×2Ñ2�Ø#×@Ñ@ÀÓF�ð�C×%Ñ%×+Ñ+¨EÓ2ß‘Vñ+Ø)ñ+ç‘YÜ$,Ü-Ü # H£´°a³Ñ 8Ä|Ã~ôô " !›Hó	%ð ó ð $ñ	%ð ”ð ×3Ñ3öàØ—{’{©°!¸4¿?¹?Ñ2Jò ðˆFð ð
  $×7Ñ7ÐØ—o‘oØ×!Ñ! 5¨&Ð2BÀCóˆGñ Ü$'¨°©
Ð4DÓ$Eò 8‘L�E˜5Ü˜D %§-¡-°Õ7ð8àˆùòe!
ùò%ùò:ùòDs   ›!L"Á%L'Å64L,Ê%L1c                 ó  — |j                  |¬«      }|s|duxs |j                  «       S | j                  j                  r:|s8|j                  «       xr& |j	                  |«      dkD  xs |j                  «       S |j	                  |«      dkD  S )z�
        Try to update the model. Return True if the model was updated (if an
        update query was done and a matching row was found in the DB).
        rB  Nr   )rF  ÚexistsrZ   Úselect_on_saveÚ_update)r;   r©  rE  r§  r  r_  rª  Úfiltereds           r<   r   zModel._do_update‘  s�   € ð
 —>‘> V�>Ó,ˆÙð !¨Ð,ÒA°·±Ó0AÐAØ�:‰:×$Ò$©]à—‘Ó!ò 	Dð ×!Ñ! &Ó)¨AÑ-ÒB°·±Ó1Bðð ×Ñ Ó'¨!Ñ+Ð+r?   c                 ó0   — |j                  | g||||¬«      S )z‹
        Do an INSERT. If returning_fields is defined then this method should
        return the newly created data for the model.
        )r|   r¬  rE  r‰  )Ú_insert)r;   rÔ   rE  r|   r¬  r‰  s         r<   r¥  zModel._do_insert­  s+   € ð
 �‰ØˆFØØ-ØØð ó 
ð 	
r?   c                 óŠ  — | j                   j                  D �]  }|r||vrŒ|j                  sŒ|j                  | «      sŒ*t	        | |j
                  d «      }|sŒD|j                  €L|j                  j                  s|j                  j                  |«       t        |›d|j
                  ›d�«      ‚t	        | |j                  «      |j                  v rt        | |j
                  |«       t	        ||j                  j                  «      t	        | |j                  «      k7  s�Œ|j                  | «       �Œ! | j                   j                  D ]r  }|r||vrŒ
|j                  sŒ|j                  | «      sŒ)t!        |d«      sŒ6|j#                  | d ¬«      }|sŒL|j                  �ŒYt        |› d|j
                  › d�«      ‚ y )NzB() prohibited to prevent data loss due to unsaved related object 'rg   Úfk_field)rž  )rZ   rô   rH  rI  rp   rH   r  r€   ÚmultiplerL  rÍ   rø   Úempty_valuesr³   r:  r{   rQ   rK  )r;   ru  r|   r§   rš   s        r<   rx  z&Model._prepare_related_fields_for_saveº  sŸ  € ð
 —Z‘Z×/Ñ/ó  	4ˆEÙ˜% vÑ-Øð × Ó  U§_¡_°TÕ%:Ü˜d E§J¡J°Ó5�ÙØð —6‘6�>à ×-Ñ-×6Ò6Ø×*Ñ*×>Ñ>¸sÔCÜ$â2@À%Ç*Ã*ðNóð ô ˜T 5§=¡=Ó1°U×5GÑ5GÑGô ˜D %§*¡*¨cÔ2ô ˜3 × 2Ñ 2× :Ñ :Ó;¼wØ˜%Ÿ-™-ó@ô ð ×-Ñ-¨dÖ3ðA 	4ðD —Z‘Z×.Ñ.ò 	ˆEÙ˜% vÑ-Øà×!Ó!Ø—O‘O DÕ)Ü˜E :Õ.à×,Ñ,¨T¸4Ð,Ó@�Ú˜3Ÿ6™6™>Ü$Ø)Ð*ð +3Ø38·:±:°,¸bðBóð ñ	r?   c                 óL  — | j                   €Ct        | j                  j                  ›d| j                  j                   j                  ›d�«      ‚|xs! t        j                  | j                  | ¬«      }t        || ¬«      }|j                  | g|¬«       |j                  «       S )Nz% object can't be deleted because its z attribute is set to None.rv  )rE  r�  )Úkeep_parents)r  rÍ   rZ   r"  rø   r   ry  r°   r   ÚcollectÚdelete)r;   rE  rº  Ú	collectors       r<   r¼  zModel.deleteð  sˆ   € Ø�7‰7ˆ?Üà"Ÿj™j×4Ó4°d·j±j·m±m×6KÓ6KðMóð ð ÒKœ×,Ñ,¨T¯^©^ÀdÔKˆÜ E°$Ô7ˆ	Ø×Ñ˜4˜&¨|ÐÔ<Ø×ÑÓ!Ð!r?   c              ƒ   óX   K  —  t        | j                  «      ||¬«      ƒ d {  –—† S 7 Œ­w)N)rE  rº  )r   r¼  )r;   rE  rº  s      r<   ÚadeletezModel.adeleteý  s.   è ø€ Ø/”] 4§;¡;Ó/ØØ%ô
÷ 
ð 	
ð 
ús   ‚!*£(¤*c                 ó¶   — t        | |j                  «      }t        t        |j                  «      «      }t        |j                  t        |«      |«      d¬«      S )NT)Ústrings_only)rp   rø   Údictr1   Úflatchoicesr0   rÉ   )r;   r§   rR   Úchoices_dicts       r<   Ú_get_FIELD_displayzModel._get_FIELD_display  sK   € Ü˜˜eŸm™mÓ,ˆÜœM¨%×*;Ñ*;Ó<Ó=ˆäØ×Ñœ]¨5Ó1°5Ó9Èô
ð 	
r?   c                 óä  — | j                   st        d«      ‚|rdnd}|rdnd}t        | |j                  «      }t	        j
                  |j                  |fd|› �| j                   fgt        j                  ¬«      }t	        j
                  ||j                  › d|› �|fgt        j                  ¬«      } | j                  j                  j                  | j                  j                  «      j                  di |¤Žj                  |«      j                  |›|j                  ›�d	|z  «      }	 |d
   S # t         $ r3 | j#                  d| j                  j$                  j&                  z  «      ‚w xY w)Nz8get_next/get_previous cannot be used on unsaved objects.ÚgtÚltÚ ú-Úpk__)Ú	connectorÚ__z%spkr   z!%s matching query does not exist.r9   )r  rÍ   rp   rø   r'   ÚcreaterH   ÚANDÚORr°   rÜ   rE  rò   rè   rF  Úorder_byrõ   r\   rZ   r"  )	r;   r§   rµ   r’   ÚopÚorderÚparamÚqÚqss	            r<   Ú_get_next_or_previous_by_FIELDz$Model._get_next_or_previous_by_FIELD  s:  € Ø�wŠwÜÐWÓXÐXÙ‰T $ˆÙ‘ 3ˆÜ˜˜eŸm™mÓ,ˆÜ�H‰H�u—z‘z 5Ð)¨d°2°$¨K¸¿¹Ð+AÐBÌaÏeÉeÔTˆÜ�H‰H�a˜UŸZ™Z˜L¨¨2¨$Ð/°Ð7Ð8ÄAÇDÁDÔIˆðˆD�N‰N×+Ñ+×1Ñ1°$·+±+·.±.ÓAß‰VñØñç‰V�A‹Yß‰X¡ u§z¢zÐ2°F¸U±NÓCð	 	ð	Ø�a‘5ˆLøÜò 	Ø×#Ñ#Ø3°d·n±n×6JÑ6J×6VÑ6VÑVóð ð	ús   Ä.D3 Ä3<E/c                 ó,  — d|z  }t        | |«      sø|rdnd}|rdnd}| j                  j                  }|j                  | «      }  | j                  j
                  j                  di |¤Žj                  di d|z   | j                  j
                  j                  d«      j                  di | j                  j                  j                  | j                  i¤Ži¤Žj                  |«      d d j                  «       }t        | ||«       t        | |«      S )	Nz__%s_order_cacherÇ  rÈ  r™  z-_orderz
_order__%sra  r9   )rQ   rZ   rÁ   r¡  r°   rÜ   rF  r  r  rH   rÑ  rÉ   r³   rp   )r;   rµ   Ú	cachenamerÒ  rÓ  Úorder_fieldr«  rš   s           r<   rÂ   z$Model._get_next_or_previous_in_order"  s  € Ø&¨Ñ0ˆ	Ü�t˜YÔ'Ù ‘ dˆBÙ '‘H¨YˆEØŸ*™*×:Ñ:ˆKØ%×BÑBÀ4ÓHˆKðÐ6�—‘×/Ñ/×6Ñ6ÑE¸ÑEß‘ñð %ØñØU˜dŸn™n×=Ñ=×DÑDÀXÓN×UÑUñ Ø#Ÿz™zŸ}™}×1Ñ1°4·7±7Ð;ñðñ÷ ‘˜%“  !ð	%÷ ‘“ð ô �D˜) SÔ)Ü�t˜YÓ'Ð'r?   c                 ór  — |€
t        «       }|xs | j                  }|j                  D �ci c]Y  }|j                  |vrI|j                  s=|j                  t        | |j                  «      x}rt        |d«      r|nt        ||«      “Œ[ }}d|vr#t        | j                  |j                  «      |d<   |S c c}w )NÚresolve_expressionr  )
r‚   rZ   rœ  rH   rú   rp   rø   rQ   r   r  )r;   rœ   Úexcluder§   rR   Ú	field_maps         r<   Ú_get_field_expression_mapzModel._get_field_expression_map9  s½   € Øˆ?Ü“eˆGØÒ!�t—z‘zˆð ×3Ñ3ö	
ð Ø�z‰z Ñ(°·²ð �J‰Jä$ T¨5¯=©=Ó9Ð9�EÐ9Ü˜EÐ#7Ô8ñ ô ˜5 %Ó(ñ	)ð	
ˆ	ð 	
ð �wÑÜ# D§G¡G¨T¯W©WÓ5ˆI�d‰OØÐùò	
s   «AB4c                 ó’   — | j                   €t        d| z  «      ‚t        | |j                  j	                  «       j
                  «      S )Nz9Unsaved model instance %r cannot be used in an ORM query.)r  rÍ   rp   r€   Úget_related_fieldrø   )r;   r§   s     r<   Úprepare_database_savezModel.prepare_database_saveK  sD   € Ø�7‰7ˆ?ÜØKÈdÑRóð ô �t˜U×/Ñ/×AÑAÓC×KÑKÓLÐLr?   c                  ó   — y)aI  
        Hook for doing any extra model-wide validation after clean() has been
        called on every field by self.clean_fields. Any ValidationError raised
        by this method will not be associated with a particular field; it will
        have a special-case association with the field defined by NON_FIELD_ERRORS.
        Nr9   r:   s    r<   ÚcleanzModel.cleanR  s   € ð 	r?   c                 óþ   — | j                  |¬«      \  }}| j                  |«      }| j                  |«      }|j                  «       D ]&  \  }}|j	                  |g «      j                  |«       Œ( |rt        |«      ‚y)zh
        Check unique constraints on the model and raise ValidationError if any
        failed.
        ©rÝ  N)Ú_get_unique_checksÚ_perform_unique_checksÚ_perform_date_checksro   Ú
setdefaultÚextendr   )r;   rÝ  Úunique_checksÚdate_checksÚerrorsÚdate_errorsro  rp  s           r<   Úvalidate_uniquezModel.validate_unique[  sˆ   € ð
 &*×%<Ñ%<ÀWÐ%<Ó%MÑ"ˆ�{à×,Ñ,¨]Ó;ˆØ×/Ñ/°Ó<ˆà×%Ñ%Ó'ò 	/‰DˆAˆqØ×Ñ˜a Ó$×+Ñ+¨AÕ.ð	/ñ Ü! &Ó)Ð)ð r?   c                 ó¼  ‡— ‰€
t        «       Šg }| j                  | j                  j                  fg}g }|r#| j                  | j                  j                  fg}| j                  j
                  D ]€  }|j                  j                  r'|j                  ||j                  j                  f«       |sŒC|j                  j                  sŒZ|j                  ||j                  j                  f«       Œ‚ |D ]=  \  }}|D ]3  }	t        ˆfd„|	D «       «      rŒ|j                  |t        |	«      f«       Œ5 Œ? |rM|D ]H  \  }}
|
D ]>  }t        ˆfd„|j                  D «       «      rŒ"|j                  ||j                  f«       Œ@ ŒJ g }| j                  | j                  j                  fg}| j                  j
                  D ])  }|j                  ||j                  j                  f«       Œ+ |D ]ê  \  }}|D ]à  }|j                  }|‰v rŒ|j                  r|j                  ||ff«       |j                  r-|j                  ‰vr|j                  |d||j                  f«       |j                  r-|j                  ‰vr|j                  |d||j                  f«       |j                  sŒ³|j                  ‰vsŒÂ|j                  |d||j                  f«       Œâ Œì ||fS )a{  
        Return a list of checks to perform. Since validate_unique() could be
        called from a ModelForm, some fields may have been excluded; we can't
        perform a unique check on a model that is missing fields involved
        in that check. Fields that did not validate should also be excluded,
        but they need to be passed in via the exclude argument.
        c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr²   r9   ©r`   rH   rÝ  s     €r<   rb   z+Model._get_unique_checks.<locals>.<genexpr>‡  s   øè ø€ Ò=¨t˜4 7œ?Ñ=ùó   ƒc              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr²   r9   ró  s     €r<   rb   z+Model._get_unique_checks.<locals>.<genexpr>Ž  s   øè ø€ ÒM°4˜t wœÑMùrô  ÚdateÚyearÚmonth)r‚   r°   rZ   Úunique_togetherÚtotal_unique_constraintsÚall_parentsr*  rÌ   ru   r|   ry   rH   ÚuniqueÚunique_for_dateÚunique_for_yearÚunique_for_month)r;   rÝ  Úinclude_meta_constraintsrì  Úunique_togethersÚconstraintsÚparent_classÚmodel_classrù  ÚcheckÚmodel_constraintsÚ
constraintrí  Úfields_with_classr|   r¡   rH   s    `               r<   rç  zModel._get_unique_checksk  sÙ  ø€ ð ˆ?Ü“eˆGØˆà!Ÿ^™^¨T¯Z©Z×-GÑ-GÐHÐIÐØˆÙ#Ø ŸN™N¨D¯J©J×,OÑ,OÐPÐQˆKØ ŸJ™J×2Ñ2ò 	ˆLØ×!Ñ!×1Ò1Ø ×'Ñ'Ø! <×#5Ñ#5×#EÑ#EÐFôò (¨L×,>Ñ,>×,WÓ,WØ×"Ñ"Ø! <×#5Ñ#5×#NÑ#NÐOõð	ð -=ò 	FÑ(ˆK˜Ø(ò F�ÜÓ=°uÔ=Õ=à!×(Ñ(¨+´u¸U³|Ð)DÕEñFð	Fñ $Ø2=ò OÑ.�Ð.Ø"3ò O�JÜÓM¸:×;LÑ;LÔMÕMØ%×,Ñ,¨k¸:×;LÑ;LÐ-MÕNñOðOð ˆð
 #Ÿn™n¨d¯j©j×.EÑ.EÐFÐGÐØ ŸJ™J×2Ñ2ò 	VˆLØ×$Ñ$ l°L×4FÑ4F×4SÑ4SÐ%TÕUð	Vð $5ò 	YÑˆK˜Øò Y�Ø—v‘v�Ø˜7‘?ØØ—8’8Ø!×(Ñ(¨+¸°wÐ)?Ô@Ø×$Ò$¨×):Ñ):À'Ñ)IØ×&Ñ&¨°V¸TÀ1×CTÑCTÐ'UÔVØ×$Ò$¨×):Ñ):À'Ñ)IØ×&Ñ&¨°V¸TÀ1×CTÑCTÐ'UÔVØ×%Ó%¨!×*<Ñ*<ÀGÒ*KØ×&Ñ&¨°W¸dÀA×DVÑDVÐ'WÕXñYð	Yð ˜kÐ)Ð)r?   c                 óè  — i }|D �]i  \  }}i }|D ]†  }| j                   j                  |«      }t        | |j                  «      }|�|dk(  rt        j
                  j                  rŒV|j                  r| j                  j                  sŒy||t        |«      <   Œˆ t        |«      t        |«      k7  rŒ¬ |j                  j                  di |¤Ž}	| j                  |j                   «      }
| j                  j                  s|
�|	j                  |
¬«      }	|	j!                  «       s�Œt        |«      dk(  r|d   }nt"        }|j%                  |g «      j'                  | j)                  ||«      «       �Œl |S )NrÉ  rB  ra  r   r9   )rZ   rþ   rp   rø   r   ÚfeaturesÚ!interprets_empty_strings_as_nullsr}  rò   ré   Ústrró   rÜ   rF  r8  rÝ  r¯  r	   rê  r*  Úunique_error_message)r;   rì  rî  r  Úunique_checkÚlookup_kwargsrY  r¡   Úlookup_valuerÖ  Úmodel_class_pkÚkeys               r<   rè  zModel._perform_unique_checksª  s_  € Øˆà)6ó *	Ñ%ˆK˜ð ˆMØ*ò >�
Ø—J‘J×(Ñ(¨Ó4�Ü& t¨Q¯Y©YÓ7�àÐ'Ø  BÒ&Ü"×+Ñ+×MÒMð Ø—=’=¨¯©×);Ò);àØ1=�œc *›oÒ.ð>ô  �<Ó ¤C¨Ó$6Ò6Øà4�×-Ñ-×4Ñ4ÑE°}ÑEˆBð "×-Ñ-¨k×.?Ñ.?Ó@ˆNØ—;‘;×%Ò%¨.Ð*DØ—Z‘Z >�ZÓ2�Ø�y‰yŽ{Ü�|Ó$¨Ò)Ø& q™/‘Cä*�CØ×!Ñ! # rÓ*×1Ñ1Ø×-Ñ-¨k¸<ÓHöðQ*	ðX ˆr?   c                 ó@  — i }|D �]  \  }}}}i }t        | |«      }|€Œ|dk(  r7|j                  |d|z  <   |j                  |d|z  <   |j                  |d|z  <   nt        ||«      ||›d|›�<   t        | |«      ||<    |j                  j
                  di |¤Ž}	| j                  j                  s(| j                  �|	j                  | j                  ¬«      }	|	j                  «       sŒä|j                  |g «      j                  | j                  |||«      «       �Œ |S )Nrö  z%s__dayz	%s__monthz%s__yearrÍ  rB  r9   )rp   Údayrø  r÷  rÜ   rF  rò   ré   r  rÝ  r¯  rê  r*  Údate_error_message)
r;   rí  rî  r  Úlookup_typer§   Ú
unique_forr  rö  rÖ  s
             r<   ré  zModel._perform_date_checksÛ  s,  € ØˆØ;Fó 	Ñ7ˆK˜ e¨ZØˆMô ˜4 Ó,ˆDØˆ|ØØ˜fÒ$Ø8<¿¹�˜i¨*Ñ4Ñ5Ø:>¿*¹*�˜k¨JÑ6Ñ7Ø9=¿¹�˜j¨:Ñ5Ò6äFMØ˜+óG�ª*±kÐBÑCô $+¨4°Ó#7ˆM˜%Ñ à4�×-Ñ-×4Ñ4ÑE°}ÑEˆBð —;‘;×%Ò%¨$¯'©'Ð*=Ø—Z‘Z 4§7¡7�ZÓ+�à�y‰y�{Ø×!Ñ! %¨Ó,×3Ñ3Ø×+Ñ+¨K¸À
ÓKöð1	ð6 ˆr?   c                 ó  — | j                   }|j                  |«      }t        |j                  d   d| t	        |j
                  «      ||t	        |j
                  «      |t	        |j                  |«      j
                  «      dœ¬«      S )Nrý  )r�   r‡   r  r§   Úfield_labelÚ
date_fieldÚdate_field_label©ÚmessageÚcodeÚparams)rZ   rþ   r   Úerror_messagesr2   Úverbose_name)r;   r  rY  r  rÐ   r§   s         r<   r  zModel.date_error_messageú  s|   € Ø�z‰zˆØ—‘˜zÓ*ˆÜØ×(Ñ(Ð):Ñ;Ø"àÜ& t×'8Ñ'8Ó9Ø*Ø#Ü'¨×(:Ñ(:Ó;Ø(Ü$,¨T¯^©^¸JÓ-G×-TÑ-TÓ$Uñô
ð 	
r?   c                 óÂ  — |j                   }| |t        |j                  «      |dœ}t        |«      dk(  rG|j	                  |d   «      }t        |j                  «      |d<   t        |j                  d   d|¬«      S |D �cg c]&  }t        |j	                  |«      j                  «      ‘Œ( }}t        |t        d«      «      |d<   t        t        d	«      d
|¬«      S c c}w )N)r�   r  r‡   r  ra  r   r  rü  r  ÚandÚfield_labelsz9%(model_name)s with this %(field_labels)s already exists.rù  )	rZ   r2   r!  ró   rþ   r   r   r3   Ú_)r;   r  r  rÐ   r  r§   r¡   r$  s           r<   r  zModel.unique_error_message  sî   € Ø× Ñ ˆð Ø&Ü" 4×#4Ñ#4Ó5Ø(ñ	
ˆô ˆ|Ó Ò!Ø—N‘N <°¡?Ó3ˆEÜ$,¨U×-?Ñ-?Ó$@ˆF�=Ñ!Ü"Ø×,Ñ,¨XÑ6ØØôð ð COöØ=>”˜Ÿ™¨Ó*×7Ñ7Õ8ðˆLð ô &3°<ÄÀ5ÃÓ%JˆF�>Ñ"Ü"ÜÐUÓVØ&Øôð ùò	s   Â +Cc                 óþ   — | j                   | j                  j                  fg}| j                  j                  D ]@  }|j                  j                  sŒ|j	                  ||j                  j                  f«       ŒB |S r²   )r°   rZ   r  rû  r*  )r;   r  r  s      r<   Úget_constraintszModel.get_constraints+  sn   € ØŸ™¨¯
©
×(>Ñ(>Ð?Ð@ˆØ ŸJ™J×2Ñ2ò 	SˆLØ×!Ñ!×-Ó-Ø×"Ñ" L°,×2DÑ2D×2PÑ2PÐ#QÕRð	Sð Ðr?   c                 óÎ  — | j                  «       }t        j                  | j                  | ¬«      }i }|D ]"  \  }}|D ]  }	 |j	                  || ||¬«       Œ Œ$ |rt        |«      ‚y # t
        $ rr}t        |dd «      dk(  rGt        |j                  «      dk(  r/|j                  |j                  d   g «      j                  |«       n|j                  |«      }Y d }~Œ¡d }~ww xY w)Nrv  )rÝ  rE  r  rü  ra  r   )r'  r   ry  r°   Úvalidater   rp   ró   r|   rê  r*  Úupdate_error_dict)	r;   rÝ  r  rE  rî  r  r  r  Úes	            r<   Úvalidate_constraintszModel.validate_constraints2  sî   € Ø×*Ñ*Ó,ˆÜ×#Ñ# D§N¡N¸TÔBˆàˆØ.9ò 	=Ñ*ˆKÐ*Ø/ò 
=�
ð	=Ø×'Ñ'¨°TÀ7ÐRWÐ'ÕXñ
=ð	=ñ Ü! &Ó)Ð)ð øô 'ò =ä  6¨4Ó0°HÒ<Ü 
× 1Ñ 1Ó2°aÒ7à×)Ñ)¨*×*;Ñ*;¸AÑ*>ÀÓC×JÑJÈ1ÕMà!"×!4Ñ!4°VÓ!<˜ÿøð=ús   ÁA)Á)	C$Á2A(CÃC$c                 óÂ  — i }|€t        «       }nt        |«      }	 | j                  |¬«       	 | j	                  «        |r:|D ]"  }|t
        k7  sŒ||vsŒ|j                  |«       Œ$ 	 | j                  |¬«       |r:|D ]"  }|t
        k7  sŒ||vsŒ|j                  |«       Œ$ 	 | j                  |¬«       |rt        |«      ‚y# t        $ r}|j                  |«      }Y d}~Œ¶d}~ww xY w# t        $ r}|j                  |«      }Y d}~ŒÌd}~ww xY w# t        $ r}|j                  |«      }Y d}~Œ·d}~ww xY w# t        $ r}|j                  |«      }Y d}~Œ¢d}~ww xY w)z®
        Call clean_fields(), clean(), validate_unique(), and
        validate_constraints() on the model. Raise a ValidationError for any
        errors that occur.
        Nræ  )	r‚   Úclean_fieldsr   r*  rä  r	   r†   rð  r,  )r;   rÝ  rð  r,  rî  r+  rH   s          r<   Ú
full_cleanzModel.full_cleanF  sh  € ð ˆØˆ?Ü“e‰Gä˜'“lˆGð	1Ø×Ñ gÐÔ.ð	1Ø�J‰JŒLñ
 Øò &�ØÔ+Ó+°¸GÒ0CØ—K‘K Õ%ð&ð5Ø×$Ñ$¨WÐ$Ô5ñ
  Øò &�ØÔ+Ó+°¸GÒ0CØ—K‘K Õ%ð&ð5Ø×)Ñ)°'Ð)Ô:ñ Ü! &Ó)Ð)ð øô= ò 	1Ø×(Ñ(¨Ó0�Fûð	1ûô ò 	1Ø×(Ñ(¨Ó0�Fûð	1ûô #ò 5Ø×,Ñ,¨VÓ4•ûð5ûô #ò 5Ø×,Ñ,¨VÓ4•ûð5ús^   œC ¯C, Á)D Â%D: Ã	C)ÃC$Ã$C)Ã,	DÃ5DÄDÄ	D7ÄD2Ä2D7Ä:	EÅEÅEc           	      óØ  — |€
t        «       }i }| j                  j                  D ]‡  }|j                  |v s|j                  rŒt        | |j                  «      }|j                  r||j                  v rŒOt        |t        «      rŒ`	 t        | |j                  |j                  || «      «       Œ‰ |rt        |«      ‚y# t        $ r#}|j                  ||j                  <   Y d}~Œ¿d}~ww xY w)z
        Clean all fields and raise a ValidationError containing a dict
        of all validation errors if any occur.
        N)r‚   rZ   r|   rH   rú   rp   rø   Úblankr¸  rm   r   r³   rä  r   Ú
error_list)r;   rÝ  rî  r¡   Ú	raw_valuer+  s         r<   r.  zModel.clean_fieldsu  sÏ   € ð
 ˆ?Ü“eˆGàˆØ—‘×"Ñ"ò 	.ˆAØ�v‰v˜Ñ  A§K¢KØô    a§i¡iÓ0ˆIØ�wŠw˜9¨¯©Ñ6Øä˜)¤_Ô5Øð.Ü˜˜aŸi™i¨¯©°¸DÓ)AÕBð	.ñ  Ü! &Ó)Ð)ð øô #ò .Ø!"§¡��q—v‘v–ûð.ús   Â'B=Â=	C)ÃC$Ã$C)c                 ó  — g | j                  «       ¢| j                  «       ¢ | j                  di |¤Ž¢}| j                  j                  �s:|j                  d«      xs g }|g  | j                  di |¤Ž¢| j                  «       ¢| j                  |«      ¢z  }g | j                  «       ¢| j                  «       ¢| j                  «       ¢| j                  «       ¢| j                  «       ¢­}|j                  |«       |s|j                  | j                  «       «       |g | j!                  «       ¢| j#                  |«      ¢| j%                  «       ¢| j'                  |«      ¢| j)                  «       ¢| j+                  |«      ¢z  }|S )NÚ	databasesr9   )Ú_check_swappableÚ_check_modelÚ_check_managersrZ   rw   rÉ   Ú_check_fieldsÚ$_check_m2m_through_same_relationshipÚ_check_long_column_namesÚ_check_id_fieldÚ_check_field_name_clashesÚ#_check_model_name_db_lookup_clashesÚ3_check_property_name_related_field_accessor_clashesÚ_check_single_primary_keyrë  Ú_check_column_name_clashesÚ_check_unique_togetherÚ_check_indexesÚ_check_orderingÚ_check_constraintsÚ_check_default_pkÚ_check_db_table_comment)r�   r’   rî  r5  Úclash_errorss        r<   r  zModel.check‘  sÈ  € ð
Ø×!Ñ!Ó#ð
à×ÑÓð
ð !ˆS× Ñ Ñ* 6Ñ*ð
ˆð
 �y‰y× Ó ØŸ
™
 ;Ó/Ò5°2ˆIØð Ø"�×"Ñ"Ñ, VÑ,ðà×9Ñ9Ó;ðð ×-Ñ-¨iÓ8ðñ ˆFð
Ø×$Ñ$Ó&ðà×.Ñ.Ó0ðð ×8Ñ8Ó:ðð ×HÑHÓJð	ð
 ×.Ñ.Ó0ñˆLð �M‰M˜,Ô'ñ  Ø—‘˜c×<Ñ<Ó>Ô?Øð Ø×+Ñ+Ó-ðà×#Ñ# IÓ.ðð ×$Ñ$Ó&ðð ×'Ñ'¨	Ó2ð	ð
 ×&Ñ&Ó(ðð ×,Ñ,¨YÓ7ðñ ˆFð ˆr?   c                 óV  — | j                   j                  �s| j                   j                  j                  rñt	        | j                   j                  t
        «      r*| j                   j                  j                  j                  s£t        j                  d«      sŽ| j                   j                  rx| j                   j                  j                  sXt        j                  dt        j                  › d�d| j                   j                  j                  j                   › d�| d¬«      gS g S )NÚDEFAULT_AUTO_FIELDzPAuto-created primary key used when not defining a primary key type, by default 'rg   z0Configure the DEFAULT_AUTO_FIELD setting or the zh.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.zmodels.W042©Úhintrš   Úid)rZ   rY   r  ri   rm   r    r€   rj   r   Úis_overriddenrž   Ú!_is_default_auto_field_overriddenr   ÚWarningrJ  r°   rD   rØ   s    r<   rF  zModel._check_default_pk¶  sê   € ð —	‘	×"Ó"Ø—	‘	—‘×)Ò)ô ˜3Ÿ9™9Ÿ<™<¬Ô7Ø—I‘I—L‘L×-Ñ-×9Ò9ä×*Ñ*Ð+?Ô@Ø—	‘	×$Ò$Ø—I‘I×(Ñ(×JÒJô —‘ðä ×3Ñ3Ð4°Bð8ð KØŸ9™9×/Ñ/×9Ñ9×FÑFÐGð HNðOð
 Ø$ôðð ð ˆ	r?   c                 óP  — | j                   j                  sg S g }|D ]†  }t        j                  || «      sŒt        |   }|j
                  j                  rŒ:d| j                   j                  v rŒS|j                  t        j                  |j                  › d�| d¬«      «       Œˆ |S )NÚsupports_commentsz8 does not support comments on tables (db_table_comment).zmodels.W046©rš   rM  )rZ   Údb_table_commentr   Úallow_migrate_modelr   r
  rR  Úrequired_db_featuresr*  r   rP  Údisplay_name)r�   r5  rî  rè   r   s        r<   rG  zModel._check_db_table_commentÖ  s    € à�y‰y×)Ò)ØˆIØˆØò 	ˆBÜ×-Ñ-¨b°#Ô6ØÜ$ R™ˆJà×#Ñ#×5Ó5Ø&¨#¯)©)×*HÑ*HÒHà—‘Ü—N‘NØ%×2Ñ2Ð3ð 45ð 6àØ(ô	õð	ð  ˆr?   c                 ó  — g }| j                   j                  r,	 t        j                  | j                   j                  «       |S |S # t        $ rA |j                  t        j                  d| j                   j                  z  d¬«      «       Y |S t        $ rp | j                   j                  j                  d«      \  }}|j                  t        j                  d| j                   j                  ›d|›d|›d�d¬«      «       Y |S w xY w)	z"Check if the swapped model exists.z-'%s' is not of the form 'app_label.app_name'.zmodels.E001©rM  rF   rd  z' references 'z0', which has not been installed, or is abstract.zmodels.E002)rZ   rw   r   Ú	get_modelrÍ   r*  r   ÚErrorÚ	swappableÚLookupErrorÚsplit)r�   rî  r[   r‡   s       r<   r6  zModel._check_swappableí  sê   € ð ˆØ�9‰9×ÒðÜ—‘˜sŸy™y×0Ñ0Ô1ð& ˆˆvˆøô% ò Ø—‘Ü—L‘LØGØŸ)™)×-Ñ-ñ.à(ôõð" ˆô ò 	Ø(+¯	©	×(9Ñ(9×(?Ñ(?ÀÓ(DÑ%�	˜:Ø—‘Ü—L’Lð Ÿ9™9×.Ó.²	º:ðGð )ô	õð ˆð	ús   š)A ÁADÂA4DÄDc                 óô   — g }| j                   j                  r_| j                   j                  s| j                   j                  r3|j	                  t        j                  d| j                  z  d¬«      «       |S )Nz'Proxy model '%s' contains model fields.zmodels.E017rY  )rZ   rv   ry   rz   r*  r   r[  rB   ©r�   rî  s     r<   r7  zModel._check_model  sY   € àˆØ�9‰9�?Š?Ø�y‰y×%Ò%¨¯©×)EÒ)EØ—‘Ü—L‘LØAÀCÇLÁLÑPØ(ôôð ˆr?   c                 ó‚   — g }| j                   j                  D ]#  }|j                   |j                  di |¤Ž«       Œ% |S )zPerform all manager checks.r9   )rZ   rË   rë  r  )r�   r’   rî  rÔ   s       r<   r8  zModel._check_managers  sA   € ð ˆØ—y‘y×)Ñ)ò 	3ˆGØ�M‰M˜-˜'Ÿ-™-Ñ1¨&Ñ1Õ2ð	3àˆr?   c                 óþ   — g }| j                   j                  D ]#  }|j                   |j                  di |¤Ž«       Œ% | j                   j                  D ]%  }|j                   |j                  dd| i|¤Ž«       Œ' |S )zPerform all field checks.Ú
from_modelr9   )rZ   ry   rë  r  rz   )r�   r’   rî  r§   s       r<   r9  zModel._check_fields  s{   € ð ˆØ—Y‘Y×+Ñ+ò 	1ˆEØ�M‰M˜+˜%Ÿ+™+Ñ/¨Ñ/Õ0ð	1à—Y‘Y×1Ñ1ò 	AˆEØ�M‰M˜+˜%Ÿ+™+Ñ?°Ð?¸Ñ?Õ@ð	Aàˆr?   c                 óÀ  — g }g }| j                   j                  }d„ |D «       }d„ |D «       }|D ]¬  }|j                  j                  | |j                  j                  |j                  j
                  f}||v rS|j                  t        j                  d|j                  j                  j                   j                  z  | d¬«      «       Œœ|j                  |«       Œ® |S )zBCheck if no relationship model is used by more than one m2m field.c              3   ój   K  — | ]+  }t        |j                  j                  t        «      sŒ(|–— Œ- y ­wr²   )rm   r€   r�   rU   rº   s     r<   rb   z=Model._check_m2m_through_same_relationship.<locals>.<genexpr>1  s#   è ø€ ÒS˜¤z°!·.±.×2FÑ2FÌ	Õ'R”!ÑSùó   ‚)3¬3c              3   ój   K  — | ]+  }t        |j                  j                  t        «      sŒ(|–— Œ- y ­wr²   )rm   r€   rw  rU   rº   s     r<   rb   z=Model._check_m2m_through_same_relationship.<locals>.<genexpr>4  s#   è ø€ ÒU˜¤z°!·.±.×2HÑ2HÌ)Õ'T”!ÑUùrf  zWThe model has two identical many-to-many relations through the intermediate model '%s'.zmodels.E003rS  )
rZ   rz   r€   r�   rw  Úthrough_fieldsr*  r   r[  rs   )r�   rî  Úseen_intermediary_signaturesr|   r¡   Ú	signatures         r<   r:  z*Model._check_m2m_through_same_relationship'  sÝ   € ð ˆØ')Ð$à—‘×-Ñ-ˆñ T˜VÔSˆñ V˜VÔUˆàò 	?ˆAà—‘×$Ñ$ØØ—‘×&Ñ&Ø—‘×-Ñ-ð	ˆIð Ð8Ñ8Ø—‘Ü—L‘Lð?àŸ.™.×0Ñ0×6Ñ6×<Ñ<ñ=ð  Ø(ôõð -×3Ñ3°IÕ>ð%	?ð& ˆr?   c                 óD  — | j                   j                  D �cg c].  }|j                  dk(  sŒ|| j                   j                  k7  sŒ-|‘Œ0 }}|rK|d   j                  s<| j                   j                  j                  dk(  rt        j                  d| d¬«      gS g S c c}w )z%Check if `id` field is a primary key.rM  r   zP'id' can only be used as a field name if the field also sets 'primary_key=True'.zmodels.E004rS  )rZ   ry   rH   r  r}  r   r[  )r�   r¡   r|   s      r<   r<  zModel._check_id_fieldK  s”   € ð —y‘y×-Ñ-ö
Ø°·±¸4³ÀAÈÏÉÏÉÓDUŠAð
ˆð 
ñ ˜& ™)×/Ò/°C·I±I·L±L×4EÑ4EÈÒ4Mä—‘ð/àØ$ô	ðð ð ˆIùò
s   ™B®BÁBc                 ó
  — g }i }| j                   j                  D ]é  }|j                   j                  D ]Î  }|j                  |j                  «      xs |j                  |j
                  «      xs d}|rp|j                  t        j                  d|j                  ›d|j                  j                   ›d|j                  ›d|j                  j                   ›d�	| d¬«      «       |||j                  <   |||j
                  <   ŒÐ Œë | j                   j                  D ]5  }|j                   j                  «       D ]  }||vsŒ|||j                  <   Œ Œ7 | j                   j                  j                  «       D ]€  }|sŒ|j                  |j                  «      xs d}|sŒ(|j                  t        j                  d|j                  › d|j                  › d|j                  j                   › d�| d	¬«      «       Œ‚ | j                   j                  D ]î  }|j                  |j                  «      xs |j                  |j
                  «      xs d}|j                  d
k(  xr$ |xr  |j                  d
k(  xr |j                  | k(  }|r[|sY|j                  t        j                  d|j                  ›d|j                  ›d|j                  j                   ›d�|d	¬«      «       |||j                  <   |||j
                  <   Œð |S )z2Forbid field shadowing in multi-table inheritance.NzThe field 'z' from parent model 'z' clashes with the field 'rg   zmodels.E005rS  z' from model 'zmodels.E006rM  )rZ   rû  ry   rÉ   rH   rø   r*  r   r[  r�   Ú
get_fieldsrˆ   r  )r�   rî  Úused_fieldsr¥   r¡   Úclashrj   Úid_conflicts           r<   r=  zModel._check_field_name_clashes^  sŸ  € ð ˆØˆð —i‘i×+Ñ+ò 	+ˆFØ—\‘\×.Ñ.ò +�Ø#Ÿ™¨¯©Ó/ÒU°;·?±?À1Ç9Á9Ó3MÒUÐQU�ÙØ—M‘MÜŸšð  %Ÿz›z¨5¯;©;×+<Ó+<¸a¿f»fÀaÇgÁgÇmÃmðUð !$Ø,ôô	ð '(�˜AŸF™FÑ#Ø)*�˜AŸI™IÒ&ñ+ð	+ð( —i‘i×+Ñ+ò 	,ˆFØ—\‘\×,Ñ,Ó.ò ,�Ø˜KÒ'Ø*+�K §¡Ò'ñ,ð	,ð Ÿ9™9×,Ñ,×3Ñ3Ó5ò 	ˆKÙØØ—O‘O K×$4Ñ$4Ó5Ò=¸ˆEÚØ—‘Ü—L‘LØ% k×&6Ñ&6Ð%7ð 8Ø!ŸJ™J˜< ~°e·k±k×6GÑ6GÐ5HÈðLàØ(ô	õð	ð —‘×'Ñ'ò 	'ˆAØ—O‘O A§F¡FÓ+ÒQ¨{¯©¸q¿y¹yÓ/IÒQÈTˆEð —‘˜$‘ÒV 5ÒV¨U¯Z©Z¸4Ñ-?ÒVÀEÇKÁKÐSVÑDVð ñ ™[Ø—‘Ü—L’Là./¯f«f°e·j³jÀ%Ç+Á+×BSÓBSðUàØ(ô	ôð #$ˆK˜Ÿ™ÑØ%&ˆK˜Ÿ	™	Ò"ð'	'ð* ˆr?   c           
      óþ   — g }g }| j                   j                  D ]_  }|j                  }|r>||v r:|j                  t	        j
                  d|j                  ›d|›d�d| d¬«      «       ŒO|j                  |«       Œa |S )NzField 'z' has column name 'z ' that is used by another field.z$Specify a 'db_column' for the field.zmodels.E007rK  )rZ   ry   rù   r*  r   r[  rH   )r�   Úused_column_namesrî  r¡   Úcolumn_names        r<   rA  z Model._check_column_name_clashes¤  s…   € ð ÐØˆà—‘×'Ñ'ò 	6ˆAØŸ(™(ˆKñ ˜{Ð.?Ñ?Ø—‘Ü—L’Là,-¯F«F²KðAàCØØ(ôõð "×(Ñ(¨Õ5ð	6ð" ˆr?   c                 ó"  — g }| j                   }|j                  d«      s|j                  d«      r,|j                  t	        j
                  d|z  | d¬«      «       |S t        |v r*|j                  t	        j
                  d|z  | d¬«      «       |S )Nr%  zgThe model name '%s' cannot start or end with an underscore as it collides with the query lookup syntax.zmodels.E023rS  zbThe model name '%s' cannot contain double underscores as it collides with the query lookup syntax.zmodels.E024)rB   Ú
startswithÚendswithr*  r   r[  r   )r�   rî  r‡   s      r<   r>  z)Model._check_model_name_db_lookup_clashes½  s�   € àˆØ—\‘\ˆ
Ø× Ñ  Ô%¨×)<Ñ)<¸SÔ)AØ�M‰MÜ—‘ðCØEOñPàØ$ô	ôð" ˆô ˜:Ñ%Ø�M‰MÜ—‘ð@ØBLñMàØ$ô	ôð ˆr?   c                 óè   — g }| j                   j                  }d„ | j                   j                  d¬«      D «       }|D ]1  }||v sŒ|j                  t	        j
                  d|z  | d¬«      «       Œ3 |S )Nc              3   ód   K  — | ](  }|j                   r|j                  �|j                  –— Œ* y ­wr²   )rH  Úrelated_modelrø   rº   s     r<   rb   zLModel._check_property_name_related_field_accessor_clashes.<locals>.<genexpr>Ù  s,   è ø€ ò #
àØ�}Š} §¡Ð!<ð �I�Iñ#
ùs   ‚.0F©Úreversez8The property '%s' clashes with a related field accessor.zmodels.E025rS  )rZ   rý   Ú_get_fieldsr*  r   r[  )r�   rî  r  Úrelated_field_accessorsÚaccessors        r<   r?  z9Model._check_property_name_related_field_accessor_clashesÕ  sƒ   € àˆØŸ™×2Ñ2ˆñ#
à—Y‘Y×*Ñ*°5Ð*Ó9ô#
Ðð
 0ò 		ˆHØ˜>Ò)Ø—‘Ü—L‘Lð$Ø&.ñ/àØ(ô	õð		ð ˆr?   c                 óª   — g }t        d„ | j                  j                  D «       «      dkD  r'|j                  t	        j
                  d| d¬«      «       |S )Nc              3   ó:   K  — | ]  }|j                   sŒd –— Œ y­w)ra  N)r}  rº   s     r<   rb   z2Model._check_single_primary_key.<locals>.<genexpr>í  s   è ø€ ÒB�Q°A·M³MŒqÑBùs   ‚”ra  zBThe model cannot have more than one field with 'primary_key=True'.zmodels.E026rS  )ÚsumrZ   ry   r*  r   r[  r`  s     r<   r@  zModel._check_single_primary_keyê  sN   € àˆÜÑB˜#Ÿ)™)×0Ñ0ÔBÓBÀQÒFØ�M‰MÜ—‘ð*àØ$ô	ôð ˆr?   c                 ó†  — t        | j                  j                  t        t        f«      st        j                  d| d¬«      gS t        d„ | j                  j                  D «       «      rt        j                  d| d¬«      gS g }| j                  j                  D ]#  }|j                  | j                  |d«      «       Œ% |S )z,Check the value of "unique_together" option.z*'unique_together' must be a list or tuple.zmodels.E010rS  c              3   óJ   K  — | ]  }t        |t        t        f«       –— Œ y ­wr²   )rm   ru   Úlist)r`   r|   s     r<   rb   z/Model._check_unique_together.<locals>.<genexpr>  s&   è ø€ ò 
àô ˜6¤E¬4 =Ó1Ô1ñ
ùs   ‚!#z7All 'unique_together' elements must be lists or tuples.zmodels.E011rù  )
rm   rZ   rù  ru   r„  r   r[  rÌ   rë  Ú_check_local_fields)r�   rî  r|   s      r<   rB  zModel._check_unique_togetherø  s¾   € ô ˜#Ÿ)™)×3Ñ3´e¼T°]ÔCä—‘Ø@ØØ$ôðð ô ñ 
àŸ)™)×3Ñ3ô
ô 
ô
 —‘ØMØØ$ôðð ð ˆFØŸ)™)×3Ñ3ò R�Ø—‘˜c×5Ñ5°fÐ>OÓPÕQðRàˆMr?   c           	      óP  — g }t        «       }| j                  j                  D �]  }|j                  d   dk(  s|j                  d   j	                  «       r4|j                  t        j                  d|j                  z  | d¬«      «       t        |j                  «      |j                  kD  r@|j                  t        j                  d|j                  |j                  fz  | d¬«      «       |j                  sŒÖ|j                  D ])  }|j                  d„ | j                  |«      D «       «       Œ+ �Œ |D �]Ä  }t        j                  || «      sŒt         |   }|j"                  j$                  ssd	| j                  j&                  v s[t)        d
„ | j                  j                  D «       «      r5|j                  t        j*                  d|j,                  z  d| d¬«      «       |j"                  j.                  ssd| j                  j&                  v s[t)        d„ | j                  j                  D «       «      r5|j                  t        j*                  d|j,                  z  d| d¬«      «       |j"                  j0                  r�ŒNd| j                  j&                  v r�Œht)        d„ | j                  j                  D «       «      s�Œ�|j                  t        j*                  d|j,                  z  d| d¬«      «       �ŒÇ | j                  j                  D ���	cg c]  }|j2                  D ]  \  }}	|‘Œ	 Œ }
}}}	|
| j                  j                  D ��cg c]  }|j4                  D ]  }|‘Œ Œ c}}z  }
|
|z  }
|j7                  | j9                  |
d«      «       |S c c}	}}w c c}}w )z/Check fields, names, and conditions of indexes.r   r%  z@The index name '%s' cannot start with an underscore or a number.zmodels.E033rS  z8The index name '%s' cannot be longer than %d characters.zmodels.E034c              3   ó&   K  — | ]	  }|d    –— Œ y­w)r   Nr9   )r`   Úrefs     r<   rb   z'Model._check_indexes.<locals>.<genexpr>2  s   è ø€ ò &Ø#&˜˜A�ñ&ùs   ‚Úsupports_partial_indexesc              3   ó8   K  — | ]  }|j                   d u–— Œ y ­wr²   )Ú	condition©r`   rÕ   s     r<   rb   z'Model._check_indexes.<locals>.<genexpr><  s   è ø€ ÒQ°e�e—o‘o¨TÔ1ÑQùs   ‚z,%s does not support indexes with conditions.zLConditions will be ignored. Silence this warning if you don't care about it.zmodels.W037rK  Úsupports_covering_indexesc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr²   )ÚincluderŒ  s     r<   rb   z'Model._check_indexes.<locals>.<genexpr>L  s   è ø€ ÒC¨�e—m•mÑCùr»   z1%s does not support indexes with non-key columns.zQNon-key columns will be ignored. Silence this warning if you don't care about it.zmodels.W040Úsupports_expression_indexesc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr²   )Úcontains_expressionsrŒ  s     r<   rb   z'Model._check_indexes.<locals>.<genexpr>\  s   è ø€ ÒP°U�e×0Õ0ÑPùr»   z+%s does not support indexes on expressions.zKAn index won't be created. Silence this warning if you don't care about it.zmodels.W043r�   )r‚   rZ   r�   rH   Úisdigitr*  r   r[  ró   Úmax_name_lengthr’  Úexpressionsr„   Ú_get_expr_referencesr   rU  r   r
  r‰  rV  rÌ   rP  rW  r�  r�  Úfields_ordersr�  rë  r…  )r�   r5  rî  Ú
referencesrÕ   Ú
expressionrè   r   r§   r%  r|   r�  s               r<   rC  zModel._check_indexes  sB  € ð ˆÜ“Uˆ
Ø—Y‘Y×&Ñ&ó 	ˆEð �z‰z˜!‰} Ò# u§z¡z°!¡}×'<Ñ'<Ô'>Ø—‘Ü—L‘Lð'Ø).¯©ñ4àØ(ô	ôô �5—:‘:‹ ×!6Ñ!6Ò6Ø—‘Ü—L‘Lð&Ø).¯©°U×5JÑ5JÐ(KñLàØ(ô	ôð ×)Ó)Ø"'×"3Ñ"3ò �JØ×%Ñ%ñ &Ø*-×*BÑ*BÀ:Ó*Nô&õ òð-	ð4 ó 3	ˆBÜ×-Ñ-¨b°#Ô6ØÜ$ R™ˆJà×#Ñ#×<Ò<Ø-°·±×1OÑ1OÑOÜÑQ¸s¿y¹y×?PÑ?PÔQÔQØ—‘Ü—N‘NØFØ$×1Ñ1ñ2ð:ð  Ø(ô	ôð ×#Ñ#×=Ò=Ø.°#·)±)×2PÑ2PÑPÜÑC°·±×1BÑ1BÔCÔCØ—‘Ü—N‘NØKØ$×1Ñ1ñ2ðBð  Ø(ô	ôð ×#Ñ#×?Ô?Ø0°C·I±I×4RÑ4RÓRÜÑP¸c¿i¹i×>OÑ>OÔPÖPØ—‘Ü—N‘NØEØ$×1Ñ1ñ2ð:ð  Ø(ô	öðQ3	ðj  #Ÿy™y×0Ñ0÷
ð 
ØÀ×ATÑATò
Ù5=°U¸AŠEð
Øð
ˆò 
ð 	¨¯	©	×(9Ñ(9×W˜uÈÏÉÒW¸g’7ÐW�7ÓWÑWˆØ�*ÑˆØ�‰�c×-Ñ-¨f°iÓ@ÔAØˆùô
ùó Xs   ÌNÍN"c                 ó¨  — ddl m} i }| j                  j                  d¬«      D ]-  }|||j                  <   t        |d«      sŒ|||j                  <   Œ/ g }|D ]¹  }	 ||   }t        |j                  |j                  «      r2|j                  t        j                  d|›d|›d|›d	�| d
¬«      «       Œ[|| j                  j                  vsŒt|j                  t        j                  d|›d|›d| j                  j                  ›d	�d| d¬«      «       Œ» |S # t        $ r1 |j                  t        j                  d|›d|›d	�| d¬«      «       Y Œ÷w xY w)Nr   )ÚmodelsFrz  rø   rd  z' refers to a ManyToManyField 'z.', but ManyToManyFields are not permitted in 'rg   zmodels.E013rS  z' refers to field 'z' which is not local to model 'z4This issue may be caused by multi-table inheritance.zmodels.E016rK  z#' refers to the nonexistent field 'zmodels.E012)Ú	django.dbr›  rZ   r|  rH   rQ   rø   rm   r€   ÚManyToManyRelr*  r   r[  ry   r"  rû   )r�   r|   Úoptionr›  Úforward_fields_mapr§   rî  rY  s           r<   r…  zModel._check_local_fieldsq  sV  € å$ð  ÐØ—Y‘Y×*Ñ*°5Ð*Ó9ò 	:ˆEØ-2Ð˜uŸz™zÑ*Ü�u˜iÕ(Ø49Ð" 5§=¡=Ò1ð	:ð
 ˆØ ò '	ˆJð&Ø*¨:Ñ6�ô ˜e×0Ñ0°&×2FÑ2FÔGØ—M‘MÜŸšò !'Ú *Ú &ðð !$Ø,ô
õð  #§)¡)×"8Ñ"8Ò8Ø—M‘MÜŸšâ'-ªz¸3¿9¹9×;PÓ;PðRà!WØ #Ø,ôõð?'	ðP ˆøôK ò Ø—‘Ü—L’Lò #Ú&ðð
  Ø(ôö
ðús   ÁDÄ7EÅEc           
      óP  — | j                   j                  rt        j                  d| d¬«      gS | j                   j                  s| j                   j
                  sg S t        | j                   j
                  t        t        f«      st        j                  d| d¬«      gS g }| j                   j
                  }d„ |D «       }d„ |D «       }g }g }|D ]-  }t        |v r|j                  |«       Œ|j                  |«       Œ/ |}|D ]Š  }| }d}|j                  t        «      D ]l  }		 |	d	k(  r|j                   j                  }n|j                   j                  |	«      }|j                  r$|j                  d
   j                   j"                  }nd}Œn ŒŒ |D �ch c]
  }|d	k7  sŒ	|’Œ }}g }
| j                   }t-        t/        j0                  d„ t/        |j2                  |j4                  «      D «       «      «      }|
j7                  ||z
  «       |
D ],  }|j                  t        j                  d|z  | d¬«      «       Œ. |S # t$        t&        f$ rR |�"|j)                  |	«      €;|j+                  |	«      €*|j                  t        j                  d|z  | d¬«      «       Y �Œ~w xY wc c}w )ze
        Check "ordering" option -- is it a list of strings and do all fields
        exist?
        z?'ordering' and 'order_with_respect_to' cannot be used together.zmodels.E021rS  zQ'ordering' must be a tuple or list (even if you want to order by only one field).zmodels.E014c              3   óN   K  — | ]  }t        |t        «      sŒ|d k7  sŒ|–— Œ y­w)ú?N)rm   r  rº   s     r<   rb   z(Model._check_ordering.<locals>.<genexpr>È  s   è ø€ ÒG˜¤z°!´SÕ'9¸aÀ3»h”!ÑGùs   ‚%˜%ž%c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­w)rÊ  N)Úremoveprefixrº   s     r<   rb   z(Model._check_ordering.<locals>.<genexpr>Ë  s   è ø€ Ò6¨!�!—.‘. ×%Ñ6ùs   ‚Nr  éÿÿÿÿzJ'ordering' refers to the nonexistent field, related field, or lookup '%s'.zmodels.E015c              3   ó²   K  — | ]O  }|j                   r|j                  r|j                  |j                  fn|j                  j                  «       f–— ŒQ y ­wr²   )ri   ÚconcreterH   rø   r§   Úrelated_query_namerº   s     r<   rb   z(Model._check_ordering.<locals>.<genexpr>þ  sN   è ø€ ò  ð ð ŸNšN°1·:²:ð —V‘V˜QŸY™YÑ'àŸ'™'×4Ñ4Ó6Ð8ó9ñ ùs   ‚AA)rZ   Ú_ordering_clashr   r[  rÁ   re   rm   r„  ru   r   r*  r^  r  rþ   rH  Ú
path_infosÚto_optsr�   r
   ÚAttributeErrorÚget_transformÚ
get_lookupr‚   r   Úfrom_iterabler|   rM  rë  )r�   rî  r|   Ú_fieldsÚrelated_fieldsr¡   r§   Ú_clsÚfldÚpartÚinvalid_fieldsrÐ   Úvalid_fieldsÚinvalid_fields                 r<   rD  zModel._check_ordering¨  sª  € ð �9‰9×$Ò$ä—‘ØUØØ$ôðð ð �9‰9×*Ò*°#·)±)×2DÒ2DØˆIä˜#Ÿ)™)×,Ñ,¬t´U¨mÔ<ä—‘ð'àØ$ô	ðð ð ˆØ—‘×#Ñ#ˆñ H˜VÔGˆñ 7¨vÔ6ˆð ˆØˆØò 	"ˆAÜ˜Q‰Ø×%Ñ% aÕ(à—‘˜qÕ!ð		"ð
 ˆð $ò 	ˆEØˆDØˆCØŸ™¤JÓ/ò �ðà˜t’|Ø"Ÿj™jŸm™m™à"Ÿj™j×2Ñ2°4Ó8˜Ø—’Ø"Ÿ~™~¨bÑ1×9Ñ9×?Ñ?™à#˜øñð	ð: $Ö1˜ q¨D£y’!Ð1ˆÐ1ð ˆð �y‰yˆÜÜ×Ññ  ô ˜tŸ{™{¨D×,@Ñ,@ÓAô ó ó	
ˆð 	×Ñ˜f |Ñ3Ô4à+ò 	ˆMØ�M‰MÜ—‘ð-Ø/<ñ=àØ$ô	õð	ð ˆøô[ *¬>Ð:ò Ø�{Ø×)Ñ)¨$Ó/Ð7¸C¿N¹NÈ4Ó<PÐ<XàŸ™Ü"ŸL™Lð!AØCHñ!Ià$'Ø#0ô	ôúð	üò 2s    Ä%A)H?Æ
J#Æ!J#È?AJ ÊJ c                 ó€  — |sg S g }d}d}|D ]f  }t        j                  || «      sŒt        |   }|j                  j	                  «       }|�|j
                  j                  rŒV|€|}|}Œ]||k  sŒc|}|}Œh |€|S | j                  j                  D ]_  }|j                  �Œ|j                  x}	€Œt        |	«      |kD  sŒ.|j                  t        j                  d|	›d|›d|›d�d| d¬«      «       Œa | j                  j                  D ]³  }t!        |j"                  j$                  t&        «      rŒ(|j"                  j$                  j                  j                  D ]_  }
|
j                  �Œ|
j                  x}€Œt        |«      |kD  sŒ.|j                  t        j                  d	|›d|›d|›d�d
| d¬«      «       Œa Œµ |S )z–
        Check that any auto-generated column names are shorter than the limits
        for each database in which the model will be created.
        Nz.Autogenerated column name too long for field "z". Maximum length is "z" for database "z".z/Set the column name manually using 'db_column'.zmodels.E018rK  z2Autogenerated column name too long for M2M field "z\Use 'through' to create a separate model for M2M and then set column_name using 'db_column'.zmodels.E019)r   rU  r   Úopsr”  r
  Útruncates_namesrZ   ry   Ú	db_columnrù   ró   r*  r   r[  rz   rm   r€   rw  r  )r�   r5  rî  Úallowed_lenÚdb_aliasrè   r   r”  r¡   rs  Úm2mÚrel_names               r<   r;  zModel._check_long_column_names	  sÍ  € ñ ØˆIØˆØˆØˆð ò 	"ˆBä×-Ñ-¨b°#Ô6ØÜ$ R™ˆJØ(Ÿn™n×<Ñ<Ó>ˆOØÐ&¨*×*=Ñ*=×*MÒ*MØàÐ&Ø"1�KØ!‘HØ$ {Ó2Ø"1�KØ!‘Hð	"ð  ÐØˆMà—‘×'Ñ'ò 	ˆAð —‘Ñ#Ø$%§H¡HÐ,�[Ñ9Ü˜Ó$ {Ó2à—‘Ü—L’Lò 'ª²Xð?ð OØØ(ôõ	ð	ð& —‘×-Ñ-ò 	ˆAä˜!Ÿ.™.×0Ñ0´#Ô6Øð —~‘~×-Ñ-×3Ñ3×@Ñ@ò �à—M‘MÑ)Ø%(§Z¡ZÐ/˜Ñ<Ü˜H›¨Ó3à—M‘MÜŸšò  (ª²hð@ð!Rð !$Ø,ô
õñð	ð6 ˆr?   c              #   ó  K  — t        |t        «      rz|j                  D ]j  }t        |t        «      r?|\  }}t        |j	                  t
        «      «      –— | j                  |«      E d {  –—†  ŒR| j                  |«      E d {  –—†  Œl y t        |t        «      r+t        |j                  j	                  t
        «      «      –— y t        |d«      r/|j                  «       D ]  }| j                  |«      E d {  –—†  Œ y y 7 Œ˜7 Œ€7 Œ­w)NÚget_source_expressions)rm   r'   Úchildrenru   r^  r   r–  r&   rH   rQ   rÁ  )r�   ÚexprÚchildÚlookuprR   Úsrc_exprs         r<   r–  zModel._get_expr_referencese	  sá   è ø€ ä�dœAÔØŸ™ò ?�Ü˜e¤UÔ+Ø$)‘M�F˜EÜ §¡¬ZÓ 8Ó9Ò9Ø"×7Ñ7¸Ó>×>Ñ>à"×7Ñ7¸Ó>×>Ñ>ñ?ô ˜œaÔ Ü˜Ÿ	™	Ÿ™¬
Ó3Ó4Ó4Ü�TÐ3Ô4Ø ×7Ñ7Ó9ò >�Ø×3Ñ3°HÓ=×=Ñ=ñ>ð 5ð ?øà>øð
 >ús7   ‚A)D
Á+DÁ,D
ÂDÂA5D
Ã;DÃ<	D
ÄD
ÄD
c                 óÐ   — g }|D ]^  }t        j                  || «      sŒt        |   }| j                  j                  D ]#  }|j                  |j                  | |«      «       Œ% Œ` |S r²   )r   rU  r   rZ   r  rë  Ú_check)r�   r5  rî  rè   r   r  s         r<   rE  zModel._check_constraintsu	  so   € àˆØò 	BˆBÜ×-Ñ-¨b°#Ô6ØÜ$ R™ˆJØ!Ÿi™i×3Ñ3ò B�
Ø—‘˜j×/Ñ/°°ZÓ@ÕAñBð		Bð ˆr?   r²   )NNN)FFFNN)FNFFNNr  )NTT)HrB   rC   rD   rÿ   Úclassmethodr  r=   rA   r  r  r&  r  r6  r8  r;  rÝ   r  r=  rU  rW  rZ  rq  rs  Úalters_datarƒ  r‡  r~  rŽ  r�  r   r¥  rx  r¼  r¿  rÅ  r×  rÂ   rß  râ  rä  rð  rç  rè  ré  r  r  r'  r,  r/  r.  r  rF  rG  r6  r7  r8  r9  r:  r<  r=  rA  r>  r?  r@  rB  rC  r…  rD  r;  r–  rE  rW   rÞ   s   @r<   rë   rë   Ë  sE  ø„ ôp2ðd ñ
ó ð
ò<òEò!òò
1òò"$ó,.ò;ñ 
�+˜{Ó	+€Bò
óQ/óf
ò
,ò$"OðV ØØØôL
ð\ €DÔð ØØØô
ð2 €EÔàñó ðð* ØØØØóDðL !€IÔð HLó-ðb ØØØØØó`òD,ò8
ó4ól	"ð €FÔó
ð €GÔò
òò*(ó.ò$Mòó*ó =*ò~/òbò>
ò"ò@ó*ó(-*ó^*ð8 ñ"ó ð"ðH ñó ðð> ñó ðð, ñó ðð4 ñ
ó ð
ð ñó ðð ñó ðð ñ!ó ð!ðF ñó ðð$ ñCó ðCðJ ñó ðð0 ñó ðð. ñó ðð( ñó ðð ñó ðð: ñXó ðXðt ñ4ó ð4ðl ñjó ðjðX ñMó ðMð^ ñ>ó ð>ð ñó ôr?   rë   )Ú	metaclassc           
      ó  — |j                   j                  }|j                  | «      } |j                  j	                  |«      j
                  di |¤Žj                  t        |«      D ��cg c]  \  }} |||¬«      ‘Œ c}}dg«       y c c}}w )N)r  r™  r™  r9   )rZ   rÁ   Úget_forward_related_filterr¿   rD  rF  Úbulk_updaterk  )r;   Úordered_objÚid_listrE  Ú	order_wrtr«  rÓ  r  s           r<   Úmethod_set_orderrÒ  ˆ	  sx   € Ø×!Ñ!×7Ñ7€IØ×6Ñ6°tÓ<€KØ0€K×Ñ×"Ñ" 5Ó)×0Ñ0Ñ?°;Ñ?×KÑKÜ;DÀWÓ;M×N©i¨e°R‰˜ 5Ö	)ÓNØ	ˆ
õùÛNs   Á*B	
c                 óê   — |j                   j                  }|j                  | «      }|j                   j                  j                  } |j
                  j                  di |¤Žj                  |d¬«      S )NT)Úflatr9   )rZ   rÁ   rÍ  r  rH   r¿   rF  Úvalues_list)r;   rÏ  rÑ  r«  Úpk_names        r<   Úmethod_get_orderr×  ‘	  sf   € Ø×!Ñ!×7Ñ7€IØ×6Ñ6°tÓ<€KØ×Ñ×"Ñ"×'Ñ'€GØ%ˆ;×Ñ×%Ñ%Ñ4¨Ñ4×@Ñ@ÀÈtÐ@ÓTÐTr?   c                 óÜ   — t        |d| j                  j                  «       z  t        t        | «      «       t        |d| j                  j                  «       z  t        t
        | «      «       y )Nzget_%s_orderzset_%s_order)r³   rB   Úlowerr   r×  rÒ  )r�   ry  s     r<   rÅ   rÅ   ˜	  sZ   € ÜØØ˜Ÿ™×-Ñ-Ó/Ñ/ÜÔ&¨Ó.ôô
 ØØ˜Ÿ™×-Ñ-Ó/Ñ/ÜÔ&¨Ó.õr?   c                 ón   — t        | t        «      rt        j                  | Ž }n| }|j	                  |«      S )z7Used to unpickle Model subclasses with deferred fields.)rm   ru   r   rZ  rl   )Úmodel_idr�   s     r<   r#  r#  ª	  s0   € ä�(œEÔ"Ü—‘ Ð)‰ð ˆØ�=‰=˜ÓÐr?   Tr²   )\r‰   rO   r2  Ú	functoolsr   Ú	itertoolsr   Úasgiref.syncr   r   Údjango.appsr   Údjango.confr   Údjango.corer   Údjango.core.exceptionsr	   r
   r   r   r   r   rœ  r   r   r   r   r   r   Údjango.db.modelsr   r   r   r   r   Údjango.db.models.constantsr   Údjango.db.models.deletionr   r   Údjango.db.models.expressionsr   Údjango.db.models.fields.relatedr   r    r!   r"   Údjango.db.models.functionsr#   Údjango.db.models.managerr$   Údjango.db.models.optionsr%   Údjango.db.models.queryr&   r'   Údjango.db.models.signalsr(   r)   r*   r+   r,   Údjango.db.models.utilsr-   r.   Údjango.utils.deprecationr/   Údjango.utils.encodingr0   Údjango.utils.hashabler1   Údjango.utils.textr2   r3   Údjango.utils.translationr4   r%  r6   rñ   rL   rS   rG   rU   rà   rç   rë   rÒ  r×  rÅ   r#  Ú__safe_for_unpickle__r9   r?   r<   ú<module>rô     sñ   ðÛ Û Û Ý #Ý å &ã Ý Ý  Ý ÷÷ ÷÷ ÷ WÕ VÝ 1ß 8Ý 8÷ó õ 0Ý ,Ý ,ß '÷õ ÷ @Ý =Ý +Ý /ß 5Ý 6÷"ñ "ñ ‹:€òò$Pô
X)�ô X)÷v
ñ ÷	5ñ 	5ôsˆJ )õ sóz=òUò
ò$ ð (,€Õ $r?   