§
     êÄjn%  ã                   ó®  — d Z ddlZddlZddlZej                             ej                             ej                             e¦  «        ¦  «        ¦  «        Zej         	                    edd¦  «        Z
ej         	                    edd¦  «        Zej         	                    edd¦  «        Zd„  edd	¦  «        D ¦   «         Zd
ZdZd"d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd#d„Zd„ Zd„ Zedk    r_ e¦   «         Zes e de
¦  «          e!d¦  «        ‚ ee¦  «        \  Z"Z# e  ej$        e#dd¬¦  «        ¦  «          e de"rd nd!¦  «         dS dS )$uY  ç›®æ ‡åŸºç¡€æ•°æ�® â€”â€” å”¯ä¸€æ�ƒå¨�æº�è¯»å�– + æœˆåº¦æ‘Šæ´¾è§„åˆ™ï¼ˆå�¯å¤�ç”¨ï¼‰ã€‚

ã€�å”¯ä¸€æ�ƒå¨�æº�ã€‘æ•°æ�®/ç›®æ ‡åŸºç¡€æ•°æ�®_2026.jsonï¼ˆç”± è„šæœ¬/build_target_source.py ç”Ÿæˆ� / ç®¡ç�†å�°é¡µé�¢å¯¼å‡ºå�Žè�½ç›˜ï¼‰ã€‚
  æœ¬æ¨¡å�—æ˜¯**å”¯ä¸€è¯»å…¥å�£**ï¼šgen_dept_monthly_json.pyï¼ˆéƒ¨é—¨æœˆåº¦ç›®æ ‡ï¼‰ä¸Ž
  apply_salesperson_targets.pyï¼ˆä¸ªäººå¹´åº¦/æœˆåº¦ç›®æ ‡ï¼‰éƒ½ä»Žè¿™é‡Œå�–æ•°ã€‚
  è‹¥æ–°æ–‡ä»¶ç¼ºå¤± â†’ å›žé€€æ—§æº�ï¼ˆæ•°æ�®/æœˆåº¦ç›®æ ‡_2026ç»Ÿä¸€.json + æ•°æ�®/kpi_scheme.jsonï¼‰å¹¶æŠ¥è­¦ï¼Œ
  æ—§æº�å·²æ ‡è®° deprecationï¼ˆä¿�ç•™ä¸�åˆ ï¼‰ã€‚

æœˆåº¦æ‘Šæ´¾è§„åˆ™ï¼ˆruleï¼‰ï¼ŒæŠŠã€Œå¹´åº¦ç›®æ ‡ã€�æ‘Šæˆ� 12 ä¸ªæœˆï¼ˆä¸‡å…ƒï¼‰ï¼Œä»»ä¸€è§„åˆ™ä¸‹**å�ˆè®¡ç²¾ç¡®ç­‰äºŽå¹´åº¦ç›®æ ‡**
ï¼ˆèˆ�å…¥å·®ç”±æœ€å�Žä¸€ä¸ªæœ‰å€¼æœˆå�¸æ”¶ï¼‰ï¼š
  shape  = æŒ‰éƒ¨é—¨/åŒºåŸŸæœˆå½¢æ€�ç­‰æ¯”æ‘Šï¼šä¸ªäººæœˆå€¼ = ä¸ªäººå¹´åº¦ Ã— éƒ¨é—¨(åŒºåŸŸ)å½“æœˆ / Î£éƒ¨é—¨(åŒºåŸŸ)æœˆ
  even   = å¹´åº¦ / 12
  manual = æ‰‹å¡«å€¼ä¼˜å…ˆï¼ˆæ— æ‰‹å¡«çš„æœˆä»½ â†’ ç”¨ shape å…œåº•ï¼›ä»�æ— æº� â†’ nullï¼‰
é“�å¾‹ï¼š**æ— æº�çš„æœˆä»½ä¿�æŒ� nullï¼Œç»�ä¸�å†™ 0**ï¼ˆéƒ¨é—¨å½“æœˆå½¢æ€�ä¸º 0/ç¼ºå¤± â†’ è¯¥æœˆ nullï¼Œä¸�å�‚ä¸Žæ±‚å’Œï¼‰ã€‚
é    Nu   æ•°æ�®u   ç›®æ ‡åŸºç¡€æ•°æ�®_2026.jsonu   æœˆåº¦ç›®æ ‡_2026ç»Ÿä¸€.jsonzkpi_scheme.jsonc                 ó   — g | ]}d |z  ‘ŒS )z	2026-%02d© ©Ú.0Úms     õH   /Users/liuxinyuan/Desktop/Hermesè¾“å‡º-å·¥ä½œç±»/è„šæœ¬/target_source.pyú
<listcomp>r	      s   € Ð	0Ð	0Ð	0˜aˆ+˜‰/Ð	0Ð	0Ð	0ó    é   é   )ÚshapeÚevenÚmanualg     ˆÃ@r   c                 óÔ  ‡ ‡
‡— |r!t          |                     ¦   «         ¦  «        nt          t          ¦  «        Š
‰ €d„ ‰
D ¦   «         S t          ‰ ¦  «        Š |dk    rˆ ˆ
fd„‰
D ¦   «         Š�n*|dk    r©|r§t	          d„ |pi                      ¦   «         D ¦   «         ¦  «        }i Š‰
D ]t}|                     |¦  «        }|�!t          t          |¦  «        d¦  «        ‰|<   Œ:|pi                      |¦  «        }|r|dk    rt          ‰ |z  |z  d¦  «        nd‰|<   Œun{t	          d	„ |pi                      ¦   «         D ¦   «         ¦  «        }i Š‰
D ]I}|pi                      |¦  «        }|r)|dk    r#t          ‰ t          |¦  «        z  |z  d¦  «        nd‰|<   ŒJˆfd
„‰
D ¦   «         }|r?t	          ˆfd„|dd…         D ¦   «         ¦  «        }	t          ‰ |	z
  d¦  «        ‰|d         <   ‰S )uH  æŠŠå¹´åº¦ç›®æ ‡ï¼ˆä¸‡å…ƒï¼‰æ‘Šæˆ� 12 ä¸ªæœˆ â†’ {æœˆ: ä¸‡å…ƒ æˆ– None}ã€‚

    Â· å�ˆè®¡ï¼ˆå¿½ç•¥ Noneï¼‰**ç²¾ç¡®ç­‰äºŽ annual**ï¼ˆèˆ�å…¥å·®ç”±æœ€å�Žä¸€ä¸ªæœ‰å€¼æœˆå�¸æ”¶ï¼‰ã€‚
    Â· éƒ¨é—¨/åŒºåŸŸå½“æœˆå½¢æ€�ç¼ºå¤±æˆ–ä¸º 0 â†’ è¯¥æœˆ nullï¼ˆæ— æº�ï¼‰ï¼Œç»�ä¸�å†™ 0ã€‚
    Â· annual ä¸º None â†’ å…¨å¹´ 12 æœˆå�‡ä¸º Noneã€‚
    Nc                 ó   — i | ]}|d “ŒS ©Nr   r   s     r   ú
<dictcomp>ztaper.<locals>.<dictcomp>+   s   € Ð(Ð(Ð(˜A��4Ð(Ð(Ð(r
   r   c           	      óR   •— i | ]#}|t          ‰t          ‰¦  «        z  d ¦  «        “Œ$S )é   )ÚroundÚlen)r   r   ÚannualÚmonthss     €€r   r   ztaper.<locals>.<dictcomp>.   s0   ø€ ÐBÐBÐB°a�•5˜¥# f¡+¤+Ñ-¨qÑ1Ô1ÐBÐBÐBr
   r   c              3   ól   K  — | ]/}t          |t          t          f¦  «        ¯t          |¦  «        V — Œ0d S r   ©Ú
isinstanceÚintÚfloat©r   Úvs     r   ú	<genexpr>ztaper.<locals>.<genexpr>0   ó<   è è € ÐZÐZ˜q½jÈÍSÕRWÈLÑ>YÔ>YÐZ•%˜‘(”(ÐZÐZÐZÐZÐZÐZr
   r   r   c              3   ól   K  — | ]/}t          |t          t          f¦  «        ¯t          |¦  «        V — Œ0d S r   r   r   s     r   r!   ztaper.<locals>.<genexpr>:   r"   r
   c                 ó>   •— g | ]}‰                      |¦  «        ®|‘ŒS r   ©Úget©r   r   Úvalss     €r   r	   ztaper.<locals>.<listcomp>@   s(   ø€ Ð9Ð9Ð9�! §¢¨!¡¤Ð!8ˆAÐ!8Ð!8Ð!8r
   c              3   ó(   •K  — | ]}‰|         V — Œd S r   r   r'   s     €r   r!   ztaper.<locals>.<genexpr>B   s'   øè è € Ð+Ð+˜A��Q”Ð+Ð+Ð+Ð+Ð+Ð+r
   éÿÿÿÿ)ÚlistÚkeysÚMONTHSr   ÚsumÚvaluesr&   r   )r   r   Úruler   Útotr   ÚmvÚsvr,   Úsr   r(   s   `         @@r   Útaperr5   "   sC  øøø€ ð $)Ð:�T�%—*’*‘,”,ÑÔÐ­dµ6©l¬l€FØ€~Ø(Ð( Ð(Ñ(Ô(Ð(Ý�6‰]Œ]€FØˆv‚~€~ØBÐBÐBÐBÐB¸6ÐBÑBÔBˆ‰Ø	�Ò	Ð	˜fÐ	ÝÐZÐZ U [¨b×$8Ò$8Ñ$:Ô$:ÐZÑZÔZÑZÔZˆØˆØð 	Tð 	TˆAØ—’˜A‘”ˆBØˆ~Ý¥ b¡	¤	¨1Ñ-Ô-��Q‘�à�k˜r×&Ò& qÑ)Ô)�Ø:<ÐSÀÀqÂÀ�% ¨¡¨cÑ 1°1Ñ5Ô5Ð5Èt��Q‘�ð	Tõ ÐZÐZ U [¨b×$8Ò$8Ñ$:Ô$:ÐZÑZÔZÑZÔZˆØˆØð 	Wð 	WˆAØ�+˜2×"Ò" 1Ñ%Ô%ˆBØ=?ÐVÀCÈ!ÂGÀG•e˜F¥U¨2¡Y¤YÑ.°Ñ4°aÑ8Ô8Ð8ÐRVˆD�‰GˆGà9Ð9Ð9Ð9�vÐ9Ñ9Ô9€DØð .ÝÐ+Ð+Ð+Ð+  c r c¤Ð+Ñ+Ô+Ñ+Ô+ˆÝ˜v¨™z¨1Ñ-Ô-ˆˆT�"ŒX‰Ø€Kr
   c                 óx   — t          t          d„ | pi                      ¦   «         D ¦   «         ¦  «        d¦  «        S )u#   æœ‰å€¼æœˆä¹‹å’Œï¼ˆNone è·³è¿‡ï¼‰ã€‚c              3   ó   K  — | ]}|®|V — Œ	d S r   r   r   s     r   r!   zclose_sum.<locals>.<genexpr>I   s"   è è € ÐIÐI˜1¸1¸=�Q¸=¸=¸=¸=ÐIÐIr
   r   )r   r.   r/   )r   s    r   Ú	close_sumr8   G   s9   € å•ÐIÐI  ¨2× 5Ò 5Ñ 7Ô 7ÐIÑIÔIÑIÔIÈ1ÑMÔMÐMr
   c                  ó  — t           j                             t          ¦  «        sdS 	 t	          j        t          d¬¦  «        5 } t          j        | ¦  «        cddd¦  «         S # 1 swxY w Y   dS # t          $ r Y dS w xY w)uB   è¯»æ–°æ�ƒå¨�æº�ï¼›è¿”å›ž dict æˆ– Noneï¼ˆæ–‡ä»¶ç¼ºå¤±/æ�Ÿå��ï¼‰ã€‚Nzutf-8)Úencoding)	ÚosÚpathÚexistsÚ
TARGET_SRCÚioÚopenÚjsonÚloadÚ	Exception)Úfs    r   rB   rB   M   sÅ   € åŒ7�>Š>�*Ñ%Ô%ð ØˆtðÝŒW•Z¨'Ð2Ñ2Ô2ð 	 °aÝ”9˜Q‘<”<ð	 ð 	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øåð ð ð Øˆtˆtðøøøs5   ¨A1 ÁA$ÁA1 Á$A(Á(A1 Á+A(Á,A1 Á1
A?Á>A?c                  ó"   — t          ¦   «         d uS r   )rB   r   r
   r   Úis_authoritativerF   X   s   € Ý‰6Œ6˜ÐÐr
   c                 óˆ   — | pi                       d¦  «        pi                       |¦  «        pi }|                      d¦  «        S )NÚdepartmentsÚtarget_annualr%   ©ÚsdÚdeptÚds      r   Údept_annualrN   \   sA   € Ø
ˆ(��Š˜Ñ	&Ô	&Ð	,¨"×1Ò1°$Ñ7Ô7Ð=¸2€AØ�5Š5�Ñ!Ô!Ð!r
   c                 ó¦   — | pi                       d¦  «        pi                       |¦  «        pi }t          |                      d¦  «        pi ¦  «        S )uR   éƒ¨é—¨ 12 ä¸ªæœˆç›®æ ‡ï¼ˆä¸‡å…ƒï¼‰â†’ {æœˆ: ä¸‡}ï¼›æ—  â†’ ï¼ˆå›žé€€ï¼‰ç©º dictã€‚rH   Útarget_monthly©r&   ÚdictrJ   s      r   Údept_monthsrS   a   sO   € à
ˆ(��Š˜Ñ	&Ô	&Ð	,¨"×1Ò1°$Ñ7Ô7Ð=¸2€AÝ�—’Ð&Ñ'Ô'Ð-¨2Ñ.Ô.Ð.r
   c                 óþ   — | pi                       d¦  «        pi                       |¦  «        pi }|                      d¦  «        pi                       |¦  «        pi }t          |                      d¦  «        pi ¦  «        S )NrH   ÚregionsrP   rQ   ©rK   rL   ÚregionrM   Úrs        r   Úregion_monthsrY   g   sx   € Ø
ˆ(��Š˜Ñ	&Ô	&Ð	,¨"×1Ò1°$Ñ7Ô7Ð=¸2€AØ	
�ŠˆyÑ	Ô	Ð	˜R×$Ò$ VÑ,Ô,Ð2°€AÝ�—’Ð&Ñ'Ô'Ð-¨2Ñ.Ô.Ð.r
   c                 óà   — | pi                       d¦  «        pi                       |¦  «        pi }|                      d¦  «        pi                       |¦  «        pi }|                      d¦  «        S )NrH   rU   rI   r%   rV   s        r   Úregion_annualr[   m   sj   € Ø
ˆ(��Š˜Ñ	&Ô	&Ð	,¨"×1Ò1°$Ñ7Ô7Ð=¸2€AØ	
�ŠˆyÑ	Ô	Ð	˜R×$Ò$ VÑ,Ô,Ð2°€AØ�5Š5�Ñ!Ô!Ð!r
   c                 óH   — d„ | pi                       d¦  «        pg D ¦   «         S )uA   å§“å�� â†’ person dictï¼ˆå�«ç¦»è�Œè€…ï¼›ç”¨äºŽå½’å¹¶/å�ˆè´¦ï¼‰ã€‚c                 ód   — i | ]-}|                      d ¦  «        ¯|                      d ¦  «        |“Œ.S )Únamer%   ©r   Úps     r   r   zpeople_map.<locals>.<dictcomp>u   s4   € ÐXÐXÐX È!Ï%Ê%ÐPVÉ-Ì-ÐXˆA�EŠE�&‰MŒM˜1ÐXÐXÐXr
   Úpeopler%   ©rK   s    r   Ú
people_maprc   s   s+   € àXÐX¨¨¨b§~¢~°hÑ'?Ô'?Ð'EÀ2ÐXÑXÔXÐXr
   c                 óŽ   — i }| pi                       d¦  «        pg D ](}|                      d¦  «        r|d         ||d         <   Œ)|S )uT   ç¦»è�Œ/ç®¡åŸ¹å½’å±žï¼šè¢«å¹¶äºº â†’ å½’å±žç»�ç�†ï¼ˆæ�¥è‡ª people[].merged_intoï¼‰ã€‚ra   Úmerged_intor^   r%   )rK   r   r`   s      r   Ú	merge_maprf   x   sW   € à
€AØˆx�R�nŠn˜XÑ&Ô&Ð,¨"ð ,ð ,ˆØ�5Š5�ÑÔð 	,Ø˜]Ô+ˆAˆa�Œi‰LøØ€Hr
   c                 ó  — t          | ¦  «        }|                     |¦  «        }|si S |p-| pi                      d¦  «        pi                      d¦  «        pd}|                     d¦  «        }|rt          |¦  «        S |                     d¦  «        }|                     d¦  «        |                     d¦  «        }}t          | ||¦  «        pt	          | |¦  «        }	t          ||	||                     d¦  «        ¦  «        S )	ud   è¿”å›žè¯¥äºº 12 æœˆç›®æ ‡ï¼ˆä¸‡å…ƒï¼‰ï¼›å�–æ–‡ä»¶é‡Œæ˜¾å¼� target_monthlyï¼Œç¼ºåˆ™ç”±è§„åˆ™çŽ°æ‘Šã€‚ÚmetaÚmonthly_ruler   rP   rI   rL   rW   Úmonthly_manual)rc   r&   rR   rY   rS   r5   )
rK   r^   r0   Úpmr`   Útmr   rL   rW   r   s
             r   Úperson_months_forrm   �   sï   € å	�B‰Œ€BØ
�Šˆt‰Œ€AØð Øˆ	ØÐP�R�X˜2—N’N 6Ñ*Ô*Ð0¨b×5Ò5°nÑEÔEÐPÈ€DØ	
�ŠÐÑ	 Ô	 €BØ	ð Ý�B‰xŒxˆØ�UŠU�?Ñ#Ô#€FØ—5’5˜‘=”= !§%¢%¨¡/¤/ˆ&€DÝ˜"˜d FÑ+Ô+ÐD­{¸2¸tÑ/DÔ/D€EÝ�˜  a§e¢eÐ,<Ñ&=Ô&=Ñ>Ô>Ð>r
   c                 ó|   ‡ — t          d„ ˆ fd„‰ pi                      d¦  «        pi D ¦   «         D ¦   «         ¦  «        S )Nc              3   ó   K  — | ]}|V — Œd S r   r   r   s     r   r!   ztotal_annual.<locals>.<genexpr>’   s"   è è € ÐcÐc�QˆqÐcÐcÐcÐcÐcÐcr
   c              3   ó<   •K  — | ]}t          ‰|¦  «        pd V — ŒdS )r   N)rN   )r   rM   rK   s     €r   r!   ztotal_annual.<locals>.<genexpr>’   s2   øè è € ÐbÐb°q�; r¨1Ñ-Ô-Ð2°ÐbÐbÐbÐbÐbÐbr
   rH   )r.   r&   rb   s   `r   Útotal_annualrq   ‘   sK   ø€ ÝÐcÐcÐbÐbÐbÐb¸b¸hÀB¿^º^ÈMÑ=ZÔ=ZÐ=`Ð^`ÐbÑbÔbÐcÑcÔcÑcÔcÐcr
   c                 óÄ	  ‡‡‡— i i i g dœŠ| pi                       d¦  «        pi }d}d„ t          D ¦   «         }|                     ¦   «         D �]‰\  Š}|                      d¦  «        }|                      d¦  «        pi }t          |¦  «        }|t	          |pd¦  «        z  }t          D ]4}||xx         t	          |                      |¦  «        pd¦  «        z  cc<   Œ5ˆfd„| pi                       d	¦  «        pg D ¦   «         }	t          t          d
„ |	D ¦   «         ¦  «        d¦  «        }
|||
t          |	¦  «        |                      d¦  «        t          t	          |pd¦  «        |
z
  t	          |                      d¦  «        pd¦  «        z
  d¦  «        dœ‰d         ‰<   |�It          |t	          |pd¦  «        z
  ¦  «        dk    r$‰d          	                    d‰›d|›d|›�¦  «         t          ‰d         ‰         d         ¦  «        dk    r:‰d          	                    d‰›d|›d|
›d|                      d¦  «        ›�¦  «         |                      d¦  «        pi                      ¦   «         D �]`\  Š}|                      d¦  «        |                      d¦  «        pi }}ˆˆfd„| pi                       d	¦  «        pg D ¦   «         }t          t          d„ |D ¦   «         ¦  «        d¦  «        }|t          |¦  «        |t          |¦  «        dœ‰d         ‰›d‰›�<   t          t          |¦  «        t	          |pd¦  «        z
  ¦  «        dk    r4‰d          	                    d‰›d‰›dt          |¦  «        ›d |›�¦  «         t          |t	          |pd¦  «        z
  ¦  «        dk    r'‰d          	                    d‰›d‰›d!|›d |›�¦  «         �Œb�Œ‹|t          t          | 
                    ¦   «         ¦  «        d¦  «        t          t          ˆfd"„‰d         D ¦   «         ¦  «        d¦  «        d#œ‰d$<   t          ‰d$         d%         |z
  ¦  «        dk    r-‰d          	                    d&‰d$         d%         ›d |›�¦  «         t          ‰d$         d'         |z
  ¦  «        dk    r-‰d          	                    d(|›d)‰d$         d'         ›�¦  «         ‰d          ‰fS )*uW   ä¸‰çº§é—­å�ˆè‡ªæ£€ï¼šäºº â†’ åŒºåŸŸ â†’ éƒ¨é—¨ â†’ å…¨å�¸ã€‚è¿”å›ž (ok, report dict)ã€‚)ÚdeptsrU   ÚtotalÚerrorsrH   ç        c                 ó   — i | ]}|d “ŒS )rv   r   r   s     r   r   z!check_closure.<locals>.<dictcomp>š   s   € Ð(Ð(Ð(˜A��CÐ(Ð(Ð(r
   rI   rP   r   c                 óš   •— g | ]G}|                      d ¦  «        ‰k    ¯|                      d¦  «        ¯0|                      d¦  «        ®E|‘ŒHS )rL   Úcount_in_statsrI   r%   )r   r`   rL   s     €r   r	   z!check_closure.<locals>.<listcomp>¢   s]   ø€ ð mð mð m�aØ—5’5˜‘=”= DÒ(Ð(¨Q¯UªUÐ3CÑ-DÔ-DÐ(ÈÏÊÈÑI_ÔI_ÐIkð ØIkÐIkÐIkr
   ra   c              3   ó@   K  — | ]}t          |d          ¦  «        V — ŒdS ©rI   N©r   r_   s     r   r!   z check_closure.<locals>.<genexpr>¤   s/   è è € ÐDÐD¸!�E ! OÔ"4Ñ5Ô5ÐDÐDÐDÐDÐDÐDr
   r   Úunallocated)r   Úmonthly_sumÚ
people_sumÚpeople_nr}   Ú
alloc_diffrs   Ngš™™™™™©?ru   u   éƒ¨é—¨ u    æœˆåº¦å�ˆè®¡ u    != å¹´åº¦ r�   u    å¹´åº¦ u
    != Î£äºº u    + æœªåˆ†æ‘Š rU   c                 óÌ   •— g | ]`}|                      d ¦  «        ‰k    rE|                      d¦  «        ‰k    r,|                      d¦  «        r|                      d¦  «        ®^|‘ŒaS )rL   rW   ry   rI   r%   )r   r`   rL   Úrgs     €€r   r	   z!check_closure.<locals>.<listcomp>³   sv   ø€ ð Xð Xð X˜!Ø—u’u˜V‘}”}¨Ò,Ð,°·²°x±´ÀBÒ1FÐ1FØŸšÐ.Ñ/Ô/ð 2GØ45·E²E¸/Ñ4JÔ4JÐ4Vð à4VÐ4VÐ4Vr
   c              3   ó@   K  — | ]}t          |d          ¦  «        V — ŒdS r{   r|   r_   s     r   r!   z check_closure.<locals>.<genexpr>¶   s/   è è € ÐGÐG¸Q�u Q Ô%7Ñ8Ô8ÐGÐGÐGÐGÐGÐGr
   )r   r~   r   r€   ú/g�íµ ÷Æ°>u   åŒºåŸŸ u    != å¹´ u    é€�äººå�ˆè®¡ c              3   óD   •K  — | ]}‰d          |         d         pdV — ŒdS )rs   r   r   Nr   )r   rM   Úreps     €r   r!   z check_closure.<locals>.<genexpr>¾   s5   øè è € Ð)aÐ)aÈq¨3¨w¬<¸¬?¸8Ô+DÐ+IÈÐ)aÐ)aÐ)aÐ)aÐ)aÐ)ar
   )r   r~   Údept_sumrt   r~   u   å…¨å�¸æœˆåº¦å�ˆè®¡ rˆ   u   å…¨å�¸å¹´åº¦ u    != Î£éƒ¨é—¨ )r&   r-   Úitemsr8   r   r   r.   r   ÚabsÚappendr/   )rK   rs   Úgrand_annualÚ	grand_monÚdvÚdaÚdmÚdsr   ÚrowsÚppl_sumÚrvÚraÚrmÚrpplÚrp_sumrL   r‡   rƒ   s                   @@@r   Úcheck_closurer™   •   s‘  øøø€ à 2°¸bÐ
AÐ
A€CØˆX�2�NŠN˜=Ñ)Ô)Ð/¨R€EØ€LØ(Ð(¥Ð(Ñ(Ô(€IØ—K’K‘M”Mð !hñ !h‰ˆˆbØ�VŠV�OÑ$Ô$ˆØ�VŠVÐ$Ñ%Ô%Ð+¨ˆÝ�r‰]Œ]ˆØ�˜b˜g A™œÑ&ˆÝð 	2ð 	2ˆAØ�aˆLˆLŒL�E "§&¢&¨¡)¤) .¨qÑ1Ô1Ñ1ˆLˆL‰LˆLðmð mð mð m˜R˜X 2ŸNšN¨8Ñ4Ô4Ð:¸ð mñ mô mˆå�ÐDÐD¸tÐDÑDÔDÑDÔDÀaÑHÔHˆØ(*¸2ÈWÝ*-¨d©)¬)Ø-/¯VªV°MÑ-BÔ-BÝ,1µ%¸¸¸a±.´.À7Ñ2JÍUÐSU×SYÒSYÐZgÑShÔShÐSmÐlmÑMnÔMnÑ2nÐpqÑ,rÔ,rðtð tˆˆGŒ�TÑð ˆ>�c "¥u¨R¨W°1¡~¤~Ñ"5Ñ6Ô6¸Ò=Ð=Ø�ŒM× Ò Ð ÈTÈTÈTÐSUÐSUÐSUÐWYÐWYÐ!ZÑ[Ô[Ð[Ýˆs�7Œ|˜DÔ! ,Ô/Ñ0Ô0°4Ò7Ð7Ø�ŒM× Ò Ð Ø$( D D¨"¨"¨"¨g¨g¨g°r·v²v¸mÑ7LÔ7LÐ7Lð"Nñ Oô Oð Oð —v’v˜iÑ(Ô(Ð.¨B×5Ò5Ñ7Ô7ð 	hñ 	h‰FˆB�Ø—V’V˜OÑ,Ô,¨r¯vªvÐ6FÑ/GÔ/GÐ/MÈ2�ˆBðXð Xð Xð Xð X   r§¢¨xÑ 8Ô 8Ð >¸Bð Xñ Xô XˆDõ �3ÐGÐGÀ$ÐGÑGÔGÑGÔGÈÑKÔKˆFØ>@ÕQZÐ[]ÑQ^ÔQ^ØBHÕVYÐZ^ÑV_ÔV_ð4að 4aˆC�	ŒN d d d¨B¨BÐ/Ñ0å•9˜R‘=”=¥5¨¨¨q¡>¤>Ñ1Ñ2Ô2°TÒ9Ð9Ø�H”×$Ò$Ð$ÐQUÐQUÐQUÐWYÐWYÐWYÕ[dÐegÑ[hÔ[hÐ[hÐ[hÐjlÐjlÐ%mÑnÔnÐnÝ�6�E " '¨™NœNÑ*Ñ+Ô+¨dÒ2Ð2Ø�H”×$Ò$Ð$ÐQUÐQUÐQUÐWYÐWYÐWYÐ[aÐ[aÐ[aÐceÐceÐ%fÑgÔgÐgùñ	hð +½5ÅÀY×EUÒEUÑEWÔEWÑAXÔAXÐZ[Ñ;\Ô;\Ý %¥cÐ)aÐ)aÐ)aÐ)aÐTWÐX_ÔT`Ð)aÑ)aÔ)aÑ&aÔ&aÐcdÑ eÔ eðgð g€Cˆ�Lå
ˆ3ˆwŒ<˜Ô&¨Ñ5Ñ6Ô6¸Ò=Ð=ØˆHŒ×ÒÐÀ#ÀgÄ,È}ÔB]ÐB]ÐB]Ð_kÐ_kÐlÑmÔmÐmÝ
ˆ3ˆwŒ<˜
Ô# lÑ2Ñ3Ô3°dÒ:Ð:ØˆHŒ×ÒÐÀÀÀÈsÐSZÌ|Ð\fÔOgÐOgÐhÑiÔiÐiØ�H”Ð Ð#Ð#r
   Ú__main__u   â�Œ æ‰¾ä¸�åˆ°æ�ƒå¨�æº�Fr   )Úensure_asciiÚindentu   é—­å�ˆè‡ªæ£€:ÚPASSÚFAIL)r   Nr   )%Ú__doc__r?   rA   r;   r<   ÚdirnameÚabspathÚ__file__ÚWÚjoinr>   ÚLEGACY_MONTHLYÚLEGACY_SCHEMEÚranger-   ÚRULESÚWANr5   r8   rB   rF   rN   rS   rY   r[   rc   rf   rm   rq   r™   Ú__name__rK   ÚprintÚ
SystemExitÚokr‡   Údumpsr   r
   r   ú<module>r¯      sB  ððð ð 
€	€	€	Ø €€€Ø 	€	€	€	à„G‡O‚O�B”G—O’O B¤G§O¢O°HÑ$=Ô$=Ñ>Ô>Ñ?Ô?€ØŒW�\Š\˜!˜XÐ'EÑFÔF€
à”—’˜a Ð+IÑJÔJ€Ø”—’˜Q Ð*;Ñ<Ô<€à	0Ð	0 5 5¨¨B¡<¤<Ð	0Ñ	0Ô	0€Ø#€Ø	€ð"ð "ð "ð "ðJNð Nð Nðð ð ðð ð ð"ð "ð "ð
/ð /ð /ð/ð /ð /ð"ð "ð "ðYð Yð Yð
ð ð ð?ð ?ð ?ð ?ð dð dð dð.$ð .$ð .$ðb ˆzÒÐØ	ˆ‰Œ€BØð ØˆÐ&¨
Ñ3Ô3Ð3Øˆj˜‰mŒmÐØˆm˜BÑÔ�G€BˆØ	€Eˆ*ˆ$Œ*�S u°QÐ
7Ñ
7Ô
7Ñ8Ô8Ð8Ø	€Eˆ/ RÐ3˜6˜6¨VÑ4Ô4Ð4Ð4Ð4ð Ðr
   