§
    á´®j�  ã                   óÖ  — d 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¦  «        Z
d„ Zd„ Zd,d	„Zd
„ Zd„ Zd„ Zd„ Zd„ ZddddddœddddddœddddddœdœZd„ Zedk    r¡ e¦   «         Z ed ez  ¦  «          e¦   «                              ¦   «         D ]n\  ZZe                     d!¦  «        rd"nd#Z ed$ed%›d&e                     d'd¦  «        d(›d&e                     d)d¦  «        d*›d&e›d+ ee¦  «        ›�
¦  «         ŒmdS dS )-u3  
æŠ¥é”€åŠ©æ‰‹ Â· å¤šç”¨æˆ·æ³¨å†Œè¡¨
=======================
æ¯�ä¸ªä½¿ç”¨è€…ä¸€ä¸ªç‹¬ç«‹å·¥ä½œåŒºï¼ˆå�°è´¦/æ”¶ä»¶ç®±/æ‰“å�°åŒ…äº’ä¸�å�¯è§�ï¼‰ï¼š
  æŠ¥é”€åŠ©æ‰‹/å…±äº«/            è§„åˆ™åº“ + OCR äºŒè¿›åˆ¶ï¼ˆå…¨å…¬å�¸å…±ç”¨ï¼‰
  æŠ¥é”€åŠ©æ‰‹/ç”¨æˆ·/<uid>/      ä¸ªäººå·¥ä½œåŒºï¼ˆæ•°æ�®/æ”¶ä»¶ç®±ã€�æŠ¥é”€å�°è´¦.jsonã€�æ‰“å�°åŒ…ï¼‰
  æŠ¥é”€åŠ©æ‰‹/                 = åˆ˜æ–°å…ƒæœ¬äººï¼ˆåŽ†å�²ç›®å½•ï¼Œä¸�æ”¹åŠ¨ï¼‰

`ç”¨æˆ·/_index.json` ç»“æž„ï¼š
  {"<uid>": {"name","email","open_id","home","allow":1}}
uid = é‚®ç®± @ å‰�éƒ¨åˆ†ï¼ˆliuziyan / zhaoyunhao / liuxinyuanï¼‰
é    Nõ   ç”¨æˆ·z_index.jsonu   å…±äº«c                  óÀ   — t           j                             t          ¦  «        r9	 t	          j        t          t          d¬¦  «        ¦  «        S # t          $ r Y nw xY wi S )Núutf-8©Úencoding)ÚosÚpathÚexistsÚINDEXÚjsonÚloadÚopenÚ	Exception© ó    õU   /Users/liuxinyuan/Desktop/Hermesè¾“å‡º-å·¥ä½œç±»/æŠ¥é”€åŠ©æ‰‹/è„šæœ¬/expense_users.pyÚ
load_indexr      s_   € Ý	„w‡~‚~•eÑÔð ð	Ý”9�T¥%°'Ð:Ñ:Ô:Ñ;Ô;Ð;øÝð 	ð 	ð 	ØˆDð	øøøà€Is   ¦'A Á
AÁAc                 ó  — t          j        t           j                             t          ¦  «        d¬¦  «         t          dz   }t          j        | t          |dd¬¦  «        dd¬	¦  «         t          j        |t          ¦  «         d S )
NT©Úexist_okz.tmpÚwr   r   Fé   )Úensure_asciiÚindent)	r   Úmakedirsr	   Údirnamer   r   Údumpr   Úreplace)ÚdÚtmps     r   Ú
save_indexr!       sn   € Ý„K•”—’¥Ñ&Ô&°Ð6Ñ6Ô6Ð6Ý
�&‰.€CÝ„Iˆa•�c˜3¨Ð1Ñ1Ô1ÀÈaÐPÑPÔPÐPÝ„Jˆs•EÑÔÐÐÐr   Ú c                 óÀ   — | pd                      ¦   «                              ¦   «         }d|v r|                     d¦  «        d         S |pd                      ¦   «         pdS )u=   é‚®ç®± @ å‰�éƒ¨åˆ†ä½œ uidï¼›æ— é‚®ç®±æ—¶ç”¨å§“å��æ‹¼éŸ³å…œåº•r"   ú@r   Úunknown)ÚstripÚlowerÚsplit)ÚemailÚnameÚes      r   Úuid_ofr,   '   s[   € à	ˆ�"×ÒÑÔ×#Ò#Ñ%Ô%€AØ
ˆa€x€xØ�wŠw�s‰|Œ|˜AŒÐØˆJ�B×ÒÑÔÐ, 9Ð,r   c                 ó    — t          ¦   «                              ¦   «         D ],\  }}|                     d¦  «        r|d         | k    r||fc S Œ-dS )NÚopen_id)NN)r   ÚitemsÚget)r.   ÚuidÚus      r   Ú
by_open_idr3   /   sZ   € Ý‘,”,×$Ò$Ñ&Ô&ð ð ‰ˆˆQØ�5Š5�ÑÔð 	  )¤°Ò 7Ð 7Ø˜�6ˆMˆMˆMøØˆ:r   c                 ó¨  — t          ¦   «         }| pd                     ¦   «                              ¦   «         } | |v rt          ||          | ¬¦  «        S d| v r6|                      d¦  «        d         }||v rt          ||         |¬¦  «        S |                     ¦   «         D ]1\  }}|                     d¦  «        | k    rt          ||¬¦  «        c S Œ2dS )u<   æŒ‰ uid æˆ–é‚®ç®±/å§“å��å�–ç”¨æˆ·ï¼ˆå�« home ç»�å¯¹è·¯å¾„ï¼‰r"   )r1   r$   r   r*   N)r   r&   r'   Údictr(   r/   r0   )r1   ÚidxÚkr2   s       r   r0   r0   6   sÙ   € å
‰,Œ,€CØˆ9�"×
Ò
Ñ
Ô
×
#Ò
#Ñ
%Ô
%€CØ
ˆc€z€zÝ�C˜”H #Ð&Ñ&Ô&Ð&Ø
ˆc€z€zØ�IŠI�c‰NŒN˜1ÔˆØ�ˆ8ˆ8Ý˜˜Aœ AÐ&Ñ&Ô&Ð&Ø—	’	‘”ð "ð "‰ˆˆ1Ø�5Š5�‰=Œ=˜CÒÐÝ˜˜q�>‘>”>Ð!Ð!Ð!ð  àˆ4r   c                 ó*  — t          | ¦  «        }|sd S |                      d¦  «        p%t          j                             d|d         ¦  «        }t          j                             |¦  «        r|n$t          j                             t
          |¦  «        S )NÚhomer   r1   )r0   r   r	   ÚjoinÚisabsÚROOT)r1   r2   r9   s      r   Úhome_forr=   F   so   € ÝˆC‰Œ€AØð ØˆtØ�5Š5�‰=Œ=Ð<�BœGŸLšL¨°1°U´8Ñ<Ô<€DÝ”7—=’= Ñ&Ô&ÐDˆ4ˆ4­B¬G¯LªL½¸tÑ,DÔ,DÐDr   c                 óh   — t          | ¦  «        }t          |o|                      d¦  «        ¦  «        S )NÚallow)r0   Úbool)r1   r2   s     r   Ú
is_allowedrA   N   s*   € ÝˆC‰Œ€AÝ�Ð$�a—e’e˜G‘n”nÑ%Ô%Ð%r   c                 ó€  — t          | ¦  «        }|st          d| z  ¦  «        ‚dt          j                             dd¦  «        t          j                             ddd¦  «        t          j                             dd¦  «        ddfD ]6}t          j        t          j                             ||¦  «        d¬	¦  «         Œ7|S )
u6   å»ºå¥½ä¸ªäººå·¥ä½œåŒºç›®å½•ç»“æž„ï¼Œè¿”å›ž home è·¯å¾„u   æœªæ³¨å†Œç”¨æˆ·ï¼š%su   æ•°æ�®u	   æ”¶ä»¶ç®±u	   å·²å¤„ç�†u   æ—¥å¿—u   å·¥å…·u	   æ‰“å�°åŒ…Tr   )r=   ÚKeyErrorr   r	   r:   r   )r1   r9   r   s      r   Úensure_workspacerD   S   sª   € å�C‰=Œ=€DØð 5ÝÐ-°Ñ3Ñ4Ô4Ð4Ø�œŸš X¨{Ñ;Ô;½R¼W¿\º\È(ÐT_ÐalÑ=mÔ=mÝŒg�lŠl˜8 XÑ.Ô.°¸+ðGð :ð :ˆå
Œ•B”G—L’L  qÑ)Ô)°DÐ9Ñ9Ô9Ð9Ð9Ø€Kr   u	   åˆ˜æ–°å…ƒzliuxinyuan@biori.comÚ#ou_901b790c9afdda4a8f14554962b32664ú.r   )r*   r)   r.   r9   r?   u	   åˆ˜å­�ç ”zliuziyan@biori.comÚ#ou_2a926216f8c9bc8a4d53e4b3dc0d251cu   ç”¨æˆ·/liuziyanu	   èµµäº‘æµ©zzhaoyunhao@biori.comÚ#ou_7fab49a17fecc17934456d76a45d0ca0u   ç”¨æˆ·/zhaoyunhao)Ú
liuxinyuanÚliuziyanÚ
zhaoyunhaoc                  óV  — t          ¦   «         } d}t                               ¦   «         D ]T\  }}|| vr|| |<   |dz  }Œ|                     d¦  «        r+| |                              d¦  «        sd| |         d<   |dz  }ŒU|rt	          | ¦  «         t          D ]}t          |¦  «         Œ|S )Nr   r   r?   )r   ÚSEEDr/   r0   r!   rD   )r6   Únr1   r2   s       r   Úseed_missingrO   i   sÁ   € Ý
‰,Œ,€CØ	€AÝ—*’*‘,”,ð ð ‰ˆˆQØ�cˆ>ˆ>ØˆC�‰HØ�‰FˆAˆAØ�UŠU�7‰^Œ^ð 	 C¨¤H§L¢L°Ñ$9Ô$9ð 	Ø !ˆC�ŒH�WÑØ�‰FˆAøØð Ý�3‰ŒˆÝð ð ˆÝ˜ÑÔÐÐØ€Hr   Ú__main__u-   âœ… æ³¨å†Œè¡¨å°±ç»ªï¼ˆæ–°å¢ž/æ›´æ–° %d æ�¡ï¼‰r?   u   âœ… å·²å¼€æ”¾u   â�¸ æœªå¼€æ”¾z   Ú12ú r*   Ú6r)   Ú28u    ï½œ )r"   r"   )Ú__doc__r   r   r	   r   ÚabspathÚ__file__r<   r:   r   ÚSHAREDr   r!   r,   r3   r0   r=   rA   rD   rM   rO   Ú__name__rN   Úprintr/   r1   r2   Úmarkr   r   r   ú<module>r\      s_  ððð ð €€€Ø 	€	€	€	à	„w‡‚�r”w—’ r¤w§¢°xÑ'@Ô'@ÑAÔAÑBÔB€Ø
Œ�Š�T˜8 ]Ñ3Ô3€Ø	Œ�Š�d˜HÑ	%Ô	%€ðð ð ðð ð ð-ð -ð -ð -ðð ð ðð ð ð Eð Eð Eð&ð &ð &ð
ð ð ð 'Ð1GØCÈSÐ[\ð^ð ^à&Ð1EØCÐM^Ðijðlð là&Ð1GØCÐM`Ðklðnð nðð €ðð ð ð" ˆzÒÐØˆ‰Œ€AØ	€EÐ
9¸AÑ
=Ñ>Ô>Ð>Ø�*‘,”,×$Ò$Ñ&Ô&ð Eð E‰ˆˆQØ"#§%¢%¨¡.¤.ÐEˆˆ°oˆØˆˆ°°°°°a·e²e¸FÀBÑ6GÔ6GÐ6GÐ6GÐ6GÈÏÊÈwÐXZÑI[ÔI[ÐI[ÐI[ÐI[Ø/3¨t¨t°X°X¸c±]´]°]ðDñ 	Eô 	Eð 	Eð 	Eð ÐðEð Er   