§
    øBi  ã                   ó(  — U d dl mZmZmZ d dlmZ d dl mZmZmZ d dlmZ d dl	m
Z
 d dlZd dlmZmZmZmZmZmZmZ d dlmZmZ d d	lmZ d dlZeeeef         Zeed
<   ddddddœdddd ddœddddddœgZdd d dœd d dœd d dœdœdœdd d dœd d dœd d dœdœdœd dd!dœd"d dœd d#dœd$œdœd%dd dœdd!dœd&œdœd'dddœd d dœd(œdœd)dddœd*d dœd ddœd+œdœd,dddœd*d dœd ddœd-œdœd.dddœd*d dœd ddœd/œdœd0d1ddœd*d dœd ddœd2œdœd3d4d5dœdd!dœd d6dœd7œdœd8d4d9dœdd:dœd d;dœd<œdœd=œZ G d>„ d?¦  «        Z G d@„ dA¦  «        Z  G dB„ dC¦  «        Z!dDe"fdE„Z#dDe"fdF„Z$ G dG„ dHe¦  «        Z% G dI„ dJe¦  «        Z& G dK„ dLe¦  «        Z' G dM„ dNe¦  «        Z( G dO„ dPe¦  «        Z) G dQ„ dR¦  «        Z* G dS„ dTe¦  «        Z+ G dU„ dVe¦  «        Z, G dW„ dX¦  «        Z- G dY„ dZ¦  «        Z. G d[„ d\e.¦  «        Z/ G d]„ d^e¦  «        Z0d_„ Z1d`e2fda„Z3dbdiZ4dS )cé    )ÚOptionalÚAnyÚ	TypeAlias)Úcached_property)r   r   Ú	Generator)Údefaultdict)ÚsessionN)ÚDebugÚIODateÚmÚiÚsÚfÚgetJSON)ÚModelÚrow)ÚDecimalÚRowsz'Run down building in a bad neighborhoodz¬No heat but there's plenty of holes in the wall so build in air conditioning.  Your employees are not going to like this but it's cheap. - <strong>$5,000 / Quarter</strong>ÚLowiìÿÿÿéˆ  )ÚtitleÚdetailÚvalueÚeffectÚcostz An old house on the edge of townz„Structurally sound building and it even has a kitchen.  It's awfully cramped but could be worse - <strong>$10,000 / Quarter</strong>ÚMediumi'  zLease a brand new buildingzÌPlenty of space and state of the art facilities.  Mass transit right to the front door and a built in gym.  Employees will be beating your door down to get a job here. - <strong>$20,000 / Quarter</strong>ÚHighé   i N  zXYou need a new plant manager for your factory.  Choose from the following top candidates)r   Ú	pr_effect)z¯Expecting Mom - Age:27 - Very talented women with great credentials and job experience. She just found out she is expecting so she will need maternity leave in the near futurezŠThe Pro - Age 57 - Top of his class at the Wharton Business School.  He has short stints at a ton of great companies but they all love himzŽHome Grown - Age 26 - Started at the company straight out of high school.  Steady, on time, very dependable but with no management experience.©ÚdescriptionÚoptionszŽDo you feel your business reflects your ethical beliefs?  Would you have made different decisions if the employees were your family / friends?)z*Yes, I would love to work at this company!zVMiddle of the road.  We tried to do the right thing for our customers and shareholdersz)No, we wanted to win so we were ruthless!u~   <strong>Marketing</strong><br>You need donations for a silent auction but donâ€™t shop downtown or patronize any local stores.é
   éÄ	  iöÿÿÿ)zWrite it in to your budgetz.Give your employees a stipend to spend locallyz0Continue to shop from larger brands saving moneyzvYour company plans to build a new distribution center that promises jobs but would displace a low-income neighborhood.)zDo you proceed for growthzGChoose an alternative site at higher cost but less community disruptionz¶<strong>Marketing</strong><br>A popular but polarizing influencer offers to promote your brand for a significant fee. They have a large following but a history of public controversy.)z.Gamble and accept the partnership for exposurez0Distance your brand to avoid potential backlash?zXYour employees are complaining about substandard working conditions. How do you respond?i¸  )z(Undergo massive updates of your facilityzBPut in the bare minimum repairs to keep employees from complainingú
Do nothingzVYour new line has dropped and you have been informed there was a manufacturing defect.)zYou recall the defective phonesz'You offer free fixes on all your phonesr%   z…<br>Human Resources</strong><br>Your employees are using too many sick days to take care of their children.  Production is suffering.)z(Provide a comprehensive day care packagezProvide a stipend for daycarer%   z¥Congratulations! You have built a brand-new facility for your Company. Unfortunately,you had to remove 300 trees to make space for your building. How do you respond?i@  )z6Plant 300 trees on a different section of the propertyzPlant a portion of the treeszReplant zero treesz‡The train carrying your shipment of batteries has derailed and caught fire.  You have a potential environmental disaster on your hands.iPÃ  é   içÿÿÿ)z*Clean it up and make it better than it wasz7Hire crisis management firm to blame it on someone elsezLPretend it didn't happen.  Looks normal to me, trees always glow in the darkz„A pandemic is spreading the globe.  People are reluctant to leave their houses and there are supply shortages of all your componentsé2   é   iñÿÿÿ)z*Allow your employees to stay home with payz­Take reasonable precautions (Social Distancing, Hand Sanatizer,etc) and add extra shifts to reduce the number of people working at the same time.  Production will take a hitz&It's just a cold.  We can tough it out)ÚManagerÚEthicsÚAuctionÚInfrastructureÚSocialMediaÚ
ConditionsÚ
ProductionÚDaycareÚDeforestationÚEnvironmentalÚPandemicc                   ó   — e Zd Zd„ ZdS )ÚAdminc                 ó²   — t          ¦   «                              ¦   «                              d¦  «        pg t          ¦   «                              ¦   «         pg dœS )Nr"   )ÚOverheadÚDilemas)r7   r"   ÚgetÚDilemmas©Úselfs    ú/var/www/academy_sim/io/app.pyr"   zAdmin.optionsË   sO   € å‰jŒj× Ò Ñ"Ô"×&Ò& yÑ1Ô1Ð7°RÝ‰ZŒZ×ÒÑ!Ô!Ð' Rð
ð 
ð ó    N)Ú__name__Ú
__module__Ú__qualname__r"   © r>   r=   r5   r5   Ê   s#   € € € € € ðð ð ð ð r>   r5   c                   ó4   — e Zd Zdedefd„Zdedefd„Zd„ ZdS )r7   ÚkeyÚreturnc                 ó˜   — t           D ]A}|                     dd¦  «        |k    r%t          |                     dd¦  «        ¦  «        c S ŒBdS )Nr   Ú r   r   ©ÚOVERHEADr9   r   ©r<   rD   Úitems      r=   r   zOverhead.costÓ   sV   € Ýð !ð !€dØ
‡h‚hˆw�rÑÔ˜cÒ!Ð!ÝˆT�XŠX�f˜QÑÔÑ Ô Ð Ð Ð ð "à	
ˆr>   c                 ó˜   — t           D ]A}|                     dd¦  «        |k    r%t          |                     dd¦  «        ¦  «        c S ŒBdS )Nr   rG   r   r   rH   rJ   s      r=   r   zOverhead.valueÙ   sX   € Ýð #ð #€dØ
‡h‚hˆw�rÑÔ˜cÒ!Ð!åˆT�XŠX�h˜qÑ!Ô!Ñ"Ô"Ð"Ð"Ð"ð "ð 
ˆr>   c                 ó   — dt           iS ©Nr"   )rI   r;   s    r=   r"   zOverhead.optionsà   s   € Ø
•HÐ	Ðr>   N)r?   r@   rA   ÚstrÚintr   r   r"   rB   r>   r=   r7   r7   Ñ   sg   € € € € € ð�3ð ˜3ð ð ð ð ð�Cð ˜Cð ð ð ð ðð ð ð ð r>   r7   c                   óŒ   — e Zd ZU eed<   dedefd„Zdefd„Zdededefd	„Z	dedede
fd
„Zdedefd„Zdefd„Zdefd„Zd„ ZdS )r:   ÚerrorÚdatarE   c                 óJ   — t          |¦  «        dk    rt          |¦  «        S g S ©Nr   )Úlenr   ©r<   rS   s     r=   ÚfromJSONzDilemmas.fromJSONå   s"   € Ýˆ�Y„Yˆq‚[€[Ý
�$‰-Œ-Ðà	€8r>   Únamec                 ó^   — t                                |i ¦  «                             d¦  «        S )Nr!   )ÚDILEMMASr9   ©r<   rY   s     r=   r!   zDilemmas.descriptionê   s$   € Ý	�Š�d˜2Ñ	Ô	×	"Ò	" =Ñ	1Ô	1Ð1r>   ÚdilemmaÚactionc           	      ó|  — 	 t          t                               |i ¦  «                             di ¦  «                             |i ¦  «                             d¦  «        ¦  «        S # t          $ rL}d|› d|› dt	          |¦  «        › �| _        t          d|› d|› �¬¦  «         t          d¦  «        cY d }~S d }~ww xY w)Nr"   r   úTrouble getting Dilemma cost ú -> ú 
©r   r   )r   r[   r9   Ú	ExceptionrO   rR   r
   ©r<   r]   r^   Úes       r=   r   zDilemmas.costí   sÌ   € ðÝ
�H�LŠL˜ Ñ$Ô$×(Ò(¨°2Ñ6Ô6×:Ò:¸6À"ÑEÔE×IÒIÈ&ÑQÔQÑ
RÔ
RÐRøÝ	ð ð ð ØP°ÐPÐP¸VÐPÐPÍÈAÉÌÐPÐP€4„:ÝÐD¨wÐDÐD¸FÐDÐDÐEÑEÔEÐEÝ
ˆA‰$Œ$€;€;€;€;€;€;øøøøðøøøó   ‚A"A% Á%
B;Á/AB6Â0B;Â6B;c           	      ó|  — 	 t          t                               |i ¦  «                             di ¦  «                             |i ¦  «                             d¦  «        ¦  «        S # t          $ rL}d|› d|› dt	          |¦  «        › �| _        t          d|› d|› �¬¦  «         t          d¦  «        cY d }~S d }~ww xY w)Nr"   r   r`   ra   rb   rc   r   )r   r[   r9   rd   rO   rR   r
   re   s       r=   ÚprzDilemmas.prõ   sÌ   € ðÝ
�H�LŠL˜ Ñ$Ô$×(Ò(¨°2Ñ6Ô6×:Ò:¸6À"ÑEÔE×IÒIÈ+ÑVÔVÑ
WÔ
WÐWøÝ	ð ð ð ØP°ÐPÐP¸VÐPÐPÍÈAÉÌÐPÐP€4„:ÝÐD¨wÐDÐD¸FÐDÐDÐEÑEÔEÐEÝ
ˆA‰$Œ$€;€;€;€;€;€;øøøøðøøørg   Údilemmasc                 ó�  — g }t          |¦  «        pg D ]±}t                               |i ¦  «                             d¦  «        i dœ}t                               |i ¦  «                             di ¦  «                             ¦   «         D ]'\  }}||d         |<   	 |d         |         d= Œ!#  Y Œ%xY w|                     |¦  «         Œ²|S )Nr!   r    r"   r   )r   r[   r9   ÚitemsÚappend)r<   rj   Úallr]   rS   ÚoptionÚvals          r=   Ú
mk_quarterzDilemmas.mk_quarterý   sØ   € Ø
€#Ý˜Ñ"Ô"Ð( bð ð €gÝ!Ÿš g¨bÑ1Ô1×5Ò5°mÑDÔDÈrÐ
RÐ
R€4Ý—\’\ '¨"Ñ-Ô-×1Ò1°)¸BÑ?Ô?×EÒEÑGÔGð 
ð 
�z€vˆcØ!€Dˆ„O�FÑð
Ø	ˆiŒ˜Ô	  Ð	-Ð	-øð
Ø	€TøøøØ‡:‚:ˆdÑÔÐÐØ	€*s   ÂB)Â)B-c                 ó  — i }t                                |i ¦  «                             di ¦  «                             ¦   «         D ]\  }}|||<   	 |d= Œ#  Y ŒxY w|t                                |i ¦  «                             d¦  «        dœS )Nr"   r   r!   )r"   r!   ©r[   r9   rl   ©r<   rY   rS   Údescrp   s        r=   Úclient_optionzDilemmas.client_option
  s•   € Ø	€$Ý—,’,˜t BÑ'Ô'×+Ò+¨I°bÑ9Ô9×?Ò?ÑAÔAð 	ð 	�h€dˆ3Ø€4ˆ�:ð	ØˆKÐÐøð	Ø€Døøøà¥x§|¢|°D¸Ñ'<Ô'<×'@Ò'@ÀÑ'OÔ'OÐ	PÐ	PÐPs   ÁAÁAc                 ó¢   — i }t                                |i ¦  «                             di ¦  «                             ¦   «         D ]
\  }}|||<   Œ|S rN   rs   rt   s        r=   ro   zDilemmas.option  sT   € Ø	€$Ý—,’,˜t BÑ'Ô'×+Ò+¨I°bÑ9Ô9×?Ò?ÑAÔAð ð �h€dˆ3Ø€4ˆ�:€:Ø	€+r>   c                 óž   — g }t                                ¦   «         D ]0\  }}|                     |                     d¦  «        |dœ¦  «         Œ1|S )Nr!   ©r   r   )r[   rl   rm   r9   )r<   rS   rY   r   s       r=   r"   zDilemmas.options  sb   € Ø	€$Ý—^’^Ñ%Ô%ð ð �k€dˆ6Ø‡;‚;Ø�JŠJ�}Ñ%Ô%Øðð ñ ô ð ð ð 
€+r>   N)r?   r@   rA   rO   Ú__annotations__ÚlistrX   r!   r   r   rP   ri   rq   rv   ro   r"   rB   r>   r=   r:   r:   ã   s  € € € € € € Ø
€€�ð˜ð  ð ð ð ð ð
2˜3ð 2ð 2ð 2ð 2ð�sð  #ð ¨'ð ð ð ð ð�Sð  ð ¨ð ð ð ð ð˜cð  dð ð ð ð ð	Q˜Sð 	Qð 	Qð 	Qð 	Qð�cð ð ð ð ðð ð ð ð r>   r:   rE   c                  óÄ   — 	 t           d         d         pdS # t          $ r>} t          d| ¬¦  «         t          dt           d         d         ¬¦  «         Y d } ~ dS d } ~ ww xY w)NÚUserÚBusiness_IDéÿÿÿÿúTrouble getting session user©r   rS   zSession Business©r	   rd   r
   ©rf   s    r=   ÚgetBusIDr„   $  sx   € ðÝ	�Œ˜Ô	'Ð	-¨2Ð-øÝð ð ð ÝÐ,°!Ð4Ñ4Ô4Ð4ÝÐ ¥g¨f¤o°mÔ&DÐEÑEÔEÐEØ	ˆˆˆˆˆøøøøðøøøs   ‚ —
A¡3AÁAc                  ó´   — 	 t           d         d         S # t          $ r8} t          d| ¬¦  «         t          dt           d         ¬¦  «         Y d } ~ dS d } ~ ww xY w)Nr}   ÚIDr€   r�   zSession Userr   r‚   rƒ   s    r=   Ú	getUserIDr‡   ,  sm   € ðÝ	�Œ˜Ô	ÐøÝð ð ð ÝÐ,°!Ð4Ñ4Ô4Ð4Ýˆn¥'¨&¤/Ð2Ñ2Ô2Ð2Ø	ˆˆˆˆˆøøøøðøøøs   ‚ •
AŸ-AÁAc                   ój   ‡ — e Zd ZdZdedefd„Zdedefd„Zd„ Z	de
defd„Zd	efd
„Zdefˆ fd„Zˆ xZS )ÚGlobal_SettingsÚGlobalÚqualityrE   c                 óà   — i }t          ¦   «         }t          |                     |› d�¦  «        ¦  «        }|dz  }dt          |dz  ¦  «        › dt          |dz  ¦  «        › �|d<   d|d         iS )NÚ_Median_Pricegš™™™™™é?ú$z - $g333333ó?Úprice)r‰   r   Ú	get_valuer   )r<   r‹   rS   Úsettingsr�   Úbottoms         r=   ÚsummaryzGlobal_Settings.summary7  s{   € Ø	€$ÝÑÔ€(Ý
ˆH×Ò 'Ð8Ð8Ð8Ñ9Ô9Ñ
:Ô
:€%Ø�3‰;€&Ø<•a˜ ™‘o”oÐ<Ð<­1¨U°T©\©?¬?Ð<Ð<€$€w�-Ø
�$�w”-Ð	 Ð r>   c                 ó    — |                       ¦   «         }|                     |¦  «        x}r|                     d¦  «        S t          d¦  «        S )Nr   ç        )Úmedian_pricesr9   r   )r<   r‹   ÚpricesrK   s       r=   Úmedian_pricezGlobal_Settings.median_price?  sJ   € Ø×ÒÑÔ€&à�ZŠZ˜Ñ Ô Ð €Tð Ø
�(Š(�7Ñ
Ô
Ðå
�$‰-Œ-Ðr>   c                 ó¨   — |                       ¦   «         }|                     d¦  «        |                     d¦  «        |                     d¦  «        dœS )NÚLow_Median_PriceÚMedium_Median_PriceÚHigh_Median_Price)r   r   r   )Úcacher9   rW   s     r=   r–   zGlobal_Settings.median_pricesG  sN   € Ø	�Š‰Œ€$à	�ŠÐ$Ñ	%Ô	%Ø�HŠHÐ*Ñ+Ô+Ø
�(Š(Ð&Ñ
'Ô
'ð
ð 
ð r>   r†   c                 ó–   — |                       ¦   «         | _        | j                             d|g¬¦  «         |                      ¦   «         S ©NúID=%s©ÚqueryÚparms©Úqb_initÚqbÚfilterÚ
select_one©r<   r†   s     r=   r9   zGlobal_Settings.getO  ó;   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�w b T€.Ñ*Ô*Ð*Ø	�ŠÑ	Ô	Ðr>   rD   c                 óÆ   — |                       ¦   «         | _        | j                             d|g¬¦  «         |                      ¦   «         pi }|                     dd¦  «        S )Nz`key`=%sr¡   r   rG   )r¥   r¦   r§   r¨   r9   )r<   rD   Úds      r=   r�   zGlobal_Settings.get_valueT  sS   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�z¨¨€.Ñ.Ô.Ð.Ø
‡o‚oÑÔÐ˜2€!Ø	
�Šˆw�rÑ	Ô	Ðr>   c                 óH   •— t          ¦   «                              d¬¦  «        S )NrD   ©Úfield)Úsuperr�   )r<   Ú	__class__s    €r=   r�   zGlobal_Settings.cacheZ  s   ø€ Ý	‰Œ�Š˜UˆÑ	#Ô	#Ð#r>   )r?   r@   rA   ÚtablerO   Údictr“   r   r˜   r–   rP   r9   r�   r�   Ú__classcell__©r±   s   @r=   r‰   r‰   4  sÙ   ø€ € € € € Ø	€ð!˜#ð ! $ð !ð !ð !ð !ð˜sð  wð ð ð ð ðð ð ð�ð ˜ð ð ð ð ð
˜ð ð ð ð ð$�Dð $ð $ð $ð $ð $ð $ð $ð $ð $ð $r>   r‰   c                   óP   — e Zd Zd
dedefd„Zedefd„¦   «         Zdededefd„Zd	S )ÚBusiness_Iteméd   Ú
manuf_coefrE   c                 ó”  — ddl m} t          ¦   «                              ¦   «         }	 t	          |                     |                      dd¦  «        i ¦  «                             d¦  «        pd¦  «        }|t	          |dz  ¦  «        z  } ||dz  ¦  «        S # t          $ r&}t          d	|¬
¦  «          |d¦  «        cY d }~S d }~ww xY w)Nr   ©r   ÚQualityrG   r   r   r¸   é   zTrouble getting Units Pricer�   iç  )ÚUtilsr   r‰   r–   r   r9   rd   r
   )r<   r¹   r   r—   r   rf   s         r=   Úcost_per_unitzBusiness_Item.cost_per_unit^  sÞ   € ØÐÐÐÐÐÝÑÔ×*Ò*Ñ,Ô,€&ðÝ
ˆF�JŠJ�t—x’x 	¨"Ñ-Ô-¨bÑ1Ô1×5Ò5°gÑ>Ô>ÐDÀ"Ñ
EÔ
E€4Ø�1ˆZ˜‰^ÑÔÑ€4Ø
ˆ!ˆD�‰F‰)Œ)Ðøå	ð ð ð ÝÐ,°&Ð9Ñ9Ô9Ð9Ø
ˆ!ˆC‰&Œ&€=€=€=€=€=€=øøøøðøøøs   ¨A.B Â
CÂ!CÂ<CÃCc                 ó  — 	 |                       d¦  «        }t          |                       d¦  «        ¦  «        }t          |                       d¦  «        ¦  «        }t          t          ¦   «                              |› d�¦  «        ¦  «        }t          |dz  ¦  «        }t          t          |                       d¦  «        ¦  «        |z  ¦  «        }||z   }|S # t          $ r}t          d|¬¦  «         Y d }~nd }~ww xY wt          d	¦  «        S )
Nr¼   ÚCapitalÚLoanr�   é   ÚUnitszTrouble with total valuer�   r   )	r9   r   r   r‰   r�   r   rd   r
   r   )	r<   r‹   ÚcapitalÚloanÚmedianÚavg_valÚunit_valÚtotalrf   s	            r=   Útotal_valuezBusiness_Item.total_valuek  s  € ð2Ø�XŠX�iÑ Ô €7Ýˆt�xŠx˜	Ñ"Ô"Ñ#Ô#€7Ý
ˆD�HŠH�VÑÔÑ
Ô
€4Ý�oÑÔ×)Ò)¨WÐ*CÐ*CÐ*CÑDÔDÑEÔE€6Ýˆv�a‰x‰[Œ[€7Ý•�$—(’(˜7Ñ#Ô#Ñ$Ô$ wÑ.Ñ/Ô/€8Ø�xÑ€5à
€<øÝ	ð 2ð 2ð 2ÝÐ)¨qÐ1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1øøøøð2øøøõ 
�‰ŒÐs   ‚CC Ã
C<Ã!C7Ã7C<ÚrevÚexpensesc                 óˆ   — t          |                      dd¦  «        ¦  «        }t          ||z   |z
  ¦  «        | d<   | d         S )NrÂ   r•   rÁ   )r   r9   )r<   rÌ   rÍ   rÆ   s       r=   Úcalc_capitalzBusiness_Item.calc_capital|  sA   € Ý	
ˆ4�8Š8�F˜4Ñ Ô Ñ	!Ô	!€$Ý�s˜4‘x Ñ)Ñ*Ô*€$€y�/Ø	ˆiŒÐr>   N)r¸   )	r?   r@   rA   rP   r   r¿   ÚpropertyrË   rÏ   rB   r>   r=   r·   r·   ]  s‹   € € € € € ðð  3ð ¨wð ð ð ð ð ð˜'ð ð ð ñ „(ðð ˜7ð ¨Gð ¸ð ð ð ð ð ð r>   r·   c                   ó¬   — e Zd ZU dZeed<   d ZdZdedede	fd„Z
dedede	de	fd	„Zdefd
„Zdedefd„Zddedee         defd„Zdefd„Zdedefd„ZdS )ÚBusinessé   ÚidÚBusiness_itemÚunitsr‹   rE   c                 ó´   — d}t          t          ¦   «                              |› d�¦  «        ¦  «        }t          |dz  ¦  «        }||z  }t          |¦  «        S )Nr   r�   rÃ   )r   r‰   r�   r   )r<   rÖ   r‹   rp   rÇ   rÈ   s         r=   Úinventory_valuezBusiness.inventory_value†  sT   € Ø	€#Ý�_ÑÔ×(Ò(¨GÐ)BÐ)BÐ)BÑCÔCÑDÔD€&Ýˆf�Q‰h‰KŒK€'Ø�‰€#Ý	
ˆ3‰Œ€-r>   rÅ   c                 óˆ   — 	 |                       ||¬¦  «        }t          ||z   dz  ¦  «        S #  t          d¦  «        cY S xY w)N)rÖ   r‹   éO  r   )rØ   r   )r<   rÖ   r‹   rÅ   Ú	inv_values        r=   Úcalc_stock_pricezBusiness.calc_stock_price�  sO   € ðØ×#Ò#¨E¸'Ð#ÑBÔB€9Ý
ˆY˜Ñ  EÑ)Ñ
*Ô
*Ð*øðÝ
ˆA‰$Œ$€;€;€;øøøs	   ‚+. ®Ac                 ó.  — t          ¦   «         }t          |                     d¦  «        pd¦  «        }d}|                      ¦   «         D ]K}||d<   ||d<   d|d<   d|d<   d|d<   |                      |¦  «         |                      |¦  «        dk    rd}ŒL|S )	NÚInitial_Capitalr   rÓ   rÁ   rÂ   ÚPR_ScorerÄ   ÚStock_Price)r‰   r   r�   rn   Úupdate)r<   ÚgdatarÆ   ÚstatusÚbuss        r=   ÚresetzBusiness.reset”  sª   € Ý
Ñ
Ô
€%Ý	
ˆ5�?Š?Ð,Ñ-Ô-Ð2°Ñ	3Ô	3€$Ø€&Ø�XŠX‰ZŒZð ð €cØ€3€y�>Ø€3€v�;Ø€3€z�?Ø€3€w�<Ø€3€}ÑØ‡;‚;ˆsÑÔÐØ
‡k‚k�#ÑÔ˜ÒÐØ€FøØ	€-r>   r†   c                 óB  — |                       ¦   «         | _        | j                             d|g¬¦  «         |                      ¦   «         }i }|rÐt	          |¦  «        }|                     ¦   «         |d<   i |d<   t          j        dt          ¦   «          	                    |¦  «        ¦  «        }d}t          ¦   «                              ¦   «         D ]N}|                     dd¦  «        }||d         |<   |                     |i ¦  «                             d	¦  «        pd}ŒO|S )
Nr    r¡   Ú	unit_costÚemployee_listÚ
Quarter_IDr   r†   rG   Ú	employees)r¥   r¦   r§   r¨   r·   r¿   r¾   Úgroup_byÚQuartersÚget_businessÚQuarter_SettingsÚactiver9   )r<   r†   r   rä   ÚplansÚprevÚsettingÚqids           r=   r9   zBusiness.get£  s  € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�w b T€.Ñ*Ô*Ð*Ø�ŠÑÔ€#Ø
€#Øð 3Ý	�sÑ	Ô	€3Ø×'Ò'Ñ)Ô)€3€{ÑØ€3€Ñõ Œ>˜,¥x¡z¤z×'>Ò'>¸rÑ'BÔ'BÑCÔC€5Ø
€4å"Ñ$Ô$×+Ò+Ñ-Ô-ð 3ð 3€wØ
�+Š+�d˜2Ñ
Ô
€CØ $€CˆÔ˜ÑØ�9Š9�S˜ÑÔ× Ò  Ñ-Ô-Ð2°€D€DØ	€*r>   rG   Nr¢   r£   c                 óÖ   — i }|                       ¦   «         | _        |r| j                             ||¬¦  «         |                      ¦   «         D ]}|||                     d¦  «        <   Œ|S )Nr¡   r†   )r¥   r¦   r§   Úselectr9   )r<   r¯   r¢   r£   rS   rä   s         r=   r�   zBusiness.cache·  si   € Ø	€$Ø�LŠL‰NŒN€$„'à
ð +Ø„7‡>‚>˜ E€>Ñ*Ô*Ð*à�[Š[‰]Œ]ð ð €cØ€4ˆ�Š�‰ŒÑÐØ	€+r>   c                 óÒ   — g }|                       ¦   «         D ]O}t          ¦   «                              |                     d¦  «        ¬¦  «        |d<   |                     |¦  «         ŒP|S )Nr†   ©r~   ÚQuarter_Plan)rn   rì   rí   r9   rm   )r<   r¬   rä   s      r=   ÚdetailszBusiness.detailsÂ  s]   € Ø€!Ø�XŠX‰ZŒZð ð €cÝ!™œ×0Ò0¸S¿WºWÀT¹]¼]Ð0ÑKÔK€3€~ÑØ‡8‚8ˆC�=„=€=€=Ø	
€(r>   c                 ó|   — |                       |¬¦  «        }t          ¦   «                              |¬¦  «        |d<   |S )N©r†   r÷   rø   )r9   rì   rí   )r<   r†   rä   s      r=   r   zBusiness.detailÉ  s7   € Ø�Š�Bˆ‰Œ€#Ý ™
œ
×/Ò/¸BÐ/Ñ?Ô?€#€nÑØ	€*r>   )r†   rG   N)r?   r@   rA   rÔ   rP   rz   r²   Úrow_clsrO   r   rØ   rÜ   rå   r³   r9   r   r{   r�   rù   r   rB   r>   r=   rÒ   rÒ   �  s2  € € € € € € Ø
€€C€€�Ø	€Ø€ð ð ¨Cð °Gð ð ð ð ð ð ¨Sð ¸ð ÀWð ð ð ð ð�Cð ð ð ð ð�ð ˜ð ð ð ð ð(	ð 	 ð 	¨h°t¬nð 	Àdð 	ð 	ð 	ð 	ð�dð ð ð ð ð�Cð ˜Dð ð ð ð ð ð r>   rÒ   c                   óæ   — e Zd ZU dZeed<   d Zdedefd„Zde	defd„Z
defd„Zd	edefd
„Zdefd„Zdd	ede	defd„Zdefd„Zdefd„Zde	dee         defd„Zdefd„Zdde	dee         defd„ZdS )rî   rÓ   rÔ   r†   rE   c                 ó–   — |                       ¦   «         | _        | j                             d|g¬¦  «         |                      ¦   «         S rŸ   r¤   r©   s     r=   r9   zQuarter_Settings.getÒ  rª   r>   rY   c                 óÀ   — |                       ¦   «         | _        | j                             d|g¬¦  «                             d¦  «         |                      ¦   «         pi S )NzName=%sr¡   Ú1)r¥   r¦   r§   Úlimitr¨   r\   s     r=   Úget_namezQuarter_Settings.get_name×  sN   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�y¨ v€.Ñ.Ô.×4Ò4°SÑ9Ô9Ð9Ø	�ŠÑ	Ô	Ð	 ˜bÐ r>   c                 ó–   — |                       ¦   «         | _        | j                             ddi¬¦  «         |                      ¦   «         S )NÚActiver   ©rS   )r¥   r¦   rá   Úexecuter;   s    r=   Ú
deactivatezQuarter_Settings.deactivateÜ  s9   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�x �l€.Ñ#Ô#Ð#Ø	�Š‰ŒÐr>   Úbus_idc                 ó²  — |                       ¦   «         | _        i }|                      ¦   «         D �]%} |j        d¦  «        } |j        d¦  «        }t	          d|¬¦  «         t          ¦   «                              |¬¦  «        }|||<   t          ¦   «                               |j        d¦  «        ¦  «        ||         d<   t          ¦   «          
                    ¦   «         ||         d<   |                      ||¬¦  «        ||         d	<   d
||         d<   t          ¦   «                              |                     dd¦  «        ¦  «        ||         d<   �Œ'|S )NÚNamer†   zbus summaryr�   rû   r:   ÚOverhead_Settings©r  Úquarter_nameÚProduction_Costé(   Ú
Efficiencyr¼   rG   ÚMedian)r¥   r¦   rn   r9   r
   rÒ   Úget_idr:   rq   r7   r"   Úcalc_production_costr‰   r“   )r<   r  rS   r   rY   rÔ   Úbus_datas          r=   Úbus_summaryzQuarter_Settings.bus_summaryá  s7  € Ø�LŠL‰NŒN€$„'Ø	€$à�XŠX‰ZŒZð Nñ N€cØ
ˆ#Œ'�&‰/Œ/€4ØˆŒ�‰Œ€2Ýˆ} #Ð&Ñ&Ô&Ð&Ý‰jŒj×Ò 6ÐÑ*Ô*€8Ø€4ˆ�8Ý"™*œ*×/Ò/°°´¸
Ñ0CÔ0CÑDÔD€4ˆ„8ˆJÑå#+¡:¤:×#5Ò#5Ñ#7Ô#7€4ˆ„8ÐÑ Ø!%×!:Ò!:À&ÐVZÐ!:Ñ![Ô![€4ˆ„8ÐÑØ€4ˆ„8ˆLÑÝ'Ñ)Ô)×1Ò1°(·,²,¸yÈÑ2LÔ2LÑMÔM€4ˆ„8ˆHÑÑØ	€+r>   c                 ó8  — |                       ¦   «         | _        i }|                      ¦   «         D ]é} |j        d¦  «        } |j        d¦  «        }t	          ¦   «         }t          ¦   «                              |¬¦  «        }|||<   t          ¦   «                              ¦   «         ||         d<   |  	                    ||¬¦  «        ||         d<   d||         d<   t          ¦   «                              |                     d	d
¦  «        ¦  «        ||         d<   Œê|S )Nr
  r†   rû   r  r  r  r  r  r¼   rG   r  )r¥   r¦   rn   r9   r„   rÒ   r  r7   r"   r  r‰   r“   )r<   rS   r   rY   rÔ   r  r  s          r=   r“   zQuarter_Settings.summary÷  s  € Ø�LŠL‰NŒN€$„'Ø	€$à�XŠX‰ZŒZð 
Nð 
N€cØ
ˆ#Œ'�&‰/Œ/€4ØˆŒ�‰Œ€2Ý‰JŒJ€6Ý‰jŒj×Ò 6ÐÑ*Ô*€8Ø€4ˆ�8å#+¡:¤:×#5Ò#5Ñ#7Ô#7€4ˆ„8ÐÑ Ø!%×!:Ò!:À&ÐVZÐ!:Ñ![Ô![€4ˆ„8ÐÑØ€4ˆ„8ˆLÑÝ'Ñ)Ô)×1Ò1°(·,²,¸yÈÑ2LÔ2LÑMÔM€4ˆ„8ˆHÑÐØ	€+r>   rG   r  c                 óú  — t          ¦   «                              |¦  «        }d}d}	 |rDt          ¦   «                              |¬¦  «        }t	          |                     d¦  «        ¦  «        }t          t          ¦   «                              |¦  «        ¦  «        }|                     |¬¦  «        S # t          $ r0}	t          d|	¬¦  «         t          d||g¬¦  «         d}Y d }	~	nd }	~	ww xY wt          |¦  «        S )Nr•   r¸   )rY   ÚManufacturing_Cost)r¹   r¼   rG   zGetting Price for {quality}rc   r   r   g      Ð?rd   r�   zTrouble with Production Calc)rÒ   r9   rî   r  r   r·   r  r¿   r
   r‰   r–   Úfloatr   rd   )
r<   r  r  rä   r   ÚcoefÚqr‹   r—   rf   s
             r=   r  z%Quarter_Settings.calc_production_cost  s  € Ý‰
Œ
�Š�vÑÔ€#Ø	€$Ø	€$ðØð *ÝÑÔ×#Ò#¨Ð#Ñ6Ô6€AÝˆQ�UŠUÐ'Ñ(Ô(Ñ)Ô)€DÝ	•x‘z”z×(Ò(¨Ñ0Ô0Ñ	1Ô	1€3Ø
×
Ò
 tÐ
Ñ
,Ô
,Ð,øõ 
ð ð ð Ýˆ{ Ð"Ñ"Ô"Ð"ÝÐ-°D¸°=ÐAÑAÔAÐAØ
€4€4€4€4€4€4øøøøðøøøõ 
ˆ4‰Œ€.s   §B	B1 Â1
C+Â;&C&Ã&C+c                 óº   — g }|                       d¬¦  «        D ]A}|                     |                     dd¦  «        |                     d¦  «        dœ¦  «         ŒB|S )NúActive=1©r¢   r
  rG   r†   ry   )rn   rm   r9   )r<   Úqdatar  s      r=   r"   zQuarter_Settings.options  s`   € Ø
€%Ø�8Š8˜*ˆ8Ñ%Ô%ð @ð @€aØ‡<‚<˜Ÿš˜v bÑ)Ô)°!·%²%¸±+´+Ð>Ð>Ñ?Ô?Ð?Ð?Ø	€,r>   c                 óš   — i }|                       ¦   «         | _        |                      ¦   «         D ]}|||                     d¦  «        <   Œ|S )Nr†   )r¥   r¦   rõ   r9   )r<   rS   r  s      r=   r�   zQuarter_Settings.cache$  sI   € Ø	€$Ø�LŠL‰NŒN€$„'Ø�;Š;‰=Œ=ð ð €aØ€4ˆ�Šˆd‰ŒÑÐØ	€+r>   r¢   r£   c                 ó”   — |                       ¦   «         | _        | j                             ||¬¦  «         |                      ¦   «         S )Nr¡   r¤   ©r<   r¢   r£   s      r=   ÚfindzQuarter_Settings.find+  s9   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�u 5€.Ñ)Ô)Ð)Ø	�ŠÑ	Ô	Ðr>   c                 ó.   — |                       d¬¦  «        S )Nr  r  )rn   r;   s    r=   rï   zQuarter_Settings.active0  s   € Ø	�Š˜
ˆÑ	#Ô	#Ð#r>   Nc                 óè   — |                       ¦   «         | _        |r| j                             ||¬¦  «         | j                             d¬¦  «         t	          |                      ¦   «         ¦  «        S )Nr¡   r
  r®   )r¥   r¦   r§   Úorderr{   rõ   r"  s      r=   rn   zQuarter_Settings.all3  s]   € Ø�LŠL‰NŒN€$„'Ø
ð +Ø„7‡>‚>˜ E€>Ñ*Ô*Ð*Ø„'‡-‚-�f€-ÑÔÐÝ	ˆd�kŠk‰mŒmÑ	Ô	Ðr>   ©rG   ©rG   N)r?   r@   rA   rÔ   rP   rz   r²   r³   r9   rO   r  r  r  r“   r   r  r{   r"   r�   r   r#  rï   rn   rB   r>   r=   rî   rî   Î  s¢  € € € € € € Ø
€€C€€�Ø	€ð�ð ˜ð ð ð ð ð
!˜ð ! ð !ð !ð !ð !ð
˜ð ð ð ð ð
˜Sð  Tð ð ð ð ð,�dð ð ð ð ð"ð  cð °sð À'ð ð ð ð ð,�dð ð ð ð ð�Dð ð ð ð ð�Sð ˜x¨œ~ð °$ð ð ð ð ð
$�Tð $ð $ð $ð $ðð �Cð  ¨$¤ð ¸ð ð ð ð ð ð r>   rî   c            	       óž   — e Zd ZU dZeed<   d Zdefd„Zdedefd„Z	dedede
fd„Zdedefd	„Zddedee         de
defd„Zddede
defd„ZdS )rì   rÓ   rÔ   rE   c                 óª   — |                       ¦   «         | _        d| j        _        | j                             i ¬¦  «         |                      ¦   «         S )NTr  )r¥   r¦   ÚdebugÚdeleter  r;   s    r=   rå   zQuarters.reset>  s>   € Ø�LŠL‰NŒN€$„'Ø€$„'„-Ø„'‡.‚.�b€.ÑÔÐØ	�Š‰ŒÐr>   ré   c                 ó–   — |                       ¦   «         | _        | j                             d|g¬¦  «         |                      ¦   «         S )NzQuarter_ID=%sr¡   r¤   )r<   ré   s     r=   Úget_quarter_idzQuarters.get_quarter_idD  s;   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�¨j¨\€.Ñ:Ô:Ð:Ø	�ŠÑ	Ô	Ðr>   r~   c                 óÔ   — |                       ¦   «         | _        | j                             d||g¬¦  «         t          t	          |                      ¦   «         ¦  «        ¦  «        dk    S )Nz Business_ID=%s and Quarter_ID=%sr¡   r   )r¥   r¦   r§   rV   r{   rõ   )r<   r~   ré   s      r=   Úcheck_existszQuarters.check_existsI  sR   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.Ð9ÀÈZÐ@X€.ÑYÔYÐYÝ	�T�$—+’+‘-”-Ñ Ô Ñ	!Ô	! !Ò	#Ð#r>   c                 ó^  — |                       ¦   «         | _        | j                             d¬¦  «         | j                             d|g¬¦  «         | j                             d¬¦  «         | j                             d¬¦  «         |                      |                      ¦   «         ¦  «        S )	Nz0Quarters.*,Quarter_Settings.Name as Quarter_Name©ÚfieldszBusiness_ID=%sr¡   z@join Quarter_Settings on Quarter_Settings.ID=Quarters.Quarter_ID)Újoinr
  r®   )r¥   r¦   r3  r§   r4  r&  Ú
parse_rowsrõ   )r<   r~   s     r=   rí   zQuarters.get_businessN  sŠ   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.ÐJ€.ÑKÔKÐKØ„'‡.‚.Ð'¨{¨m€.Ñ<Ô<Ð<Ø„'‡,‚,ÐV€,ÑWÔWÐWØ„'‡-‚-�f€-ÑÔÐØ	�Š˜Ÿš™œÑ	'Ô	'Ð'r>   rG   NFr¢   r£   Ú	show_calcc                 ó*  — |                       ¦   «         | _        | j                             d¦  «         | j                             d¬¦  «         |r| j                             ||¬¦  «         |                      |                      ¦   «         |¦  «        S )Nz¦Quarters.*,(select Name from Business where ID=Quarters.Business_ID) as Business_Name,(select Name from Quarter_Settings where ID=Quarters.Quarter_ID) as Quarter_Namez(Quarters.Business_ID,Quarters.Quarter_IDr®   r¡   )r¥   r¦   r3  r&  r§   r5  rõ   )r<   r¢   r£   r6  s       r=   rn   zQuarters.allV  s…   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.ð  zñ  {ô  {ð  {Ø„'‡-‚-Ð@€-ÑAÔAÐAØ
ð +Ø„7‡>‚>˜ E€>Ñ*Ô*Ð*à	�Š˜Ÿš™œ yÑ	1Ô	1Ð1r>   Úrowsc           	      ó>  — g }|D �]–}t          j        |                     d¦  «        ¦  «        }i }t          ¦   «                              t          |                     d¦  «        ¦  «        ¦  «        }|�rÃi d|                     d¦  «        “d|                     d¦  «        “d|                     d¦  «        “d|                     d¦  «        “d|                     d¦  «        “d	|                     d	¦  «        “d
|                     d
¦  «        “d|                     d¦  «        “d|                     d¦  «        “dt          |                     d¦  «        ¦  «        t          |                     d¦  «        ¦  «        z  “d|                     d¦  «        “d|                     dd¦  «        “dt          |                     d¦  «        ¦  «        t          |                     d¦  «        ¦  «        z  “d|                     d¦  «        “d|                     d¦  «        “d|                     d¦  «        “}|sB|                     d¦  «        r-t          |                     dd¦  «        ¦  «        dk    rd|d<   nd|d<   ||d<   |                     |¦  «         �Œ˜|S )NÚcalcré   Ústock_priceÚpr_scorer  r
  Úcapital_startÚcapital_endÚrevenueÚexpense_listrÍ   Úunits_on_hand_startÚinventory_value_startrç   Úunits_on_handr   rØ   Úunits_producedÚ
units_soldÚprofitrG   Fz	.editableT)	r¾   r   r9   rî   r  r   r   rV   rm   )r<   r8  r6  r¬   Úrr:  ÚcdataÚ	qsettingss           r=   r5  zQuarters.parse_rows_  s¡  € Ø€!Øð ñ €aÝ
Œ-˜Ÿš˜f™œÑ
&Ô
&€4Ø€5åÑ!Ô!×(Ò(­¨1¯5ª5°Ñ+>Ô+>Ñ)?Ô)?Ñ@Ô@€9Ø
ñ ðØ�4—8’8˜MÑ*Ô*ðà�—’˜Ñ$Ô$ðð �I—M’M &Ñ)Ô)ðð �T—X’X˜oÑ.Ô.ð	ð
 �4—8’8˜MÑ*Ô*ðð ˆt�xŠx˜	Ñ"Ô"ðð �D—H’H˜^Ñ,Ô,ðð �—’˜Ñ$Ô$ðð ˜4Ÿ8š8Ð$9Ñ:Ô:ðð �Q˜tŸxšx¨Ñ4Ô4Ñ5Ô5½¸$¿(º(ÐCXÑ:YÔ:YÑ8ZÔ8ZÑZðð �T—X’X˜oÑ.Ô.ðð �—’˜+ aÑ(Ô(ðð •q˜Ÿš +Ñ.Ô.Ñ/Ô/µ!°D·H²H¸_Ñ4MÔ4MÑ2NÔ2NÑNðð �d—h’hÐ/Ñ0Ô0ðð �$—(’(˜<Ñ(Ô(ðð  ˆd�hŠh�xÑ Ô ð!€Eð& ð ˜Ÿš˜f™œð ­#¨a¯eªe°F¸2Ñ.>Ô.>Ñ*?Ô*?ÀÒ*AÐ*AØ€A€k�N€Nà€A€k�Nà€1€V�9Ø‡8‚8ˆA�;„;€;�;Ø	
€(r>   )rG   NF)F)r?   r@   rA   rÔ   rP   rz   r²   rå   r³   r.  Úboolr0  r{   rí   rO   r   rn   r   r5  rB   r>   r=   rì   rì   :  s  € € € € € € Ø
€€C€€�Ø	€ð�Cð ð ð ð ð Cð ¨Dð ð ð ð ð
$ 3ð $°#ð $¸$ð $ð $ð $ð $ð
( 3ð (¨4ð (ð (ð (ð (ð2ð 2�Cð 2 ¨$¤ð 2Àð 2ÐRVð 2ð 2ð 2ð 2ð"ð "˜$ð "¨ð "¸ð "ð "ð "ð "ð "ð "r>   rì   c                   ó   — e Zd Zdefd„ZdS )Ú
Reports_PLrE   c                 ó   — i S ©NrB   r;   s    r=   ÚgeneratezReports_PL.generate„  s   € Ø	€)r>   N)r?   r@   rA   r³   rO  rB   r>   r=   rL  rL  ƒ  s/   € € € € € ð�tð ð ð ð ð ð r>   rL  c                   ó   — e Zd Zdedefd„ZdS )ÚClient_Dashboardr  rE   c                 ót  — t          ¦   «         }t          ¦   «                              |¬¦  «        }|t          ¦   «                              |¦  «        d|                     ¦   «         |                     |¦  «        dt          ¦   «                              ¦   «         idœ}|                     d¦  «        sd|d<   |S )Nrû   Ú	DashboardÚPL)rÒ   ÚPlanÚStateÚQuarter_selectrî   ÚReportsrÒ   Úbus_initrV  )	rî   rÒ   r9   rì   rí   r"   r  rL  rO  )r<   r  Ú
q_settingsr  rS   s        r=   r“   zClient_Dashboard.summaryˆ  s©   € ÝÑ!Ô!€*Ý‰ZŒZ�^Š^˜vˆ^Ñ&Ô&€(àÝ
‰*Œ*×
!Ò
! &Ñ
)Ô
)ØØ×&Ò&Ñ(Ô(Ø ×,Ò,¨VÑ4Ô4à�‰Œ×	Ò	Ñ	 Ô	 ðð	
ð 	
€$ð �(Š(�:Ñ
Ô
ð Ø€4ˆ�=à	€+r>   N)r?   r@   rA   rP   r³   r“   rB   r>   r=   rQ  rQ  ‡  s6   € € € € € ð˜ð  ð ð ð ð ð ð r>   rQ  c                   ób   — e Zd Zd ZdZdededefd„Zdede	fd„Z
d„ Zddedee         defd„Zd
S )ÚUsersr}   ÚuserÚpasswordrE   c                 ó    — |                       ¦   «         | _        | j                             d||g¬¦  «         |                      ¦   «         pi }|S )NzUser=%s and Password=%sr¡   r¤   )r<   r]  r^  rG  s       r=   Úauthz
Users.auth�  sG   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.Ð0¸¸X°€.ÑGÔGÐGØ
‡o‚oÑÔÐ˜2€!Ø	
€(r>   ÚUserIDc                 óþ   — |                       ¦   «         | _        | j                             d|g¬¦  «         d| j        _        |                      ¦   «         pi }t          |                     d¦  «        ¦  «        dk    S )Nr    r¡   Tr~   r   )r¥   r¦   r§   r+  r¨   r   r9   )r<   ra  rG  s      r=   Úcheck_businesszUsers.check_business£  sg   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.�w f X€.Ñ.Ô.Ð.Ø€$„'„-Ø
‡o‚oÑÔÐ˜2€!Ý	
ˆ1�5Š5�ÑÔÑ	 Ô	  Ò	"Ð"r>   c                 óÆ   — t          |                     d¦  «        t          ¦  «        r+t          j        |                     dd¦  «        ¦  «        |d<   t          |¦  «        S )NÚGroupsrG   )Ú
isinstancer9   rO   r¾   r   r   rW   s     r=   Úmk_rowzUsers.mk_rowª  sM   € Ý�—’˜Ñ"Ô"¥3Ñ'Ô'ð 9Ý”M $§(¢(¨8°BÑ"7Ô"7Ñ8Ô8€4ˆ�>Ý	ˆT‰ŒÐr>   rG   Nr¢   r£   c                 óè   — |                       ¦   «         | _        | j                             d¬¦  «         |r| j                             ||¬¦  «         t	          |                      ¦   «         ¦  «        S )NzZUsers.*,(select Name from Business where Business.ID = Users.Business_ID) as Business_Namer2  r¡   )r¥   r¦   r3  r§   r{   rõ   r"  s      r=   rn   z	Users.all¯  s^   € Ø�LŠL‰NŒN€$„'Ø„'‡.‚.Ðt€.ÑuÔuÐuØ
ð +Ø„7‡>‚>˜ E€>Ñ*Ô*Ð*Ý	ˆd�kŠk‰mŒmÑ	Ô	Ðr>   r(  )r?   r@   rA   r²   rü   rO   r³   r`  rP   rJ  rc  rg  r   r{   rn   rB   r>   r=   r\  r\  š  sª   € € € € € Ø	€Ø€ð�Cð  ð ¨ð ð ð ð ð# ð #¨ð #ð #ð #ð #ðð ð ð
ð �Cð  ¨$¤ð ¸ð ð ð ð ð ð r>   r\  c                   ó   — e Zd Zdefd„ZdS )rX  rE   c                 ó€   — i }t          ¦   «                              ¦   «         D ]}|||                     d¦  «        <   Œ|S )Nr
  )rî   rn   r9   )r<   rS   Úquarters      r=   ÚoutlookzReports.outlook·  sF   € Ø	€$Ý!Ñ#Ô#×'Ò'Ñ)Ô)ð 'ð '€gØ&€4ˆ�Š�FÑÔÑÐØ	€+r>   N)r?   r@   rA   r³   rl  rB   r>   r=   rX  rX  ¶  s/   € € € € € ð�dð ð ð ð ð ð r>   rX  c                   óÂ  — e Zd ZU eed<   eed<   eed<   eed<   eed<   dedefd„Zedefd„¦   «         Z	edefd	„¦   «         Z
edefd
„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zdeeef         fd„Zdeeef         fd„Zdedefd„Zdefd„Zdedefd„Zd„ Zdedededefd„Zd defd„ZdS )!ÚBase_SimulatorÚquarter_settingsÚ_global_settingsrk  rä   Ú_logc                 óâ  — t          ¦   «                              ¦   «                              |                     d¦  «        ¦  «        pi | _        t	          ¦   «                              ¦   «         | _        || _        t          |¦  «        | _        | j                             d¦  «        | _	        t          t          ¦  «        | _        t          |                     d¦  «        ¦  «        | _        t          | j                             dd¦  «        ¦  «        | _        t          | j        t!          | j                             d¦  «        ¦  «        z  ¦  «        | _        t!          | j                             d¦  «        ¦  «        | _        t          |                      d¦  «        ¦  «        | _        | j        | j        z  | _        t          | j                             d¦  «        pd¦  «        | _        t          |                      d	¦  «        ¦  «        | _        t1          |                      d
¦  «        ¦  «        | _        t          | j                             d¦  «        ¦  «        | _        |                      ¦   «         \  | _        | _        t!          | j                             d¦  «        ¦  «        pd| _        t!          | j                             d¦  «        ¦  «        | _        t!          | j        | j        z   ¦  «        | _         d| _!        |  "                    | j        ¦  «        | _#        t          d¦  «        | _$        t          | j                             d¦  «        ¦  «        | _%        t1          |                      d¦  «        ¦  «        | _&        | j&        | _'        |  (                    | j%        t          |                      d¦  «        ¦  «        | j'        ¬¦  «        | _)        	 tU          | j)        | j%        z  ¦  «        dz  | _+        n#  d| _+        Y nxY wtU          | j)        | j        z  ¦  «        | _,        | j                             dd¦  «        | _-        |  .                    ¦   «          d S )Nré   r¼   rÁ   Ú
Labor_Costr•   rê   ÚEmployee_SalesÚrdÚ	RD_MedianÚRD_ROIr�   rÄ   r   rÖ   Ú	marketingÚMarketing_ROIÚMarketing_Median©r   rÇ   r  r¸   Ú
plant_sizerG   )/rî   r�   r9   ro  r‰   rp  rk  r·   rä   r‹   r   r{   rq  r   rÅ   Ú
labor_rater   Úwagesrê   ÚglobalsÚemployee_potentialÚemployee_salesÚrd_spendÚ	rd_medianr   Úrd_coefr�   Ú
calc_otherÚotherr<  rC  rD  Úunits_totalrE  Úcalc_prod_costÚ	prod_costr?  rx  Úmarketing_roiÚmarketing_effÚcalc_effÚmarketing_salesÚroundÚmarketing_resultÚmarketing_unitsr|  Úcalc_revenue)r<   rk  rä   s      r=   Ú__init__zBase_Simulator.__init__Ä  sk  € Ý*Ñ,Ô,×2Ò2Ñ4Ô4×8Ò8¸¿ºÀ\Ñ9RÔ9RÑSÔSÐYÐWY€$ÔÝ)Ñ+Ô+×1Ò1Ñ3Ô3€$ÔØ€$„,Ý˜3ÑÔ€$„(Ø”—’˜iÑ(Ô(€$„,Ý�$ÑÔ€$„)Ý�3—7’7˜9Ñ%Ô%Ñ&Ô&€$„,Ý�dÔ+×/Ò/°¸TÑBÔBÑCÔC€$„/Ý�”¥1 T¤\×%5Ò%5°kÑ%BÔ%BÑ#CÔ#CÑCÑDÔD€$„*Ý�T”\×%Ò% kÑ2Ô2Ñ3Ô3€$„.Ý˜dŸlšlÐ+;Ñ<Ô<Ñ=Ô=€$ÔØœ¨Ô)@Ñ@€$Ôå�D”L×$Ò$ TÑ*Ô*Ð2¨dÑ3Ô3€$„-Ý�T—\’\ +Ñ.Ô.Ñ/Ô/€$„.Ý�4—<’< Ñ)Ô)Ñ*Ô*€$„,Ý�”×!Ò! 'Ñ*Ô*Ñ+Ô+€$„*ð "Ÿ_š_Ñ.Ô.Ñ€$„*ˆTŒ]Ý˜œŸš gÑ.Ô.Ñ/Ô/Ð4°1€$ÔÝ˜$œ,×*Ò*¨7Ñ3Ô3Ñ4Ô4€$ÔÝ�tÔ*¨TÔ-?Ñ?Ñ@Ô@€$ÔØ€$„/à×&Ò& tÔ':Ñ;Ô;€$„.Ý�4‘”€$„,å�T”\×%Ò% kÑ2Ô2Ñ3Ô3€$„.Ý˜Ÿš oÑ6Ô6Ñ7Ô7€$ÔØÔ*€$ÔàŸš¨T¬^Å1ÀTÇ\Â\ÐRdÑEeÔEeÑCfÔCfÐlpÔl~˜ÑÔ€$ÔðÝ  Ô!5¸¼Ñ!FÑGÔGÈ#ÑM€4ÔÐøðØ€4ÔÐÐøøøÝ˜tÔ3°d´jÑ@ÑAÔA€$ÔØÔ)×-Ò-¨l¸2Ñ>Ô>€$„/Ø×ÒÑÔÐÐÐs   Ï'$P Ð	PrE   c                 ó:   — t          | j        | j        z  ¦  «        S rN  )r   rç   rD  r;   s    r=   Ú
manuf_costzBase_Simulator.manuf_costò  s   € å	
ˆ4Œ>˜DÔ/Ñ/Ñ	0Ô	0Ð0r>   c                 óp   — t          | j        ¦  «        }t          |                     ¦   «         pd¦  «        S )Nr•   )r·   rä   r   r¿   )r<   rä   s     r=   rç   zBase_Simulator.unit_costö  s0   € å�d”hÑÔ€#Ý	�×"Ò"Ñ$Ô$Ð,¨Ñ	-Ô	-Ð-r>   c                 óR   — |                       ¦   «         \  }}|pt          d¦  «        S rU   )r…  r   )r<   r   Ú_s      r=   Údilemma_costzBase_Simulator.dilemma_costû  s&   € à�?Š?ÑÔ�&€$€qØ	Ð	•˜‘”Ðr>   c                 ó
  — | j                              d¦  «        pd}	 t          ¦   «                              |¦  «        }t	          |¦  «        S # t
          $ r*}t          d|¬¦  «         t	          d¦  «        cY d }~S d }~ww xY w)NÚoverheadrG   zTroubling finding fixed costr�   r   )rk  r9   r7   r   r   rd   r
   )r<   Útierr   rf   s       r=   Ú
fixed_costzBase_Simulator.fixed_cost   s‰   € à
Œ,×
Ò
˜:Ñ
&Ô
&Ð
,¨"€$ðÝ
‰*Œ*�/Š/˜$Ñ
Ô
€4Ý
ˆD‰'Œ'€>øÝ	ð ð ð ÝÐ-°4Ð8Ñ8Ô8Ð8Ý
ˆA‰$Œ$€;€;€;€;€;€;øøøøðøøøs   ž/A Á
BÁA=Á7BÁ=Bc                 ó.  — | j                              d¦  «        dk    rt          d¦  «        S | j                              d¦  «        dk    rt          d¦  «        S | j                              d¦  «        dk    rt          d¦  «        S t          d¦  «        S )	Nr|  ÚSmalliè  ÚMediamr$   ÚLarger   r•   )ro  r9   r   r;   s    r=   Ú
plant_costzBase_Simulator.plant_cost
  s‚   € à	Ô×Ò˜|Ñ,Ô,°Ò7Ð7Ý
ˆE‰(Œ(€?ØÔ× Ò  Ñ.Ô.°(Ò:Ð:Ý
ˆE‰(Œ(€?ØÔ× Ò  Ñ.Ô.°'Ò9Ð9Ý
ˆE‰(Œ(€?Ý	
ˆ4‰Œ€.r>   c                 óD   — | j         | j        | j        | j        | j        dœS )N)z
Labor CostzProduction CostÚ	MarketingÚFixedÚOther)r~  r‰  rx  rœ  r˜  r;   s    r=   r@  zBase_Simulator.expense_list  s-   € ð ”
Ø”^ØŒ~ØŒ?ØÔð
ð 
ð r>   c                 ól   — t          | j                             ¦   «         ¦  «        }t          |¦  «        S rN  )Úsumr@  Úvaluesr   )r<   rÊ   s     r=   rÍ   zBase_Simulator.expenses  s)   € å
ˆdÔ×&Ò&Ñ(Ô(Ñ
)Ô
)€%Ý	
ˆ5‰Œ€/r>   c                 óœ   — | j         }| j        }| j        }|                      |||¬¦  «        }t	          t          ||z  ¦  «        d¦  «        S )Nr{  rÃ   )r‚  rƒ  r„  rŒ  rŽ  r   )r<   ÚspendrÇ   r  Úresults        r=   Úrd_effzBase_Simulator.rd_eff#  sJ   € à
Œ-€%ØŒ>€&Ø	Œ€$Ø�=Š=˜u¨F¸ˆ=Ñ=Ô=€&Ý	�q�˜&‘Ñ!Ô! !Ñ	$Ô	$Ð$r>   c                 óÈ  — t          | j                             d¦  «        pd¦  «        }t          | j                             d¦  «        pd¦  «        }t	          d¦  «        }d}d}|D ]w}	 |t          ¦   «                              |||         ¬¦  «        z  }|t          ¦   «                              |||         ¬¦  «        z  }|dz  }Œa# t          $ r
}Y d }~Œpd }~ww xY w||fS )Nr:   rG   r]   r   )r]   r^   rÓ   )	r   ro  r9   rk  r   r:   r   ri   rd   )r<   rj   Úactionsr   ri   r   r]   rf   s           r=   r…  zBase_Simulator.calc_other,  sô   € Ý�TÔ*×.Ò.¨zÑ:Ô:Ð@¸bÑAÔA€(Ý�T”\×%Ò% iÑ0Ô0Ð6°BÑ7Ô7€'Ý	
ˆ1‰Œ€$Ø€"Ø€!Øð 	ð 	€gð	Ø�H‰JŒJ�OŠO G°7¸1´:ˆOÑ>Ô>Ñ>€DØ�(‰*Œ*�-Š- ¨w°q¬zˆ-Ñ
:Ô
:Ñ:€BØ€q�D€A€AøÝ
ð 	ð 	ð 	Ø€D€D€D€Døøøøð	øøøð 
ˆbˆ€.s   Á+AC	Ã	
CÃCc                 ó   — t          | j                             d¦  «        ¦  «        }t          | j                             d¦  «        ¦  «        }d}d}d}| j                             d¦  «        pg D ]�}t                               |i ¦  «                             di ¦  «                             ||         ¦  «        }t          d|¬¦  «         |r0||                     d¦  «        z  }||                     d¦  «        z  }ŒŽt          |¦  «        |fS )	Nr]   r   r:   r"   zFound detailr�   r   r   )r   rk  r9   ro  r[   r
   r   )r<   rj   Úrespr   rÊ   ri   Úproblemr   s           r=   Úcalc_other_oldzBase_Simulator.calc_other_old>  sþ   € Ý�T”\×%Ò% iÑ0Ô0Ñ1Ô1€(Ý	�”×!Ò! )Ñ,Ô,Ñ	-Ô	-€$Ø€!Ø
€%Ø€"ØÔ&×*Ò*¨:Ñ6Ô6Ð<¸"ð "ð "€gÝ�LŠL˜ Ñ$Ô$×(Ò(¨°2Ñ6Ô6×:Ò:¸4À¼7ÑCÔC€6Ýˆ~ 6Ð*Ñ*Ô*Ð*Øð "Ø	ˆV�ZŠZ˜ÑÔÑ€EØˆ&�*Š*�[Ñ
!Ô
!Ñ!€Bøå	�‰Œ˜Ð	Ðr>   rÖ   c                 ó0   — t          || j        z  ¦  «        S rN  )r   rç   )r<   rÖ   s     r=   rˆ  zBase_Simulator.calc_prod_costM  s   € Ý	
ˆ5�4”>Ñ!Ñ	"Ô	"Ð"r>   c                 óô   — t          d| j        ¬¦  «         t          t          | j        | j        z  ¦  «        ¦  «        }|| j        k    r| j        | _        n|| _        | j        | j        z  | _        | j        S )NzCalc Units Totalr�   )r
   r‡  r   rŽ  r�  r�   rE  r?  )r<   Ú	potentials     r=   r‘  zBase_Simulator.calc_revenueP  sq   € ÝÐ  dÔ&6Ð7Ñ7Ô7Ð7Ý•�dÔ*¨T¬ZÑ7Ñ8Ô8Ñ9Ô9€)à�Ô!Ò!Ð!ØÔ%€4„?€?à€4„?à”˜dœoÑ-€$„,Ø	ŒÐr>   rD   rp   c                 óF   — | j         |                              |¦  «         d S rN  )rq  rm   )r<   rD   rp   s      r=   ÚlogzBase_Simulator.log\  s"   € Ø„)ˆC„.×Ò˜ÑÔÐÐÐr>   c                 ó2  — d}t          ¦   «         }|                     | j                             dd¦  «        ¦  «        }t	          j        || j        ¦  «        }|dz  |z  }|dk     r| }|dz  }|dz  }|dk     rd}t          d|| j        ||dœ¬	¦  «         |S )
Nr'   r¼   rG   r¸   r   g      ø?z	Price Eff)rÇ   r�   ÚdeltaÚeffr�   )r‰   r˜   rä   r9   r¾   Úchanger�   r
   )r<   Úmax_effr‘   rÇ   r¹  rº  s         r=   Úcalc_price_effzBase_Simulator.calc_price_eff_  s¾   € Ø€'ÝÑÔ€(Ø× Ò  ¤§¢¨i¸Ñ!;Ô!;Ñ<Ô<€&Ý
Œ,�v˜dœjÑ
)Ô
)€%à
�‰)�wÑ	€#àˆ2‚X€XØ
ˆ€3àˆ�(€#Øˆ�)€#àˆ"‚W€WØ	€3åˆkØØŒ:ØØ	ð	 ð  ð ñ ô ð ð 
€*r>   r   rÇ   r  c           	      óä  — |                       ¦   «         }t          |dz  ¦  «        }t          |¦  «        }d}d}d}	|dk    rQ||k     r|}|dz  |z   }
t          ||
z  ¦  «        }|	|z  }	||z  }|dk     rd}||z  }|dk    rd}d}|dk     rd}|dk    °Qt          | j                             d¦  «        ¦  «        dz  }|	}|	|z  }	|	|	|z  z   }t          d	||	|||d
œ¬¦  «         t          |¦  «        S )Nr   éU   é   r•   r¸   r   r   ÚEconomic_StrengthzPrice Efficiency)ÚototalrÊ   ÚstrengthÚ	eff_totalÚ	price_effr�   )r½  r   Úabsr   ro  r9   r
   r   )r<   r   rÇ   r  rÅ  Úc_sizerG  rº  ÚincrÊ   Úeff_rateÚcvalrÃ  rÂ  rÄ  s                  r=   rŒ  zBase_Simulator.calc_effx  sN  € Ø×!Ò!Ñ#Ô#€)Ýˆf�r‰kÑÔ€&Ýˆ�h„h€!Ø
€#Ø	€#Ø
€%Ø	ˆDŠˆØˆ&‚j€jØ€Fà�3‰w˜$Ñ€8Ý
ˆf�xÑÑ
 Ô
 €4ØˆD�=€5Ø€f�9€1àˆ!‚e€eØ	€Aàˆ�8€3Ø	ˆ#‚g€gØ
€CØ
€Cà	ˆB‚h€hØ
€Cð% 	
ˆDŠˆõ* ˆtÔ$×(Ò(Ð)<Ñ=Ô=Ñ>Ô>ÀÑD€(Ø€&Øˆ8Ñ€%Ø�u˜Y‘Ñ'€)ÝÐ ØØØØØð'ð 'ð ñ ô ð õ 
ˆ9‰ŒÐr>   rG   c                 ó^   — | j                              ||¦  «                             d¦  «        S )Nr   )rp  r9   )r<   rD   Údefaults      r=   r  zBase_Simulator.globals¡  s)   € Ø	Ô	×	"Ò	" 3 wÑ	/Ô	/×	3Ò	3°GÑ	<Ô	<Ð<r>   Nr'  )r?   r@   rA   r³   rz   r·   r’  rÐ   r   r”  rç   r˜  rœ  r¡  r@  rÍ   r  r¬  ÚtuplerP   r…  r²  rˆ  r‘  rO   r   r·  r½  rŒ  r  rB   r>   r=   rn  rn  ½  s«  € € € € € € ØÐÐÑØÐÐÑØ	€€�Ø	€€�Ø
€€�ð(˜4ð ( Mð (ð (ð (ð (ð\ ð1˜ð 1ð 1ð 1ñ „(ð1ð ð.˜ð .ð .ð .ñ „(ð.ð ð˜7ð ð ð ñ „(ðð ð˜ð ð ð ñ „(ðð ð˜ð ð ð ñ „(ðð ð˜4ð ð ð ñ „(ðð ð�wð ð ð ñ „(ðð ð%�Uð %ð %ð %ñ „(ð%ð˜˜w s˜{Ô+ð ð ð ð ð$˜U 7¨3 ;Ô/ð ð ð ð ð#˜sð # wð #ð #ð #ð #ð
˜7ð 
ð 
ð 
ð 
ð�#ð ˜#ð ð ð ð ðð ð ð2'˜ð '¨ð '°Uð '¸wð 'ð 'ð 'ð 'ðR=ð = Sð =ð =ð =ð =ð =ð =r>   rn  c                   ó.   ‡ — e Zd Zdedefˆ fd„Zd„ Zˆ xZS )ÚQ_Simrk  rä   c                 óN   •— t          ¦   «                              ||¬¦  «         d S )N©rk  rä   )r°   r’  )r<   rk  rä   r±   s      €r=   r’  zQ_Sim.__init__¥  s&   ø€ Ý�'„'×Ò˜7 sÐÑ+Ô+Ð+Ð+Ð+r>   c           
      óÎ  — | j         | j        z
  | j        z   }| j        | j        z
  }| j                             dd¦  «        }t          ¦   «                              |||¬¦  «        }i d|“d| j	        “d| j
        | j        | j        dœ“d| j        | j        t          |                      d¦  «        ¦  «        t#          |                      d	¦  «        ¦  «        | j        d
œ“d| j        “d| j        “d| j        “d| j        “d| j         “d| j         | j        z
  “d| j         | j        z
  | j        z   “d| j        “d|“d| j        “d| j        “d| j        “d| j        “| j        ||dœ¥S )Nr¼   rG   ©rÖ   r‹   rÅ   r<  Úlabor)rê   Ú
labor_costÚsalesrx  rz  ry  )rª  rº  rÇ   ÚceofrÖ  r~  r�   rÍ   r@  r?  rF  rÅ   r=  r>  r”  rç   rD  rE  )rA  rC  r;  )r?  rÍ   rÅ   r‡  rE  rä   r9   rÒ   rÜ   r<  rê   r~  r�  rx  r�  r   r  r   r�  r�   r@  r”  rç   rD  rC  )r<   rÅ   rC  r‹   r;  s        r=   r:  z
Q_Sim.calc©  sÚ  € ØŒ\˜DœMÑ)¨T¬\Ñ9€'ØÔ" T¤_Ñ4€-ØŒH�LŠL˜ 2Ñ&Ô&€'å‘
”
×+Ò+°MÈ'ÐZaÐ+ÑbÔb€+ð
ØˆWð
àˆdŒmð
ð Ø”Ø”ØÔðð ð
ð ØŒNØ
Ô
Ýˆt�|Š|Ð.Ñ/Ô/Ñ0Ô0ÝˆT�\Š\˜/Ñ*Ô*Ñ+Ô+ØÔ ðð ð
ð ˆ4Œ:ð
ð  ˆ4Œ:ð!
ð" ˆdŒmð#
ð$ �$Ô#ð%
ð& ˆTŒ\ð'
ð( ˆDŒL˜4œ=Ñ(ð)
ð* ˆdŒl˜Tœ]Ñ*¨d¬lÑ:ð+
ð, �4”<ð-
ð. �ð/
ð0 �”ð1
ð2 ˆtŒ~ð3
ð4 �DÔ'ð5
ð6 �”ð7
ð8 Ô+Ø Øð=
ð 
ð 
ð r>   )r?   r@   rA   r³   r’  r:  r´   rµ   s   @r=   rÏ  rÏ  ¤  sZ   ø€ € € € € ð,˜4ð , Dð ,ð ,ð ,ð ,ð ,ð ,ð%ð %ð %ð %ð %ð %ð %r>   rÏ  c                   óL   — e Zd Zdefd„Zdedefd„Zdded	ee         defd
„Z	dS )ÚSimÚbusinessc                 óÜ   — 	 t          |¦  «        }t          |j        ¦  «        }|dz  }|dk    r|S dS # t          $ r-}t	          d|¬¦  «         t	          d|¬¦  «         Y d }~dS d }~ww xY w)NrÚ   r   rd   r�   zTrouble with calc stockr   )r·   r   rË   rd   r
   )r<   rÚ  rä   rp   Ústockrf   s         r=   Ú
calc_stockzSim.calc_stockÑ  s’   € ðÝ	�xÑ	 Ô	 €3Ý	
ˆ3Œ?Ñ	Ô	€3Ø�‰;€5àˆa‚i€iØ€Làˆ1øå	ð ð ð Ýˆ{ Ð"Ñ"Ô"Ð"ÝÐ(¨hÐ7Ñ7Ô7Ð7Ø
ˆ"ˆ"ˆ"ˆ"ˆ"øøøøðøøøs   ‚/4 ´
A+¾"A&Á&A+rä   rE   c                 óâ   — d}	 t          |d         ¦  «        dk    s
J d¦   «         ‚t          t          |d         ¦  «        ¦  «        }t          |¦  «        S # t          $ r
}Y d }~nd }~ww xY wdS )Nr   Ú	PR_ScoreszNo PR Scores)rV   r   r§  rd   )r<   rä   ri   rf   s       r=   Úpr_avgz
Sim.pr_avgá  sˆ   € Ø€"ðÝ
ˆc�+ÔÑ
Ô
 Ò
!Ð
!Ð
! >Ñ
!Ô
!Ð
!Ý	�#ˆc�+ÔÑ
Ô
Ñ Ô €2å
ˆB‰%Œ%€<øÝ	ð ð ð Ø€4€4€4€4øøøøðøøøð 
ˆs   „AA Á
A,Á'A,FNÚtestr  c                 ó–
  — ddl m} |}i }t          ¦   «                              ¦   «         }t	          ¦   «         }|                     ¦   «         }t          ¦   «         }	g }
|D ]„} |||                              d¦  «        ¦  «        p(|                     di ¦  «                             d¦  «        ||         d<   d||         d<   d||         d	<   d||         d
<   g ||         d<   Œ…t          ¦   «                              ¦   «         }|D �]¶}|                     d¦  «        }|                     |¦  «        pi }t          ||¬¦  «         	                    ¦   «         }||d<   |sÇ||                              dd¦  «        }t          |                     d¦  «        ¦  «        } ||                     d¦  «        ¦  «        }t	          ¦   «                              |||¬¦  «        |d         d<   |	                     |                     d¦  «        t          j        |¦  «        dœ¬¦  «         |                     d¦  «        }||                              dg ¦  «         ||         d                              |¦  «         ||                              d |d¦  «        ¦  «         ||                              d |d¦  «        ¦  «         ||                              d |d¦  «        ¦  «         ||                              d |d¦  «        ¦  «         ||         dxx          ||d                              dd¦  «        ¦  «        z  cc<   ||         dxx          ||d                              dd¦  «        ¦  «        z  cc<   ||         dxx         t          |                     d¦  «        ¦  «        z  cc<   ||         dxx         t          |                     d¦  «        ¦  «        z  cc<   |                     d¦  «        ||         d<   |                     d¦  «        ||         d<   ||         d	xx         |                     d ¦  «        z  cc<   ||         d                              |                     d ¦  «        ¦  «         |
                     |¦  «         t!          d!|                     |¦  «        ¬"¦  «         �Œ¸|s†|                     ¦   «         D ]q\  }}|                      |¬#¦  «        }|                     |||                      |¦  «        |                     d¦  «        |                     dd¦  «        d$œ¬¦  «         Œr|
|d%œS )&Nr   r»   rÂ   rÞ   r   rÁ   r•   rÄ   rß   rà   rß  r~   rÑ  r:  r¼   rG   rC  rÅ   rÓ  r;  r†   )r†   r:  r  ÚquartersÚ	rev_totalÚexpense_totalrE  Ú
units_mader?  rÍ   rD  r<  zUpdating Businessr�   )rÚ  )r†   rà   rß   rÄ   rÁ   )ÚsimsÚ	bus_cache)r¾   r   r‰   r�   rÒ   rì   r9   rn   rÏ  r:  r   rÜ   rá   ÚtoJSONÚ
setdefaultrm   r
   rl   rÝ  rà  )r<   rá  r  r   Úpbus_idrS   Ú	gsettingsrÚ  rè  rã  rç  Úcb_idÚq_allrk  r  r:  r‹   rÖ   rÅ   ró   rä   rÜ  s                         r=   rã  zSim.quartersí  sj  € ØÐÐÐÐÐØ€'Ø	€$ÝÑÔ×%Ò%Ñ'Ô'€)Ý‰ZŒZ€(ð �nŠnÑÔ€)Ý‰ZŒZ€(Ø	€$àð &ð &€eØ!"  9¨UÔ#3×#7Ò#7¸Ñ#?Ô#?Ñ!@Ô!@Ð!tÀIÇMÂMÐRcÐdfÑDgÔDg×DkÒDkÐlsÑDtÔDt€9ˆUÔ�IÑØ#€9ˆUÔ�GÑØ"#€9ˆUÔ�JÑØ%&€9ˆUÔ�MÑ"Ø#%€9ˆUÔ�KÑ Ð õ ‰*Œ*�.Š.Ñ
Ô
€%Øð !@ñ !@€gØ�KŠK˜Ñ&Ô&€6Ø�mŠm˜FÑ#Ô#Ð) r€8Ý
˜ HÐ
-Ñ
-Ô
-×
2Ò
2Ñ
4Ô
4€4Ø€7ˆ6�?Ø
ð MØ˜Ô×#Ò# I¨bÑ1Ô1€GÝˆd�hŠh�Ñ'Ô'Ñ(Ô(€EØˆa�—’˜Ñ#Ô#Ñ$Ô$€GÝ%-¡Z¤Z×%@Ò%@ÀuÐU\ÐelÐ%@Ñ%mÔ%m€GˆF„O�MÑ"Ø‡O‚O˜wŸ{š{¨4Ñ0Ô0½¼ÀTÑ8JÔ8JÐKÐK€OÑLÔLÐLà	�Š�TÑ	Ô	€3ØˆVÔ×Ò 
¨2Ñ.Ô.Ð.ØˆVÔ�ZÔ ×'Ò'¨Ñ0Ô0Ð0àˆVÔ×Ò ¨A¨A¨a©D¬DÑ1Ô1Ð1ØˆVÔ×Ò °°°!±´Ñ5Ô5Ð5ØˆVÔ×Ò ¨Q¨Q¨q©T¬TÑ2Ô2Ð2ØˆVÔ×Ò ¨Q¨Q¨q©T¬TÑ2Ô2Ð2àˆVÔ�[Ð!Ð!Ô! A A g¨f¤o×&9Ò&9¸)ÀDÑ&IÔ&IÑ$JÔ$JÑJÐ!Ð!Ñ!ØˆVÔ�_Ð%Ð%Ô%¨¨¨'°&¬/×*=Ò*=¸jÈÑ*NÔ*NÑ(OÔ(OÑOÐ%Ð%Ñ%ØˆVÔ�\Ð"Ð"Ô"¥a¨¯ª°Ñ(>Ô(>Ñ&?Ô&?Ñ?Ð"Ð"Ñ"ØˆVÔ�\Ð"Ð"Ô"¥a¨¯ªÐ1AÑ(BÔ(BÑ&CÔ&CÑCÐ"Ð"Ñ"Ø $§¢¨Ñ 9Ô 9€9ˆVÔ�WÑØ"&§(¢(¨9Ñ"5Ô"5€9ˆVÔ�YÑàˆVÔ�ZÐ Ð Ô  D§H¢H¨ZÑ$8Ô$8Ñ8Ð Ð Ñ ØˆVÔ�[Ô!×(Ò(¨¯ª°*Ñ)=Ô)=Ñ>Ô>Ð>à‡;‚;ˆtÑÔÐåÐ"¨	¯ª°gÑ(>Ô(>Ð?Ñ?Ô?Ð?Ñ?à	ð VØ—_’_Ñ&Ô&ð Vð V�z€vˆcØ�OŠO SˆOÑ)Ô)€EØ‡O‚O˜v°EÀdÇkÂkÐRUÑFVÔFVÐ`c×`gÒ`gÐhoÑ`pÔ`pÐ|÷  }Dò  }Dð  ENð  OSñ  }Tô  }Tð  Uð  U€Oñ  Vô  Vð  Vð  Và )Ð	,Ð	,Ð,r>   )FN)
r?   r@   rA   r³   rÝ  rP   rà  rJ  r   rã  rB   r>   r=   rÙ  rÙ  Ð  s�   € € € € € ð˜dð ð ð ð ð 
�Tð 
˜cð 
ð 
ð 
ð 
ðE-ð E-˜ð E-¨(°3¬-ð E-Àð E-ð E-ð E-ð E-ð E-ð E-r>   rÙ  c                 ó   — d„ }|S )Nc                  óœ   — |                      d¦  «        }|                      d¦  «        }dd|› d|› �dœ}t          j        d|¬¦  «         |S )	Nr}   Úlevelr   zUser z is not )rã   ÚmessageÚResponser�   )r9   r¾   r
   )ÚargcÚargvr]  rñ  Úresponses        r=   rò  zauth_failed.<locals>.message5  s\   € Ø	�Š�&Ñ	Ô	€$Ø
�(Š(�7Ñ
Ô
€%ØÐ#@¨4Ð#@Ð#@¸Ð#@Ð#@ÐAÐA€(Ý„+�J HÐ-Ñ-Ô-Ð-Ø	€/r>   rB   )Úfuncrò  s     r=   Úauth_failedrø  4  s   € ðð ð ð 	€r>   rñ  c                 óZ   — t          j        dd| i¬¦  «         d}d„ }|dk    r|S t          S )Nz	Auth argsÚLevelr�   ÚBrentac                 ó   ‡ — ˆ fd„}|S )Nc                  óJ   •— t          j        d| |dœ¬¦  «          ‰| i |¤Ž d S )NÚinside)rô  rõ  r�   )r¾   r
   )rô  rõ  r÷  s     €r=   Úwrapperz(auth.<locals>.grab_func.<locals>.wrapperB  s;   ø€ Ý„;�X¨4°tÐ#<Ð#<Ð=Ñ=Ô=Ð=Ø€4ˆÐ�ÐÐÐÐÐr>   rB   )r÷  rÿ  s   ` r=   Ú	grab_funczauth.<locals>.grab_funcA  s#   ø€ ðð ð ð ð ð 
€.r>   ÚBrent)r¾   r
   rø  )rñ  r]  r   s      r=   r`  r`  =  sF   € Ý„�; W¨U OÐ4Ñ4Ô4Ð4Ø€ðð ð ð
 	ˆG‚O€OØ	Ðå	Ðr>   rÅ   )5Útypingr   r   r   Ú	functoolsr   r   Úcollectionsr   Úflaskr	   r¾   r
   r   r   r   r   r   r   Údbr   r   Údecimalr   Úmathr³   r{   r   rz   rI   r[   r5   r7   r:   rP   r„   r‡   r‰   r·   rÒ   rî   rì   rL  rQ  r\  rX  rn  rÏ  rÙ  rø  rO   r`  Ú	BW_ConfigrB   r>   r=   ú<module>r
     s  ðØ )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø %Ð %Ð %Ð %Ð %Ð %Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€à˜4  S˜=Ô)€€YÐ )Ð )Ñ )ð 4ð  >lð  uzð  DGð  OSð  Tð  TØ
,ð  7}ð  FNð  XYð  afð  gð  gØ
&ð  1ð  HNð  XZð  bgð  hð  hð€ð kð Øðvð vð
 ØðQð Qð
 ØðUð Uðð ðð ð$ að Øð1ð 1ð
 Øð]ð ]ð
 Øð0ð 0ðð ðð ð$ Qð Øð!ð !ð
 Øð5ð 5ð
 Øð7ð 7ðð ðð ð$ Ið Øð ð  ð
 ØðNð Nð	ð 	ðð ð Ið Øð5ð 5ð
 Øð7ð 7ð	ð 	ðð ð kð Øð/ð /ð
 ØðIð Ið
 Øðð ðð ðð ð$ ið Øð&ð &ð
 Øð.ð .ð
 Øðð ðð ðð ð$ Xð Øð/ð /ð
 Øð$ð $ð
 Øðð ðð ðð ð$ xð Øð=ð =ð
 Øð#ð #ð
 Øðð ðð ðð ð$ Zð Øð1ð 1ð
 Øð>ð >ð
 ØðSð Sðð ðð ð$ Wð Øð1ð 1ð
 Øðtð tð
 Øð-ð -ðð ðð ðGtð t€ðlð ð ð ð ñ ô ð ðð ð ð ð ñ ô ð ð$?ð ?ð ?ð ?ð ?ñ ?ô ?ð ?ðB�#ð ð ð ð ð�3ð ð ð ð ð'$ð '$ð '$ð '$ð '$�eñ '$ô '$ð '$ðR"ð "ð "ð "ð "�Dñ "ô "ð "ðHKð Kð Kð Kð Kˆuñ Kô Kð KðZjð jð jð jð j�uñ jô jð jðXGð Gð Gð Gð Gˆuñ Gô Gð GðRð ð ð ð ñ ô ð ðð ð ð ð �uñ ô ð ð&ð ð ð ð ˆEñ ô ð ð8ð ð ð ð ñ ô ð ðe=ð e=ð e=ð e=ð e=ñ e=ô e=ð e=ðN*ð *ð *ð *ð *ˆNñ *ô *ð *ðXb-ð b-ð b-ð b-ð b-ˆ%ñ b-ô b-ð b-ðHð ð ðˆsð ð ð ð ð ˆ5ð€	€	€	r>   