+
    ç.Oj%- ã                   ól  € ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^RI
HtHtHtHtHtHtHtHt ^ RIHt ^ RIHt ^ R	IHtHt ^ R
IHt ^ RIHt ^ RIHt ^ RI H!t" ^ RI H!t! ^ RI#H$t$H#t#H%t% ^ RI&t&^ RI H!t! ^ RI'H(t( ^ RI)t)^ RI*H+t+H,t, ^ RI-H.t. ^ RI/H0t0H1t1 ^RI2H3t3 ^ RI4H5t5 ^ RI#H#t#H6t6 ^ RI7t7^ RI8H9t9 ^ RI:H;t; ^ RI<t<^ RIHt ^ RI=t=^ RI Ht ^ RI>t>^ RI8H?t? ^ RI@HAtA ^ RI-HBtB ^ RIHt ^ R	IHtHt ^ RIHt ^ RIH	t	 ^ RIHt ^ RIHt ^ R
IHt ^ RI=t= ! R R]4      tCR tD ! R R ]4      tE ! R! R"]4      tFR# tGR$ tHR% tI ! R& R']4      tJ ! R( R)]4      tK ! R* R+]4      tL ! R, R-]4      tM ! R. R/]4      tN^ R0I#H%t% ^ RI H!t!  ! R1 R2]4      tO ! R3 R4]4      tP ! R5 R6]4      tQ ! R7 R8]4      tR ! R9 R:]4      tS ! R; R<]4      tT ! R= R>]4      tU ! R? R@]4      tV ! RA RB]4      tW ! RC RD]4      tX^ RIYtY^ RI&t&^ RIHt ^ RIHt ^ RIH	t	 ^ REIHZtZ ^ RI H!t! ^RFI
HtHt RGt[RHt\RIt] ! RJ RK]4      t^R# )Lé    )Úsettings)Úrender)ÚAPIView)ÚResponse©Ústatus)ÚProfilesÚOtpÚMatchStreamÚClientÚStudentÚTeamÚPlayerÚMatch)ÚObjectDoesNotExist)ÚNotFound)ÚauthenticateÚlogin)ÚRefreshToken)Úmake_password)ÚUser)Útimezone)ÚdateÚdatetimeÚ	timedeltaN)ÚHttpResponse)ÚMultiPartParserÚ
FormParser)ÚQ)ÚRetrieveAPIViewÚListAPIView)ÚUserSerializer)ÚIsAuthenticated)r   Útime)ÚEmailMessage)ÚBASE_DIR)Ú	send_mail)Úget_random_string)ÚSumc                   ó&   a € ] tR t^4t o R tRtV tR# )ÚLoginAPIViewc                óÈ  € VP                   pVP                  R 4      pVP                  R4      pV'       d	   V'       g2   \        RR\        P                  RR/RR/\        P                  R7      # R	p\
        P                  ! R
V4      '       d#    \        P                  P                  VR7      pM\        WVR7      pVEeƒ   VP                  V4      '       Edk    \        P                  P                  VP                  R7      pVP                  ^8X  d6   \        RR\        P                  RR/RRRRRR	/\        P                  R7      # \        W4       \         P"                  ! V4      pVP$                  '       d&   VP'                  VP$                  P(                  4      MR	pRp	\        RR\        P*                  RR/RR	RRRRVP,                  RVP                  R VP,                  RVP.                  RVP0                  R\3        V4      R\3        VP4                  4      RVRV	RVP6                  RVP8                  //4      # \        RR\        P<                  RR/RRRR RR	/\        P<                  R7      #   \        P                   d    R	p ELÖi ; i  \        P                   d5    \        RR\        P:                  RR/RR/\        P:                  R7      u # i ; i)!ÚusernameÚpasswordr   ÚcodeÚresponseÚerrorÚmessagez"Username and password are requiredr   Nz[^@]+@[^@]+\.[^@]+©Úemail)r-   r.   ©Úuser_idzAccount Inactivez0You are inactive by Admin. Please contact Admin.ÚdataÚloopÚsuccesszLogin successÚnameÚidr4   ÚisSuperÚrefreshÚtokenÚprofileÚcompanynameÚphoneÚrolezUser profile not foundzAuthentication failedzInvalid username or password)r7   Úgetr   r   ÚHTTP_400_BAD_REQUESTÚreÚmatchr   ÚobjectsÚDoesNotExistr   Úcheck_passwordr	   r;   ÚHTTP_403_FORBIDDENr   r   Úfor_userÚprofilesÚbuild_absolute_uriÚurlÚHTTP_200_OKr-   r4   Úis_superuserÚstrÚaccess_tokenrA   rB   ÚHTTP_404_NOT_FOUNDÚHTTP_401_UNAUTHORIZED)
ÚselfÚrequestr7   Úusername_or_emailr.   Úuserr?   r>   Úprofile_photor@   s
   &&        Ú=C:\Users\psant\Downloads\HOTSTARBACKEND\school\myapp\views.pyÚpostÚLoginAPIView.post5   sÈ  € Ø�|‰|ˆØ ŸH™H ZÓ0ÐØ—8‘8˜JÓ'ˆç ¯ÜØ˜6¤6×#>Ñ#>À
ÈGÐTØÐ?ðô ×1Ñ1ô3ð 3ð ˆÜ�8Š8Ð)Ð+<×=Ò=ðÜ—|‘|×'Ñ'Ð.?Ð'Ó@‘ô   ÈhÔWˆDð Ó × 3Ñ 3°H× =Ó =ð)5Ü"×*Ñ*×.Ñ.°t·w±wÐ.Ó?�ð —>‘> QÔ&Ü#Ø  6¬6×+DÑ+DÀjÐRYÐ"ZØÐ!3Ø!Ð#UØ ð	%ô
 %×7Ñ7ô9ð 9ô �gÔ$Ü$×-Ò-¨dÓ3�àT[×Td×TdÐTd × :Ñ :¸7×;KÑ;K×;OÑ;OÔ PÐjn�Ø$�äØ˜v¤v×'9Ñ'9¸:ÀyÐQØ˜TØ˜ØØ §¡Ø˜dŸg™gØ" D§M¡MØ §¡Ø! 4×#4Ñ#4Ø!¤3 u£:Ø¤ U×%7Ñ%7Ó!8Ø! =Ø% {Ø §¡Ø §¡ðð	!ó ð ô0 Ø˜6¤6×#?Ñ#?ÀÈWÐUØÐ0ØÐ9Ø˜ð	ô
 ×2Ñ2ô4ð 4øôe ×$Ñ$ô Ø“ðûôX ×(Ñ(ô 5ÜØ˜v¤v×'@Ñ'@À*ÈgÐVØÐ7ð!ô !×3Ñ3ô5ò 5ð5ús-   Â I: ÃA/J ÅC8J É:JÊJÊAK!Ë K!© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r[   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @rZ   r+   r+   4   s   ø‡ € ÷G4ð G4ó    r+   c                 óÆ  € / R V P                   bRV P                  bRV P                  bRV P                  bRV P                  '       d   \        V P                  4      MRbRV P                  '       d   \        V P                  4      MRbR\        V P                  4      bRR V P                  P                   R	V P                  P                  R
\        V P                  R
R4      R\        V P                  RR4      /bRR V P                  P                   R	V P                  P                  R
\        V P                  R
R4      R\        V P                  RR4      /bRV P                  '       d   V P                  P                   MRbRV P                  bRV P                  '       d/   R V P                  P                   R	V P                  P                  /MRbRV P                  '       d/   R V P                  P                   R	V P                  P                  /MRbRV P                   '       d/   R V P                   P                   R	V P                   P                  /MRbRV P"                  '       d/   R V P"                  P                   R	V P"                  P                  /MRbRV P$                  '       d0   R V P$                  P                   R	V P$                  P                  /b# Rb# )r;   r   ÚoversÚvenueÚ
match_dateNÚ
match_timeÚ
created_atÚteam_ar:   Ú
logo_emojiõ   ðŸ��Ú
logo_colorú#1565C0Úteam_bz#F97316Útoss_winnerÚtoss_choiceÚbatting_teamÚbowling_teamÚstrikerÚnon_strikerÚbowler)r;   r   ri   rj   rk   rQ   rl   rm   rn   r:   Úgetattrrs   rt   ru   rv   rw   rx   ry   rz   )Úms   &rZ   Ú_match_datar}   €   sw  € ðØ�q—t‘tðà�q—x‘xðð 	�q—w‘wðð 	�q—w‘wð	ð
 	¨Q¯\¯\¨\”s˜1Ÿ<™<Ô(Àðð 	¨Q¯\¯\¨\”s˜1Ÿ<™<Ô(Àðð 	”s˜1Ÿ<™<Ó(ðð 	Ø˜!Ÿ(™(Ÿ+™+Ø˜!Ÿ(™(Ÿ-™-Øœ' !§(¡(¨L¸&ÓAØœ' !§(¡(¨L¸)ÓDð	
ðð 	Ø˜!Ÿ(™(Ÿ+™+Ø˜!Ÿ(™(Ÿ-™-Øœ' !§(¡(¨L¸&ÓAØœ' !§(¡(¨L¸)ÓDð	
ðð, 	¨Q¯]¯]¨]˜Ÿ™×(Ò(Àð-ð. 	˜Ÿ™ð/ð2 	ÐRS×R`×R`ÐR`˜˜qŸ~™~×0Ñ0°&¸!¿.¹.×:MÑ:MÑNÐfjð3ð4 	ÐRS×R`×R`ÐR`˜˜qŸ~™~×0Ñ0°&¸!¿.¹.×:MÑ:MÑNÐfjð5ð8 	ÈqÏyÏyÈy˜˜aŸi™iŸl™l°¸¿	¹	¿¹ÑGÐbfð9ð: 	ÈqÏ}Ï}È}˜˜aŸm™m×.Ñ.°¸¿¹×8JÑ8JÑKÐbfð;ð< 	ÈqÏxÏxÈx˜˜aŸh™hŸk™k°¸¿¹¿¹ÐFð=ð ð< cgð=ð rg   c                   ó:   a € ] tR t^¦t o RR ltR tRR ltRtV tR# )ÚMatchAPIViewNc                óx  € Ve@    \         P                  P                  VR7      p\        RR^ÈRR/RR R\	        V4      /4      #  VP                  P                  R4      p\         P                  P                  4       P                  R4      pV'       d   VP                  VR7      p\        RR^ÈRR/RR RV Uu. uF  p\	        V4      NK  	  up/4      #   \         P
                   d    \        RRRRR	/R
R/4      u # i ; iu upi   \         d'   p\        RRRRR	/R
\        T4      /4      u R p?# R p?ii ; i)N©r;   r   r/   r0   r9   r1   r7   é”  Úfailedr2   úMatch not foundú-created_atr   é�  )r   rG   rC   r   r}   rH   Úquery_paramsÚallÚorder_byÚfilterÚ	ExceptionrQ   )rU   rV   r;   r|   Ústatus_filterÚqsÚes   &&&    rZ   rC   ÚMatchAPIView.get©   sU  € ð Š>ðÜ—M‘M×%Ñ%¨Ð%Ó,�ÜØ˜v s¨J¸	ÐBØ˜dØœk¨!›nð!ó ð ð	Ø#×0Ñ0×4Ñ4°XÓ>ˆMÜ—‘×"Ñ"Ó$×-Ñ-¨mÓ<ˆBßØ—Y‘Y m�YÓ4�äØ˜6 3¨
°IÐ>Ø˜$Ø±2Ó6±2¨aœ; qž>±2Ñ6ðó ð øô ×%Ñ%ô ÜØ ¨¨Z¸ÐBØÐ0ð!ó ò ðüò  7øäô 	ÜØ˜F C¨°XÐ>Øœ3˜q›6ðó õ ûð	úsH   †=C ÁAD Â$D Â9DÃD Ã(D Ã?D ÄD ÄD9ÄD4Ä.D9Ä4D9c                ó  € VP                   p VP                  R 4      pVP                  R4      p\        VP                  R^
4      4      pV'       d	   V'       g   \        RRRRR/RR	/4      # \	        V4      \	        V4      8X  d   \        RRRRR/RR
/4      # V^8  g   V^28”  d   \        RRRRR/RR/4      # \
        P                  P                  VR7      p\
        P                  P                  VR7      pVP                  R4      pVP                  R4      p	VP                  R4      p
VP                  R4      pVP                  R4      pVP                  R4      pVP                  R4      pV'       d!   \
        P                  P                  VR7      MRpV
'       d!   \
        P                  P                  V
R7      MRpV'       d!   \
        P                  P                  VR7      MRpV'       d!   \        P                  P                  VR7      MRpV'       d!   \        P                  P                  VR7      MRpV'       d!   \        P                  P                  VR7      MRpVP                  R4      pVP                  R4      pV'       d&   \        P                  ! VR4      P                  4       MRpV'       d&   \        P                  ! VR4      P                  4       MRp\        P                  P                  VVVV	VVVVVVVP                  RR4      P                  4       VP                  RR4      VVR7      p\        RR^ÉRR/RVP                   RVP                   R2R \!        V4      /4      #   \
        P"                   d    \        RRR!RR/RR"/4      u # \        P"                   d    \        RRR!RR/RR#/4      u # \$         d'   p\        RRRRR/R\	        T4      /4      u Rp?# Rp?ii ; i)$rn   rs   ri   r   r/   r†   r0   rƒ   r2   u-   team_a à®®à®±à¯�à®±à¯�à®®à¯� team_b required.u\   à®’à®°à¯‡ team à®‡à®°à®£à¯�à®Ÿà¯� à®®à¯�à®±à¯ˆ select à®ªà®£à¯�à®£ à®®à¯�à®Ÿà®¿à®¯à®¾à®¤à¯�!õ:   Overs 1-50 à®‡à®Ÿà¯ˆà®¯à¯‡ à®‡à®°à¯�à®•à¯�à®•à®£à¯�à®®à¯�.r�   rt   ru   rv   rw   rx   ry   rz   Nrk   rl   ú%Y-%m-%dú%H:%Mrj   Ú Úlive)rn   rs   rt   ru   rv   rw   rx   ry   rz   ri   rj   r   rk   rl   r9   z vs u#    match create à®†à®šà¯�à®šà¯�! ðŸ��r7   r‚   úTeam not foundúPlayer not found)r7   rC   Úintr   rQ   r   rG   r   r   Ústrptimer   r$   r   ÚcreateÚstripr:   r}   rH   r‹   )rU   rV   r7   Ú	team_a_idÚ	team_b_idri   rn   rs   Útoss_winner_idru   Úbatting_team_idÚbowling_team_idÚ
striker_idÚnon_striker_idÚ	bowler_idrt   rv   rw   rx   ry   rz   Úmatch_date_strÚmatch_time_strrk   rl   rF   rŽ   s   &&                         rZ   r[   ÚMatchAPIView.postÍ   s·  € Ø�|‰|ˆð?	`ØŸ™ Ó*ˆIØŸ™ Ó*ˆIÜ˜DŸH™H W¨bÓ1Ó2ˆEç§IÜ ¨F°C¸ÀXÐ+NÐPYð  \Kð  !Ló  Mð  MÜ�9‹~¤ Y£Ô/Ü ¨F°C¸ÀXÐ+NÐPYð  \zð  !{ó  |ð  |Ø�qŒy˜E BœJÜ ¨F°C¸ÀXÐ+NÐPYð  \Xð  !Yó  Zð  Zä—\‘\×%Ñ%¨Ð%Ó3ˆFÜ—\‘\×%Ñ%¨Ð%Ó3ˆFà"Ÿh™h }Ó5ˆNØ"Ÿh™h }Ó5ˆKØ"Ÿh™h ~Ó6ˆOØ"Ÿh™h ~Ó6ˆOØ"Ÿh™h yÓ1ˆJØ"Ÿh™h }Ó5ˆNØ"Ÿh™h xÓ0ˆIçDRœ4Ÿ<™<×+Ñ+¨~Ð+Ô>ÐY]ˆKßDSœ4Ÿ<™<×+Ñ+¨Ð+Ô?ÐY]ˆLßDSœ4Ÿ<™<×+Ñ+¨Ð+Ô?ÐY]ˆLßDNœ6Ÿ>™>×-Ñ-°Ð-Ô<ÐY]ˆGßDRœ6Ÿ>™>×-Ñ-°Ð-Ô@ÐY]ˆKßDMœ6Ÿ>™>×-Ñ-°Ð-Ô;ÐY]ˆFà!ŸX™X lÓ3ˆNØ!ŸX™X lÓ3ˆNßQ_œ×*Ò*¨>¸:ÓF×KÑKÔMÐeiˆJßQ_œ×*Ò*¨>¸7ÓC×HÑHÔJÐeiˆJä—M‘M×(Ñ(Ø%Ø%Ø*Ø*Ø+Ø+Ø&Ø*Ø%Ø$Ø#Ÿx™x¨°Ó4×:Ñ:Ó<Ø#Ÿx™x¨°&Ó9Ø)Ø)ð )ó ˆEô" Ø˜F C¨°YÐ?Ø˜fŸk™k˜]¨$¨v¯{©{¨mÐ;^Ð_Øœ; uÓ-ðó ð øô × Ñ ô 	jÜ˜X¨°°ZÀÐ'JÈIÐWgÐhÓiÒiÜ×"Ñ"ô 	lÜ˜X¨°°ZÀÐ'JÈIÐWiÐjÓkÒkÜô 	`Ü˜X¨°°ZÀÐ'JÈIÔWZÐ[\ÓW]Ð^Ó_Õ_ûð	`ús�   ŽAN ÁN Á.+N Â N Â;B>N Å:)N Æ$)N Ç)N Ç8)N È")N ÉAN Ê.N ËB9N Î(PÎ+PÎ>PÏPÏPÏO?Ï9PÏ?Pc           
     ó@  € Vf   \        RRRRR/RR/4      #  \        P                  P                  VR7      pTP
                  p RT9   d:   \        TR,          4      pT^8  g   T^28”  d   \        RRRRR/RR/4      # YSn        RT9   d   TR,          P                  4       Tn	        RT9   d7   . R OpTR,          T9  d   \        RRRRR/RRT 2/4      # TR,          Tn
        RT9   dA   TR,          '       d2   \        P                  ! TR,          R4      P                  4       Tn        RT9   dA   TR,          '       d2   \        P                  ! TR,          R4      P                  4       Tn        RT9   d<   TR,          '       d-   \"        P                  P                  TR,          R7      Tn        RT9   d   TR,          Tn        RT9   d<   TR,          '       d-   \"        P                  P                  TR,          R7      Tn        RT9   d<   TR,          '       d-   \"        P                  P                  TR,          R7      Tn        RT9   d<   TR,          '       d-   \,        P                  P                  TR,          R7      Tn        RT9   d<   TR,          '       d-   \,        P                  P                  TR,          R7      Tn        RT9   d<   TR,          '       d-   \,        P                  P                  TR,          R7      Tn        TP5                  4        \        RR^ÈRR/RRR\7        T4      /4      #   \        P                   d    \        RRR	RR/RR
/4      u # i ; i  \"        P                   d    \        RRR	RR/RR/4      u # \,        P                   d    \        RRR	RR/RR/4      u # \8         d!   p\        RRRRR/RRT 2/4      u R p?# R p?i\:         d'   p\        RRRRR/R\=        T4      /4      u R p?# R p?ii ; i)!Nr   r/   r†   r0   rƒ   r2   zMatch id required.r�   r‚   r„   ri   r‘   rj   zStatus must be one of: rk   r’   rl   r“   rt   ru   rv   rw   rx   ry   rz   r9   u    Match updated successfully! ðŸ��r7   r–   r—   zInvalid value: )r•   ÚupcomingÚ	completed)r   r   rG   rC   rH   r7   r˜   ri   r›   rj   r   r   r™   r   rk   r$   rl   r   rt   ru   rv   rw   r   rx   ry   rz   Úsaver}   Ú
ValueErrorr‹   rQ   )rU   rV   r;   rF   r7   ri   ÚallowedrŽ   s   &&&     rZ   ÚputÚMatchAPIView.put  só  € ØŠ:Ü˜X¨°°ZÀÐ'JÈIÐWkÐlÓmÐmð	kÜ—M‘M×%Ñ%¨Ð%Ó,ˆEð �|‰|ˆð6	`Ø˜$ŒÜ˜D �MÓ*�Ø˜1”9 ¨¤
Ü# X°¸¸ZÈÐ/RÐT]ð  `\ð  %]ó  ^ð  ^Ø#”à˜$ŒØ" 7�m×1Ñ1Ó3�”à˜4ÔÚ;�Ø˜•>¨Ô0Ü# X°¸¸ZÈÐ/RÐT]Ðaxð  zAð  yBð  `Cð  %Dó  Eð  EØ# H�~�”à˜tÔ#¨¨\×(:Ô(:Ü#+×#4Ò#4°T¸,Õ5GÈÓ#T×#YÑ#YÓ#[�Ô à˜tÔ#¨¨\×(:Ô(:Ü#+×#4Ò#4°T¸,Õ5GÈÓ#Q×#VÑ#VÓ#X�Ô à Ô$¨¨m×)<Ô)<Ü$(§L¡L×$4Ñ$4¸¸]Õ8KÐ$4Ó$L�Ô!Ø Ô$Ø$(¨Õ$7�Ô!à Ô%¨$¨~×*>Ô*>Ü%)§\¡\×%5Ñ%5¸¸nÕ9MÐ%5Ó%N�Ô"Ø Ô%¨$¨~×*>Ô*>Ü%)§\¡\×%5Ñ%5¸¸nÕ9MÐ%5Ó%N�Ô"à˜DÔ  T¨)§_¤_Ü &§¡× 2Ñ 2°d¸9µoÐ 2Ó F�”Ø Ô$¨¨m×)<Ô)<Ü$*§N¡N×$6Ñ$6¸$¸}Õ:MÐ$6Ó$N�Ô!Ø˜4Ô D¨§N¤NÜ%Ÿ~™~×1Ñ1°T¸(µ^Ð1ÓD�”à�J‰JŒLäØ˜F C¨°YÐ?ØÐ=Øœ; uÓ-ðó ð øô[ ×!Ñ!ô 	kÜ˜X¨°°ZÀÐ'JÈIÐWhÐiÓjÒjð	kûôf × Ñ ô 	jÜ˜X¨°°ZÀÐ'JÈIÐWgÐhÓiÒiÜ×"Ñ"ô 	lÜ˜X¨°°ZÀÐ'JÈIÐWiÐjÓkÒkÜô 	oÜ˜X¨°°ZÀÐ'JÈIÐYhÐijÐhkÐWlÐmÓnÕnûÜô 	`Ü˜X¨°°ZÀÐ'JÈIÔWZÐ[\ÓW]Ð^Ó_Õ_ûð	`ús¤   ™ M Á9M1 Â AM1 Ã#M1 Ã<AM1 ÅAM1 Æ
AM1 Ç!AM1 È#AM1 É%AM1 Ê'AM1 Ë)AM1 Í(M.Í-M.Í1(PÎPÎ.PÏPÏPÏO)Ï#PÏ)PÏ6PÏ7PÐPÐPr]   ©N)	r_   r`   ra   rb   rC   r[   r­   rc   rd   re   s   @rZ   r   r   ¦   s!   ø‡ € ô!òHA`÷H@`ò @`rg   r   c                   ó,   a € ] tR tRt o ].tR tRtV tR# )ÚUserDashboardAPIViewiU  c           	     ó°   € VP                   P                  p\        P                  P	                  VR 7      P                  4       p\        RRRRVR^//4      # )r5   r   r9   r7   Úbooking_countÚexpiry_minutes)rX   r;   ÚUserBookingrG   rŠ   Úcountr   )rU   rV   rX   r³   s   &&  rZ   rC   ÚUserDashboardAPIView.getX  s\   € Ø�|‰|�‰ˆä#×+Ñ+×2Ñ2¸4Ð2Ó@×FÑFÓHˆô Ø�iØØ Ø  "ðð
ó ð 	rg   r]   N)	r_   r`   ra   rb   r#   Úpermission_classesrC   rc   rd   re   s   @rZ   r±   r±   U  s   ø‡ € Ø)Ð*Ð÷ð rg   r±   c                 óÀ   € R pRV R2p \        VV\        P                  V .RR7       \        RV  24       R#   \         d   p\        RT 24        Rp?R# Rp?ii ; i)z!OTP Verification - iITS Communityut   Dear User,

    Welcome to iITS Community! ðŸš€

    Your One-Time Password (OTP) for account verification is:

    z«

    This code is valid for the next 1 minutes. Please do not share this OTP with anyone.


    Best regards,
    Team iITS Community
    iITS Community Support Team
    F©Úfail_silentlyzSuccess: OTP sent to úError sending email: N©r'   r   ÚDEFAULT_FROM_EMAILÚprintr‹   ©r4   ÚotpÚsubjectr2   rŽ   s   &&   rZ   Úsend_otp_emailrÃ   f  sx   € à1€Gðð 	€Eð 
ð€Gð
+ÜØØÜ×'Ñ'ØˆGØõ	
ô 	Ð% e WÐ-Ö.øÜô +ÜÐ% a SÐ)×*Ò*ûð+úó   Š-9 ¹AÁAÁAc                 óÀ   € R pRV R2p \        VV\        P                  V .RR7       \        RV  24       R#   \         d   p\        RT 24        Rp?R# Rp?ii ; i)z'Password Reset Request - iITS Communityu    Dear User,

    We received a request to reset the password for your iITS Community account. ðŸ”�

    Your One-Time Password (OTP) for password reset is:

    a  

    This code is valid for a limited time. If you did not request this, please ignore this email and ensure your account is secure.

    Please do not share this OTP with anyone for security reasons.


    Best regards,
    Team iITS Community
    Support Team
    Frº   z%Success: Forgot Password OTP sent to r¼   Nr½   rÀ   s   &&   rZ   Úforgot_send_otp_emailrÆ   ‡  sx   € Ø7€Gðð 	€Eð 

ð€Gð"
+ÜØØÜ×'Ñ'ØˆGØõ	
ô 	Ð5°e°WÐ=Ö>øÜô +ÜÐ% a SÐ)×*Ò*ûð+úrÄ   c                 ó¤   € R pRV R2p \        VV\        P                  V .RR7       R#   \         d   p\	        RT 24        Rp?R# Rp?ii ; i)z%Your One-Time  (OTP) for Verificationz?Dear User,

    Your One-Time  (OTP) for verification is:

    zæ

    Please enter this code to proceed. This OTP is valid for the next 1 minutes.

    If you did not request this code, please ignore this email.

    Thank you,  
    Pearlcon Technologies LLP
    https://pearlcons.com
        Frº   r¼   N)r'   r   r¾   r‹   r¿   rÀ   s   &&   rZ   Úsend_otp_emailsrÈ   §  sh   € à5€Gðð 	€Eð 	
	ð	€Gð	+ÜØØÜ×'Ñ'ØˆGØ÷	
øô ô +ÜÐ% a SÐ)×*Ò*ûð+ús   Š+ «A¶A
Á
Ac                   ó&   a € ] tR tRt o R tRtV tR# )ÚSendotpAPIViewiÉ  c                óx  € VP                   p VP                  R R4      P                  4       P                  4       pV'       g$   \	        RRRRR/RR/\
        P                  R	7      # \        P                  P                  VR
R7      P                  4       '       d$   \	        RRRRR/RR/\
        P                  R	7      # \        P                  P                  VR7      p\        ^RR7      pWTn        \        P                   ! 4       Vn        VP%                  4        \&        P(                  ! \*        W53R7      P-                  4        \	        RR\
        P.                  RR/RRRR V//4      #   \0         dC   p\3        RT4       \	        RR\
        P4                  RR/RRR\7        T4      /4      u Rp?# Rp?ii ; i)r4   r”   r   r/   r†   r0   rƒ   r2   zEmail address is required.r   Ú3©r4   rB   zEThis email is already registered as a User. Please try another email.r3   Ú
1234567890©ÚlengthÚallowed_chars©ÚtargetÚargsÚSuccessr1   Nr7   zError:úInternal Server ErrorT)r7   rC   r›   Úlowerr   r   rD   r	   rG   rŠ   Úexistsr
   rš   r(   rÁ   r   ÚnowÚotp_created_atrª   Ú	threadingÚThreadrÃ   ÚstartrO   r‹   r¿   ÚHTTP_500_INTERNAL_SERVER_ERRORrQ   )rU   rV   r7   r4   rX   rÁ   rŽ   s   &&     rZ   r[   ÚSendotpAPIView.postÊ  s   € Ø�|‰|ˆð#	Ø—H‘H˜W bÓ)×/Ñ/Ó1×7Ñ7Ó9ˆEçÜØ˜v s¨J¸ÐAØÐ;ð!ô !×5Ñ5ô7ð 7ô ×Ñ×&Ñ&¨U¸Ð&Ó=×DÑD×FÒFÜØ˜v s¨J¸ÐAØÐfð!ô !×5Ñ5ô7ð 7ô
 —;‘;×%Ñ%¨EÐ%Ó2ˆDÜ#¨1¸LÔIˆCØŒHÜ"*§,¢,£.ˆDÔØ�I‰IŒKä×Ò¤N¸%¸ÔF×LÑLÔNäØ˜6¤6×#5Ñ#5°zÀ9ÐMØ˜Ø˜ %Ð(ðó ð øô
 ô 	Ü�(˜AÔÜØ˜6¤6×#HÑ#HÈ*ÐVmÐnØ˜Øœ3˜q›6ðó õ ûð	ús6   Ž5E, Á"E, Á'4E, Â"E, Â?B,E, Å,F9Å77F4Æ.F9Æ4F9r]   Nr^   re   s   @rZ   rÊ   rÊ   É  s   ø‡ € ÷%ð %rg   rÊ   c                   ó&   a € ] tR tRt o R tRtV tR# )ÚForgototpAPIViewiñ  c                ó®  € VP                   p VP                  R R4      P                  4       pV'       g$   \        RRRRR/RR/\        P
                  R	7      # \        P                  P                  VR
7      P                  4       pV'       g$   \        RRRRR/RR/\        P                  R	7      # VP                  p\        P                  P                  VR7      P                  4        \        ^RR7      p\        P                  P                  VV\         P"                  ! 4       R7      p\$        P&                  ! \(        WV3R7      P+                  4        \        RR^ÈRR/RRRRV/RR/\        P,                  R	7      #   \.         dH   p\1        RT4       \        RRRRR/RRRR\3        T4       2/\        P4                  R	7      u Rp?# Rp?ii ; i)r-   r”   r   r/   r†   r0   rƒ   r2   zUsername is required.r   ©r:   r‚   z+User not found. Please check your username.r3   rÎ   rÏ   ©r4   rÁ   rÚ   rÒ   rÕ   r1   Nr7   r4   z"OTP sent to your registered email.zForgot OTP Error:éô  TúServer Error: )r7   rC   r›   r   r   rD   r	   rG   rŠ   ÚfirstrS   r4   r
   Údeleter(   rš   r   rÙ   rÛ   rÜ   rÆ   rÝ   rO   r‹   r¿   rQ   rÞ   )	rU   rV   r7   r-   r?   r4   Úotp_codeÚotp_userrŽ   s	   &&       rZ   r[   ÚForgototpAPIView.postò  sÒ  € Ø�|‰|ˆð0	=Ø—x‘x 
¨BÓ/×5Ñ5Ó7ˆHçÜØ˜v s¨J¸ÐAØÐ6ð!ô !×5Ñ5ô7ð 7ô ×&Ñ&×-Ñ-°8Ð-Ó<×BÑBÓDˆGçÜØ˜v s¨J¸ÐAØÐLð!ô !×3Ñ3ô5ð 5ð
 —M‘MˆEô �K‰K×Ñ UÐÓ+×2Ñ2Ô4ô )°ÀÔNˆHÜ—{‘{×)Ñ)ØØÜ'Ÿ|š|›~ð *ó ˆHô ×ÒÔ$9ÀÐ@QÔR×XÑXÔZäØ˜6 3¨
°IÐ>Ø˜Ø˜ %Ð(ØÐ?ð	ô
 ×(Ñ(ô*ð *øô ô 	=ÜÐ% qÔ)ÜØ˜6 3¨
°HÐ=Ø˜Ø˜^¬C°«F¨8Ð4ðô ×;Ñ;ô	=õ =ûð	=ús5   Ž'F ¶"F Á5F Â"F Â2CF ÆGÆ<GÇ	GÇGr]   Nr^   re   s   @rZ   rá   rá   ñ  s   ø‡ € ÷2=ð 2=rg   rá   c                   ó&   a € ] tR tRt o R tRtV tR# )ÚPasswordresetAPIViewi(  c           
     óü  € VP                   p VP                  R R4      P                  4       pVP                  RR4      P                  4       pV'       d	   V'       g$   \        RRRRR/RR	/\        P
                  R
7      # \        P                  P                  VR7      P                  4       pV'       g$   \        RRRRR/RR/\        P                  R
7      # \        P                  P                  VP                  R7      P                  4       pV'       d!   \        V4      Vn        VP                  4        WEn        VP                  4        \         P                  P                  VP"                  R7      P%                  4        \        RR^ÈRR/RR/\        P&                  R
7      #   \(         dF   p\+        RT4       \        RRRRR/RR\-        T4       2/\        P.                  R
7      u Rp?# Rp?ii ; i)r-   r”   Únew_passwordr   r/   r†   r0   rƒ   r2   z'Username and New Password are required.r   rã   r‚   zUser profile not found.r�   r3   r9   z1Password updated successfully! You can now login.zReset Password Error:rå   ræ   N)r7   rC   r›   r   r   rD   r	   rG   rŠ   rç   rS   r   r6   r   r.   rª   r
   r4   rè   rO   r‹   r¿   rQ   rÞ   )rU   rV   r7   r-   rï   r?   rX   rŽ   s   &&      rZ   r[   ÚPasswordresetAPIView.post)  sÌ  € Ø�|‰|ˆð+	=Ø—x‘x 
¨BÓ/×5Ñ5Ó7ˆHØŸ8™8 N°BÓ7×=Ñ=Ó?ˆLç§<ÜØ˜v s¨J¸ÐAØÐHð!ô !×5Ñ5ô7ð 7ô ×&Ñ&×-Ñ-°8Ð-Ó<×BÑBÓDˆGçÜØ˜v s¨J¸ÐAØÐ8ð!ô !×3Ñ3ô5ð 5ô —<‘<×&Ñ&¨'¯/©/Ð&Ó:×@Ñ@ÓBˆDßÜ -¨lÓ ;�”Ø—	‘	”ð  ,ÔØ�L‰LŒNô �K‰K×Ñ W§]¡]ÐÓ3×:Ñ:Ô<äØ˜6 3¨
°IÐ>ØÐNðô ×(Ñ(ô*ð *øô
 ô 	=ÜÐ)¨1Ô-ÜØ˜6 3¨
°HÐ=Ø˜^¬C°«F¨8Ð4ðô ×;Ñ;ô=õ =ûð	=úsC   ŽAF+ ÁF+ Á"F+ Â5F+ Â7"F+ Ã?F+ ÄBF+ Æ+G;Æ6:G6Ç0G;Ç6G;r]   Nr^   re   s   @rZ   rí   rí   (  s   ø‡ € ÷-=ð -=rg   rí   c                   ó&   a € ] tR tRt o R tRtV tR# )ÚVerifyforgototpAPIViewiX  c           	     óö  € VP                   P                  R R4      P                  4       pVP                   P                  RR4      P                  4       p \        P                  P                  VR7      P                  4       pV'       g$   \        RRRRR/R	R
/\        P                  R7      # VP                  p\        P                  P                  WSR7      P                  4       pV'       d$   \        RR^ÈRR/R	R/\        P                  R7      # \        RRRRR/R	R/\        P                  R7      #   \         d7   p\        RRRRR/R	\        T4      /\        P                   R7      u Rp?# Rp?ii ; i)r-   r”   rÁ   rã   r   r/   r‚   r0   rƒ   r2   zUser not found.r   )r4   rÁ   r9   zOTP Verified successfully.r†   z#Invalid OTP. Please check the code.rå   N)r‡   rC   r›   r	   rG   rŠ   rç   r   r   rS   r4   r
   rO   rD   r‹   rQ   rÞ   )rU   rV   r-   Úotp_enteredr?   r4   Ú
otp_recordrŽ   s   &&      rZ   rC   ÚVerifyforgototpAPIView.getY  sy  € à×'Ñ'×+Ñ+¨J¸Ó;×AÑAÓCˆØ×*Ñ*×.Ñ.¨u°bÓ9×?Ñ?ÓAˆð 	=ä×&Ñ&×-Ñ-°8Ð-Ó<×BÑBÓDˆGçÜØ˜v s¨J¸ÐAØÐ0ð!ô !×3Ñ3ô5ð 5ð
 —M‘MˆEô Ÿ™×+Ñ+°%Ð+ÓI×OÑOÓQˆJçäØ˜v s¨J¸	ÐBØÐ;ð!ô !×,Ñ,ô.ð .ô  Ø˜v s¨J¸ÐAØÐDð!ô !×5Ñ5ô7ð 7øô
 ô 	=ÜØ˜6 3¨
°HÐ=Øœ3˜q›6ðô ×;Ñ;ô=õ =ûð	=ús1   Á5D7 Â"D7 Â/A$D7 Ä"D7 Ä7E8Å+E3Å-E8Å3E8r]   N©r_   r`   ra   rb   rC   rc   rd   re   s   @rZ   rò   rò   X  s   ø‡ € ÷%=ð %=rg   rò   c                   ó&   a € ] tR tRt o R tRtV tR# )ÚSendotpsAPIViewi  c                ó°  € VP                   p VP                  R R4      p\        RV4       \        P                  P                  VR7      P                  4       '       d$   \        RR\        P                  RR/RR	R
R/4      # \        ^RR7      p\        P                  P                  W4\        P                  ! 4       R7      p\        P                   ! \"        W43R7      P%                  4        \        RR\        P&                  RR/RRRR V//4      #   \(         d7   p\        RR\        P*                  RR/RR	R
\-        T4      /4      u Rp?# Rp?ii ; i)r4   NzReceived email:r3   r   r/   r0   zEmail already registeredr1   Tr2   z;This email is already registered. Please use another email.rÎ   rÏ   rä   rÒ   rÕ   r7   rÖ   )r7   rC   r¿   r   rG   rŠ   rØ   r   r   ÚHTTP_409_CONFLICTr(   r
   rš   r   rÙ   rÛ   rÜ   rÈ   rÝ   rO   r‹   rÞ   rQ   )rU   rV   r7   r4   rÁ   rX   rŽ   s   &&     rZ   r[   ÚSendotpsAPIView.post€  sD  € Ø�|‰|ˆð	Ø—H‘H˜W dÓ+ˆEÜÐ# UÔ+ô �|‰|×"Ñ"¨Ð"Ó/×6Ñ6×8Ò8ÜØ˜v¤v×'?Ñ'?ÀÐMgÐhØ˜TØÐ\ð!ó ð ô $¨1¸LÔIˆCÜ—;‘;×%Ñ%¨EÌ8Ï<Ê<Ë>Ð%ÓZˆDä×Ò¤O¸5¸,ÔG×MÑMÔOäØ˜6¤6×#5Ñ#5°zÀ9ÐMØ˜Ø˜ %Ð(ðó ð øô
 ô 	ÜØ˜6¤6×#HÑ#HÈ*ÐVmÐnØ˜Øœ3˜q›6ðó õ ûð	ús%   ŽA4D ÂBD ÄEÄ+EÅ
EÅEr]   Nr^   re   s   @rZ   rù   rù     s   ø‡ € ÷ð rg   rù   )r   c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚVerifyotpAPIViewi¢  c           	     óš  € VP                   P                  R 4      pVP                   P                  R4      p \        P                  P	                  VR7      P                  R4      pVP                  \        ^<R7      ,           p\        P                  ! 4       V8”  d"   \        RRRRR	R
/\        P                  R7      # W4P                  8X  d"   \        R^ÈRRR	R/\        P                  R7      # \        RRRRR	R
/\        P                  R7      #   \        P                   d%    \        RRRRR	R
/\        P                  R7      u # i ; i)r4   rÁ   r3   rÚ   )Úsecondsr   i‘  r2   z&OTP expired. Please request a new one.r1   Tr   zOTP VerifiedFr†   zInvalid OTPr‚   zOTP not found)r‡   rC   r
   rG   rŠ   ÚlatestrÚ   r   r   rÙ   r   r   rO   rÁ   rH   )rU   rV   r4   rô   Úuser_otpÚexpiration_times   &&    rZ   rC   ÚVerifyotpAPIView.get£  sQ  € Ø×$Ñ$×(Ñ(¨Ó1ˆØ×*Ñ*×.Ñ.¨uÓ5ˆð	*Ü—{‘{×)Ñ)°Ð)Ó6×=Ñ=Ð>NÓOˆHð '×5Ñ5¼	È"Ô8MÕMˆOÜ�|Š|‹~ Ô/ÜØ˜cØÐGØ˜Tð!ô !×,Ñ,ô	.ð .ð Ÿl™lÔ*ÜØ˜cØ˜~Ø˜Uð!ô !×,Ñ,ô	.ð .ô  Ø˜cØ˜}Ø˜Tð!ô !×,Ñ,ô	.ð .øô ×Ñô 	*ÜØ˜#Ø˜?Ø˜ðô ×(Ñ(ô	*ò *ð	*ús   ¸BD Â?0D Ã0 D Ä6E
Å	E
c           	     óÊ  € VeŠ    \         P                  P                  VR7      pVP                  '       d4   VP                  P	                  RR7       R Vn        VP                  4        \        RR\        P                  RR/RR R	R
/4      # \        RR\        P                  RR/RRR	R/4      #   \         d'    \        RR\        P                  RR/RR R	R/4      u # i ; i)Nr5   F)rª   r   r/   r0   r9   r1   r2   z"Profile image deleted successfullyrƒ   zProfile not foundzID not providedzUser ID is required)r	   rG   rC   rL   rè   rª   r   r   rO   r   rS   rD   )rU   rV   r;   r?   s   &&& rZ   rè   ÚVerifyotpAPIView.deleteÊ  s  € ØŠ>ðÜ"×*Ñ*×.Ñ.°rÐ.Ó:�ð ×#×#Ð#Ø×$Ñ$×+Ñ+°Ð+Ô7Ø'+�GÔ$Ø—L‘L”NäØ˜v¤v×'9Ñ'9¸:ÀyÐQØ˜TØÐCð!ó ð ô Ø�vœv×:Ñ:¸JÈÐQØÐ&ØÐ,ð
ó ð 	øô &ô ÜØ˜v¤v×'@Ñ'@À*ÈhÐWØ˜TØÐ2ð!ó ò ðús   †1B1 ¸AB1 Â1.C"Ã!C"r]   N)r_   r`   ra   rb   rC   rè   rc   rd   re   s   @rZ   rþ   rþ   ¢  s   ø‡ € ò"*÷Nð rg   rþ   c                   ó8   a € ] tR tRt o ]3tR tR tR tRt	V t
R# )ÚProfileupdateAPIViewië  c                óš  € VP                  R 4      pVEe    \        P                  P                  VR7      p\        P                  P                  VP                  R7      pVP
                  '       d3   VP
                  P                  R8w  d   VP
                  P                  pMRpRVP                  RVP                  RVP                  RVP                  R	VP                  R
VR VP                  /p\        RR\        P                  RR/RRRV/4      # R#   \         d'    \        RR\        P                   RR/RRRR/4      u # i ; i)r;   Nr�   r5   z../static/dummy.pngr:   r4   rA   Úf_nameÚl_namer?   r   r/   r0   rÕ   r1   r7   ÚFailedTr2   zCompany not found)rC   r   rG   r	   r;   rL   rN   r:   r4   rA   Ú
first_nameÚ	last_namer   r   rO   r   rS   )rU   rV   Úkwargsr;   rX   ÚcompanyÚprr7   s   &&,     rZ   rC   ÚProfileupdateAPIView.getï  sC  € Ø�Z‰Z˜Óˆð ‹>ð!Ü—|‘|×'Ñ'¨2Ð'Ó.�Ü"×*Ñ*×.Ñ.°t·w±wÐ.Ó?�Ø×#×#Ð#¨×(8Ñ(8×(<Ñ(<Ð@UÔ(UØ ×)Ñ)×-Ñ-‘Bà.�Bð ˜GŸL™LØ˜WŸ]™]Ø˜WŸ]™]Ø˜dŸo™oØ˜dŸn™nà Ø˜$Ÿ'™'ð	�ô  Ø˜v¤v×'9Ñ'9¸:ÀyÐQØ˜TØ˜Dð!ó ð ñ1 øô: &ô ÜØ˜v¤v×'@Ñ'@À*ÈhÐWØ˜TØÐ2ð!ó ò ðús   ˜AD Á4B"D Ä.E
Å	E
c                ó*  € VP                   p VP                  R 4      p\        P                  P                  VP                  P
                  R7      pW4n        VP                  4        \        RR\        P                  RR/RRRR	/4      #   \         d:   p\        RR\        P                  RR
/RRRR\        T4       2/4      u Rp?# Rp?i\         d:   p\        RR\        P                  RR
/RRRR\        T4       2/4      u Rp?# Rp?ii ; i)Ú
prof_photor5   r   r/   r0   r9   r1   Nr2   zProfile updated successfullyrƒ   TúMissing required field: zAn error occurred: )r7   rC   r	   rG   rX   r;   rL   rª   r   r   ÚHTTP_201_CREATEDÚKeyErrorrD   rQ   r‹   rÞ   )rU   rV   r7   ÚphoÚtakerŽ   s   &&    rZ   r[   ÚProfileupdateAPIView.post  s  € Ø�|‰|ˆð!	ð —(‘(˜<Ó(ˆCô ×#Ñ#×'Ñ'°·±·±Ð'Ó@ˆDØŒMà�I‰IŒKô Ø˜6¤6×#:Ñ#:¸JÈ	ÐRØ˜ØÐ9ðó ð øô ô 	ÜØ˜6¤6×#>Ñ#>À
ÈHÐUØ˜ØÐ5´c¸!³f°XÐ>ðó õ ûô
 ô 	ÜØ˜6¤6×#HÑ#HÈ*ÐV^Ð_Ø˜ØÐ0´°Q³°Ð9ðó õ ûð	ús6   ŽA=B ÂDÂ.CÃDÃDÃDÃ.DÄDÄDc           	     óª  € VP                   pVP                  P                  R 4      p \        P                  P                  VR7      p\
        P                  P                  VR7      pVP                  RVP                  4      Vn        VP                  RVP                  4      Vn        VP                  RVP                  4      Vn        VP                  RVP                  4      Vn	        VP                  4        VP                  RVP                  4      Vn	        VP                  RVP                  4      Vn        VP                  RVP                  4      Vn        V'       d   WEn        VP                  4        \        RR	\        P                   R
R/RRRR/4      #   \"         d'    \        RR	\        P$                  R
R/RRRR/4      u # i ; i)r  r5   r�   r  Úfirst_namesr  Úemail_idÚphone_nor   r/   r0   r9   r1   Nr2   úUser updated successfullyrƒ   TzUser not found)r7   ÚFILESrC   r	   rG   r   r-   r  r  r4   rª   rA   r:   rL   r   r   rO   r   rS   )rU   rV   r;   r7   ÚphotoÚmmÚsds   &&&    rZ   r­   ÚProfileupdateAPIView.put=  s�  € Ø�|‰|ˆà—‘×!Ñ! ,Ó/ˆð!	Ü×!Ñ!×%Ñ%¨bÐ%Ó1ˆBÜ—‘×!Ñ! RÐ!Ó(ˆBð Ÿ(™( <°·±Ó=ˆBŒKØ ŸH™H ]°B·M±MÓBˆBŒMØŸ8™8 K°·±Ó>ˆBŒLØ—x‘x 
¨B¯H©HÓ5ˆBŒHØ�G‰GŒIð —x‘x 
¨B¯H©HÓ5ˆBŒHØ—x‘x 
¨B¯H©HÓ5ˆBŒHØ—h‘h˜|¨R¯W©WÓ5ˆBŒG÷ Ø#”à�G‰GŒIäØ˜6¤6×#5Ñ#5°zÀ9ÐMØ˜ØÐ6ðó ð øô "ô 	ÜØ˜6¤6×#<Ñ#<¸jÈ(ÐSØ˜ØÐ+ðó ò ð	ús   ©D>F! Å(8F! Æ!.GÇGr]   N)r_   r`   ra   rb   r#   r¸   rC   r[   r­   rc   rd   re   s   @rZ   r  r  ë  s$   ø‡ € à)Ð+Ðò&òP#÷L&ð &rg   r  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚUserlistAPIViewif  c                ó„  € VP                  R 4      pVeÈ    \        P                  P                  VR7      pR VP                  RVP                  RVP
                  RVP                  RVP                  RVP                  RVP                  '       d&   VP                  VP                  P                  4      MR/p\        RR	\        P                  R
R/RRRV/4      #  \        P                  P#                  ^R7      p. p\%        V^4       F�  w  r„TP'                  RTR VP                  RVP                  RVP                  RVP
                  RVP                  RVP                  '       d&   VP                  VP                  P                  4      MR/4       K�  	  \        RR	\        P                  R
R/RRRV/4      #   \        P                   d'    \        RR	\        P                   R
R/RRRR/4      u # i ; i  \(         d7   p	\        RR	\        P*                  R
R/RRR\-        T	4      /4      u Rp	?	# Rp	?	ii ; i)r;   Nr5   r-   rA   r.   r4   r   rY   r/   r0   r9   r1   r7   rƒ   Tr2   úNo student found©rB   ÚrowÚemployeeNamer!  )rC   r	   rG   r6   r:   rA   r.   r4   r   rL   rM   rN   r   rO   r   rH   rS   rŠ   Ú	enumerateÚappendr‹   rD   rQ   ©
rU   rV   r  r;   Ústudentr7   Ú	employeesÚemployee_listÚindexrŽ   s
   &&,       rZ   rC   ÚUserlistAPIView.getg  s7  € Ø�Z‰Z˜Óˆð Š>ðÜ"×*Ñ*×.Ñ.°rÐ.Ó:�à˜'Ÿ/™/Ø §¡Ø˜WŸ]™]Ø × 0Ñ 0Ø˜WŸ]™]à˜gŸn™nà#ÐY`×Yi×YiÐYi W×%?Ñ%?À×@PÑ@P×@TÑ@TÔ%UÐosð
�ô  Ø˜v¤v×'9Ñ'9¸:ÀyÐQØ˜TØ˜Dð!ó ð ðÜ$×,Ñ,×3Ñ3¸Ð3Ó;�	Ø "�Ü&/°	¸1Ö&=‘N�EØ!×(Ñ(Ø˜uØ˜gŸo™oØ&¨¯©Ø §¡Ø §¡Ø  '§.¡.àÐU\×Ue×UeÐUe ×!;Ñ!;¸G×<LÑ<L×<PÑ<PÔ!QÐkoð	*ö 	ñ '>ô  Ø˜v¤v×'9Ñ'9¸:ÀyÐQØ˜TØ˜Mð!ó ð øô- ×'Ñ'ô ÜØ˜v¤v×'@Ñ'@À*ÈhÐWØ˜TØÐ1ð!ó ò ðûô6 ô ÜØ˜v¤v×'BÑ'BÀJÐPXÐYØ˜TØœs 1›vð!ó õ ûðús8   —A:G  ÂA
G  ÃC!G> Ç 8G;Ç:G;Ç>H?È	+H:È4H?È:H?r]   Nr÷   re   s   @rZ   r&  r&  f  s   ø‡ € ÷8ð 8rg   r&  c                   ó8   a € ] tR tRt o R tR tR tR tRtV t	R# )ÚRegisterAPIViewi¢  c                ó¢  € VP                  R 4      pVeÈ    \        P                  P                  VR7      pR VP                  RVP                  RVP
                  RVP                  RVP                  RVP                  RVP                  '       d&   VP                  VP                  P                  4      MR/p\        RR	\        P                  R
R/RRRV/4      #  \        P                  P#                  ^ R7      P%                  R4      p. p\'        V^4       F�  w  r„TP)                  RTR VP                  RVP                  RVP                  RVP
                  RVP                  RVP                  '       d&   VP                  VP                  P                  4      MR/4       K�  	  \        RR	\        P                  R
R/RRRV/4      #   \        P                   d'    \        RR	\        P                   R
R/RRRR/4      u # i ; i  \*         d7   p	\        RR	\        P,                  R
R/RRR\/        T	4      /4      u Rp	?	# Rp	?	ii ; i)r;   Nr5   r-   rA   r.   r4   r   rY   r/   r0   r9   r1   r7   rƒ   Tr2   r(  r)  r…   r*  r+  r!  )rC   r	   rG   r6   r:   rA   r.   r4   r   rL   rM   rN   r   rO   r   rH   rS   rŠ   r‰   r,  r-  r‹   rD   rQ   r.  s
   &&,       rZ   rC   ÚRegisterAPIView.get£  sB  € Ø�Z‰Z˜Óˆð Š>ðÜ"×*Ñ*×.Ñ.°rÐ.Ó:�à˜'Ÿ/™/Ø §¡Ø˜WŸ]™]Ø × 0Ñ 0Ø˜WŸ]™]à˜gŸn™nà#ÐY`×Yi×YiÐYi W×%?Ñ%?À×@PÑ@P×@TÑ@TÔ%UÐosð
�ô  Ø˜v¤v×'9Ñ'9¸:ÀyÐQØ˜TØ˜Dð!ó ð ðÜ$×,Ñ,×3Ñ3¸Ð3Ó;×DÑDÀ]ÓS�	Ø "�Ü&/°	¸1Ö&=‘N�EØ!×(Ñ(Ø˜uØ˜gŸo™oØ&¨¯©Ø §¡Ø §¡Ø  '§.¡.àÐU\×Ue×UeÐUe ×!;Ñ!;¸G×<LÑ<L×<PÑ<PÔ!QÐkoð	*ö 	ñ '>ô  Ø˜v¤v×'9Ñ'9¸:ÀyÐQØ˜TØ˜Mð!ó ð øô- ×'Ñ'ô ÜØ˜v¤v×'@Ñ'@À*ÈhÐWØ˜TØÐ1ð!ó ò ðûô6 ô ÜØ˜v¤v×'BÑ'BÀJÐPXÐYØ˜TØœs 1›vð!ó õ ûðús8   —A:G ÂA
G ÃC0H Ç8H
È	H
ÈIÈ+I	ÉIÉ	Ic                óø  € VP                   pVP                  P                  R 4      p VP                  R4      pVP                  R4      pVP                  R4      pVP                  R4      pVP                  R4      pVR8X  d   Rp	MRp	\        P                  P                  VRR7      P                  4       '       d(   \        R	R
RRR/RRV R2/\        P                  R7      # \        P                  P                  VRR7      P                  4       '       d$   \        R	R
RRR/RR/\        P                  R7      # \        P                  P                  VRR7      P                  4       '       d$   \        R	R
RRR/RR/\        P                  R7      # \        V4      p
\        P                  P                  VVV
R7      pVP                  P                  R 4      p\        P                  P                  VVVV	VP                  VVR7      p\        R	R
^ÉRR/RRRR/\        P                  R7      #   \         d<   p\        R	R
RRR/RRRR\!        T4       2/\        P                  R7      u Rp?# Rp?ii ; i)rY   r-   r4   rA   r.   rB   rÌ   Ú0)r:   rB   r   r/   r†   r0   rƒ   r2   z
Username 'z' is already taken.r   rÍ   z)This email address is already registered.)rA   rB   z)This mobile number is already registered.)r-   r4   r.   )r:   r4   rA   rB   r6   r.   rL   r9   r1   NzEmployee created successfullyTzError: )r7   r   rC   r	   rG   rŠ   rØ   r   r   rD   r   r   rš   r;   r  r‹   rQ   )rU   rV   r7   r!  r-   r4   rA   r.   rB   ÚrolesÚhashed_passwordÚvanr?   rŽ   s   &&            rZ   r[   ÚRegisterAPIView.postÜ  s‘  € Ø�|‰|ˆà—‘×!Ñ! /Ó2ˆðC	/Ø—x‘x 
Ó+ˆHØ—H‘H˜WÓ%ˆEØ—H‘H˜WÓ%ˆEØ—x‘x 
Ó+ˆHØ—8‘8˜FÓ#ˆDð �sŒ{Ø‘à�ô ×Ñ×&Ñ&¨H¸3Ð&Ó?×FÑF×HÒHÜØ˜v s¨J¸ÐAØ ¨H¨:Ð5HÐIð!ô !×5Ñ5ô7ð 7ô ×Ñ×&Ñ&¨U¸Ð&Ó=×DÑD×FÒFÜØ˜v s¨J¸ÐAØÐJð!ô !×5Ñ5ô7ð 7ô ×Ñ×&Ñ&¨U¸Ð&Ó=×DÑD×FÒFÜØ˜v s¨J¸ÐAØÐJð!ô !×5Ñ5ô7ð 7ô ,¨HÓ5ˆOÜ—,‘,×%Ñ%Ø!ØØ(ð &ó ˆCð —M‘M×%Ñ% oÓ6ˆEä×&Ñ&×-Ñ-ØØØØØŸ™Ø!Øð .ó ˆGô Ø˜6 3¨
°IÐ>Ø˜ØÐ:ðô ×-Ñ-ô	/ð /øô ô 	/ÜØ˜6 3¨
°HÐ=Ø˜Ø˜W¤S¨£V HÐ-ð
ô ×-Ñ-ô	/õ /ûð	/úsC   ©BH3 Â?&H3 Ã&4H3 Ä"H3 Ä>4H3 Å3"H3 ÆBH3 È3I9È>0I4É.I9É4I9c           	     ó  € VP                   pVP                  P                  R 4      p VP                  P                  R 4      pVP                  R4      pVP                  R4      pVP                  R4      pVP                  R4      p\        P                  P                  VR7      p	\
        P                  P                  VR7      p
WYn        Win        Wyn        W‰n	        V'       d   WIn
        V	P                  4        \        V4      pWZn        Wjn        Wºn	        V
P                  4        \        RR\        P                   R	R
/RRRR/4      #   \"         d'    \        RR\        P$                  R	R/RRRR/4      u # i ; i)rY   r-   r4   rA   r.   r5   r�   r   r/   r0   r9   r1   Nr2   r  rƒ   TzSomething went wrong)r7   r   rC   r	   rG   r   r:   r4   rA   r.   rL   rª   r   r-   r   r   r  r   rD   )rU   rV   r;   r7   r!  r-   r4   rA   r.   r"  r#  Úpassess   &&&         rZ   r­   ÚRegisterAPIView.put)  s[  € Ø�|‰|ˆà—‘×!Ñ! /Ó2ˆð#	ØŸ™×)Ñ)¨/Ó:�àŸ8™8 JÓ/�ØŸ™ Ó)�ØŸ™ Ó)�ØŸ8™8 JÓ/�Ü×%Ñ%×)Ñ)°"Ð)Ó5�Ü—\‘\×%Ñ%¨Ð%Ó,�à"”Ø ”Ø ”à&”çØ"'”KØ—‘”	Ü& xÓ0�Ø&”Ø ”Ø$”Ø—‘”	äØ˜v¤v×'>Ñ'>À
ÈIÐVØ˜TØÐ:ð!ó ð øô
 "ô 	ÜØ˜v¤v×'BÑ'BÀJÐPXÐYØ˜TØÐ5ð!ó ò ð	ús   ©D$E Å.E?Å>E?c           	     ó”  € VP                  R 4      p \        P                  P                  VR7      pVP                  4        \        P                  P                  VR7      pVP                  4        \        RR\        P                  RR/RRR	R
/4      #   \         d'    \        RR\        P                  RR/RRR	R/4      u # i ; i)r;   r5   r�   r   r/   r0   r9   r1   Nr2   zCompany deleted successfullyrƒ   TzNo data found)
rC   r	   rG   rè   r   r   r   rO   r   rS   )rU   rÔ   r  Ú
company_idr  r  s   &*,   rZ   rè   ÚRegisterAPIView.deleteS  sÊ   € Ø—Z‘Z Ó%ˆ
ð	ä×"Ñ"×&Ñ&°
Ð&Ó;ˆBØ�I‰IŒKÜ—l‘l×&Ñ&¨*Ð&Ó5ˆGØ�N‰NÔäØ˜6¤6×#5Ñ#5°zÀ9ÐMØ˜ØÐ9ðó ð øô
 "ô 	ÜØ˜6¤6×#<Ñ#<¸jÈ(ÐSØ˜Ø˜?ðó ò ð	ús   “BB Â.CÃCr]   N©
r_   r`   ra   rb   rC   r[   r­   rè   rc   rd   re   s   @rZ   r5  r5  ¢  s"   ø‡ € ò8òrI/òZ(÷Tð rg   r5  c                   ó*   a € ] tR tRt o RR ltRtV tR# )ÚCheckcompanyAPIViewit  Nc                ól  € VP                   P                  R 4      pVP                   P                  R4      pVP                   P                  R4      pVP                   P                  R4      ;'       g    VP                   P                  R4      p\        RW4V4       V'       g   V'       g   V'       g	   V'       dÇ   \        4       pV'       d   V\        VR7      ,          pV'       d   V\        VR7      ,          pV'       d   V\        VR7      ,          pV'       d   V\        VR	7      ,          p\        P
                  P                  V4      P                  4       p\        R
R\        P                  RR/RRRV/4      # \        R
R\        P                  RR/RRRR/\        P                  R7      # )rA   r4   r-   Ú	gstnumberÚgstzCheck Params:rã   )rA   r3   )rH  r   r/   r0   r9   r1   NrØ   rƒ   Tr2   z!No phone, email, or GST provided.r   )r‡   rC   r¿   r   r	   rG   rŠ   rØ   r   r   rO   rD   )	rU   rV   r;   rA   r4   r:   rH  ÚqueryrØ   s	   &&&      rZ   rC   ÚCheckcompanyAPIView.getu  sf  € Ø×$Ñ$×(Ñ(¨Ó1ˆØ×$Ñ$×(Ñ(¨Ó1ˆØ×#Ñ#×'Ñ'¨
Ó3ˆð ×(Ñ(×,Ñ,¨[Ó9×\Ð\¸W×=QÑ=Q×=UÑ=UÐV[Ó=\ˆ	ô 	ˆo˜u¨YÔ7ç—EŸY¯$Ü“CˆEßØœ œÕ%�ßØœ œÕ'�ßØœ œÕ'�ßØœ YÔ/Õ/�ä×%Ñ%×,Ñ,¨UÓ3×:Ñ:Ó<ˆFäØ˜6¤6×#5Ñ#5°zÀ9ÐMØ˜Ø˜&ðó ð ô Ø�vœv×:Ñ:¸JÈÐQØ�TØÐ:ð
ô ×-Ñ-ô	/ð 	/rg   r]   r¯   r÷   re   s   @rZ   rF  rF  t  s   ø‡ € ÷#/ò #/rg   rF  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚDashboardStatsAPIViewi�  c                óž  € VP                   P                  R R4      pV'       d&   \        P                  ! VR4      P	                  4       M"\
        P                  ! 4       P	                  4       p\        P                  P                  ^R7      p\        P                  P                  V^RR7      P                  RRR7      p\        P                  P                  V^RR7      P                  RRR7      pVP                  ^^.R	7      P                  4       pVP                  ^^.R	7      P                  4       p\        V4      p	\        V4      p
V^ 8”  d   \        W—,          ^d,          4      M^ pV^ 8”  d   \        W¨,          ^d,          4      M^ p. pV F‚  pVP                  R9   pVP                  R9   pVP                   V9   d   R
MV'       d   RMRpVP                   V9   d   R
MV'       d   RMRpVP#                  RVP$                  RVRVRV/4       K„  	  \'        RR^ÈRR/RRRV	RVRV/RRV
RVRV/RVRVP)                  R4      //4      # )r   Nr’   r   ÚPresent)r   Úsession_typer   Ú
student_idT)Úflat)ÚclassType__inÚPÚAz--r:   Ún_statusÚs_statusÚ
is_specialr   r/   r0   r9   r7   Ún_dataÚpresentÚtotalÚpercentÚs_dataÚstudent_listÚselected_date)é   é   )é   ra  )r‡   rC   r   r™   r   r   rÙ   r   rG   rŠ   Ú
AttendanceÚvalues_listr¶   Úlenr˜   Ú	classTyper;   r-  ÚstudentNamer   Ústrftime)rU   rV   Údate_strÚtarget_dateÚall_studentsÚn_present_idsÚs_present_idsÚn_totalÚs_totalÚ	n_presentÚ	s_presentÚ	n_percentÚ	s_percentÚstudent_daily_listr/  Úis_n_elgÚis_s_elgrV  rW  s   &&                 rZ   rC   ÚDashboardStatsAPIView.getž  sQ  € Ø×'Ñ'×+Ñ+¨F°DÓ9ˆßHP”h×'Ò'¨°*Ó=×BÑBÔDÔV^×VbÒVbÓVd×ViÑViÓVkˆä—‘×-Ñ-°QÐ-Ó7ˆô #×*Ñ*×1Ñ1°{ÐQRÐ[dÐ1Óe×qÑqÐr~ð  FJÐqó  KˆÜ"×*Ñ*×1Ñ1°{ÐQRÐ[dÐ1Óe×qÑqÐr~ð  FJÐqó  Kˆð ×%Ñ%°Q¸°FÐ%Ó;×AÑAÓCˆØ×%Ñ%°Q¸°FÐ%Ó;×AÑAÓCˆä˜Ó&ˆ	Ü˜Ó&ˆ	ð 9@À!¼”C˜Õ,°Õ3Ô4Èˆ	Ø8?À!¼”C˜Õ,°Õ3Ô4Èˆ	àÐÛ#ˆGØ×(Ñ(¨FÑ2ˆHØ×(Ñ(¨FÑ2ˆHà%Ÿj™j¨MÔ9‘sÇxÁÐUYˆHØ%Ÿj™j¨MÔ9‘sÇxÁÐUYˆHà×%Ñ%Ø˜×+Ñ+Ø˜HØ˜HØ˜hð	'ö ñ $ô Ø�v˜s J°	Ð:ØØ˜9 i°¸'À9ÈiÐXØ˜9 i°¸'À9ÈiÐXØÐ 2Ø ×!5Ñ!5°jÓ!Að	ð
ó ð 	rg   r]   Nr÷   re   s   @rZ   rM  rM  �  s   ø‡ € ÷,ð ,rg   rM  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚEmployeeStatusAPIViewiÌ  c                ó6  €  \         P                  P                  VR 7      pVP                  ^8X  d	   ^Vn        M^Vn        VP	                  4        \        RR^ÈRR/RVP                  RR/4      #   \        P                   d    \        RR	/R
R7      u # i ; i)r5   r   r/   r0   r9   Ú
new_statusr2   zStatus updated successfullyr1   zStudent not foundr‚   r   )r	   rG   rC   r   rª   r   r   rH   )rU   rV   r;   r/  s   &&& rZ   ÚpatchÚEmployeeStatusAPIView.patchÍ  sŸ   € ð	HÜ×&Ñ&×*Ñ*°2Ð*Ó6ˆGà�~‰~ Ô"Ø!"�•à!"�”à�L‰LŒNÜØ˜6 3¨
°IÐ>Ø˜gŸn™nØÐ8ðó ð øô
 ×#Ñ#ô 	HÜ˜WÐ&9Ð:À3ÔGÒGð	Hús   ‚A.A1 Á1$BÂBr]   N)r_   r`   ra   rb   r|  rc   rd   re   s   @rZ   ry  ry  Ì  s   ø‡ € ÷Hð Hrg   ry  c                   ó&   a € ] tR tRt o R tRtV tR# )Ú	FpAPIViewiß  c           
     óÈ  € VP                   p VP                  R / 4      pVP                  R4      pVP                  R4      p\        V4      p\        P                  P                  VR7      pWgn        VP                  4        \        RR\        P                  RR/RR	R
R/4      #   \         d1   p\        RR\        P                  RR/RRR
RT 2/4      u R	p?# R	p?ii ; i)Úparamsr4   r.   r3   r   r/   r0   r9   r1   Nr2   zPassword reset successfullyrƒ   Tr  )r7   rC   r   r   rG   r.   rª   r   r   rO   r  rD   )	rU   rV   r7   r�  r4   r.   r;  ÚmanrŽ   s	   &&       rZ   r[   ÚFpAPIView.postã  sì   € Ø�|‰|ˆð	à—X‘X˜h¨Ó+ˆFð —J‘J˜wÓ'ˆEØ—z‘z *Ó-ˆHô ,¨HÓ5ˆOä—,‘,×"Ñ"¨Ð"Ó/ˆCà*ŒLà�H‰HŒJô Ø˜6¤6×#5Ñ#5°zÀ9ÐMØ˜ØÐ8ðó ð øô
 ô 	ÜØ˜6¤6×#>Ñ#>À
ÈHÐUØ˜ØÐ5°a°SÐ9ðó õ ûð	ús   ŽBB& Â&C!Â1%CÃC!ÃC!r]   Nr^   re   s   @rZ   r  r  ß  s   ø‡ € ÷!ð !rg   r  c                   ó<   a € ] tR tRt o RR ltR tR tR tRtV t	R# )	ÚTeamAPIViewi  Nc                ó&  € VeÐ    \         P                  P                  VR7      p VP                  P	                  4       pRTP                  RTP                  RTP                  RTP                  RTP                  RTP                  RTP                  R	TP                  R
TRTP                  /
p\!        R	R\        P"                  RR/RR RT/4      #  \         P                  P)                  4       P+                  R4      P-                  \/        R4      R7      p. p\1        V^4       F„  w  rƒVP3                  RVRVP                  RVP                  RVP                  RVP                  RVP                  RVP                  RVP                  R	VP                  R
VP4                  /
4       K†  	  \!        R	R\        P"                  RR/RR RV/4      #   \
         d5     TP                  P	                  4       p EL¼  \
         d    ^ p  ELÍi ; ii ; i  \         P$                   d'    \!        R	R\        P&                  RR/RRRR/4      u # i ; i  \
         Ed1   p	 \         P                  P)                  4       P+                  R4      p. p\1        T^4       Fz  w  rƒTP3                  RTRTP                  RTP                  RTP                  RTP                  RTP                  RTP                  RTP                  R	TP                  R
^ /
4       K|  	  \!        R	R\        P"                  RR/RR RT/4      u R p	?	#   \
         d<   p
\!        R	R\        P6                  RR/RRR\9        T
4      /4      u R p
?
u R p	?	# R p
?
ii ; iR p	?	ii ; i)Nr�   r;   r:   Ú
short_namero   rq   Úhome_groundÚcaptain_namer   Úplayers_countrm   r/   r0   r9   r1   r7   rƒ   Tr2   r–   r…   Úplayer)Úpcr*  )r   rG   rC   Ú
player_setr¶   r‹   Úplayersr;   r:   r‡  ro   rq   rˆ  r‰  r   rm   r   rO   rH   rS   rˆ   r‰   ÚannotateÚCountr,  r-  rŒ  rD   rQ   )rU   rV   r;   ÚteamÚp_countr7   Úteams_qsÚ	team_listr2  rŽ   Úe2s   &&&        rZ   rC   ÚTeamAPIView.get  sv  € ð Š>ð"Ü—|‘|×'Ñ'¨2Ð'Ó.�ð$Ø"Ÿo™o×3Ñ3Ó5�Gð  T§W¡WØ T§Y¡YØ  T§_¡_Ø  T§_¡_Ø  T§_¡_Ø! T×%5Ñ%5Ø" T×%6Ñ%6Ø T§[¡[Ø# WØ  T§_¡_ð�ô  Ø˜v¤v×'9Ñ'9¸:ÀyÐQØ˜dØ˜dð!ó ð ð?ô —L‘L×$Ñ$Ó&ß‘X˜mÓ,ß‘X¤ x£�XÓ1ð ð �	Ü#,¨X°qÖ#9‘K�EØ×$Ñ$Ø¨Ø¨¯©Ø¨¯©Ø$¨¯©Ø$¨¯©Ø$¨¯©Ø%¨×)9Ñ)9Ø&¨×):Ñ):Ø ¨¯©Ø'¨¯©ð&ö ñ $:ô  Ø˜v¤v×'9Ñ'9¸:ÀyÐQØ˜dØ˜ið!ó ð øô{ !ô $ð$Ø"&§,¡,×"4Ñ"4Ó"6›øÜ$ô $Ø"#œð$úð$ûô. ×$Ñ$ô ÜØ ¬×(AÑ(AÀ:ÈxÐXØ˜tØÐ/ð!ó ò ðûôX õ ðÜ#Ÿ|™|×/Ñ/Ó1×:Ñ:¸=ÓI�HØ "�IÜ'0°¸1Ö'=™˜Ø!×(Ñ(Ø!¨UØ ¨T¯W©WØ"¨T¯Y©YØ(¨T¯_©_Ø(¨T¯_©_Ø(¨T¯_©_Ø)¨T×-=Ñ-=Ø*¨T×->Ñ->Ø$¨T¯[©[Ø+¨Qð*ö ñ (>ô $Ø  6¬6×+=Ñ+=¸zÈ9Ð"UØ $Ø )ð%ó õ øô
 !ô Ü#Ø  F¬F×,GÑ,GÈÐU]Ð#^Ø 4Ø!¤3 r£7ð%ó ÷ ò ûðþð/ús�   † H §G ÁBH ÃC>I ÇHÇ G=Ç:H Ç=HÈ
HÈH ÈHÈHÈH È8IÉIÉNÉ!CMÌ<NÍNÍ+NÍ8NÍ9NÍ=NÎNÎNÎNc                ó  € VP                   p VP                  R R4      P                  4       pV'       g"   \        RR\        P
                  RR/RR/4      # \        P                  P                  VR7      P                  4       '       d&   \        RR\        P
                  RR/RR	V R
2/4      # \        P                  P                  VVP                  RR4      P                  4       P                  4       R,          VP                  RR4      VP                  RR4      VP                  RR4      P                  4       VP                  RR4      P                  4       \        VP                  R^4      4      R7      p\        RR\        P                  RR/RRVP                   R2RRVP                  R VP                  //4      #   \          d5   p\        RR\        P
                  RR/R\#        T4      /4      u Rp?# Rp?ii ; i)r:   r”   r   r/   r0   rƒ   r2   zTeam name is required.©Úname__iexactÚ'õ@   ' à®Žà®©à¯�à®± team à®�à®±à¯�à®•à®©à®µà¯‡ à®‡à®°à¯�à®•à¯�à®•à¯�!r‡  ºNé
   Nro   rp   rq   rr   rˆ  r‰  )r:   r‡  ro   rq   rˆ  r‰  r   r9   úTeam 'u   ' create à®†à®šà¯�à®šà¯�! ðŸ��r7   r;   N)r7   rC   r›   r   r   rD   r   rG   rŠ   rØ   rš   Úupperr˜   r  r:   r;   r‹   rQ   )rU   rV   r7   r:   r‘  rŽ   s   &&    rZ   r[   ÚTeamAPIView.post{  sä  € Ø�|‰|ˆð	Ø—8‘8˜F BÓ'×-Ñ-Ó/ˆDßÜØ ¬×(CÑ(CÀZÐQYÐZØÐ7ð!ó ð ô �|‰|×"Ñ"°Ð"Ó5×<Ñ<×>Ò>ÜØ ¬×(CÑ(CÀZÐQYÐZØ  4 &Ð(hÐið!ó ð ô —<‘<×&Ñ&Ø#Ø#Ÿx™x¨°bÓ9×?Ñ?ÓA×GÑGÓIÈ#ÕNØ#Ÿx™x¨°fÓ=Ø#Ÿx™x¨°iÓ@Ø#Ÿx™x¨°rÓ:×@Ñ@ÓBØ#Ÿx™x¨¸Ó;×AÑAÓCÜ" 4§8¡8¨H°aÓ#8Ó9ð 'ó ˆDô Ø˜F¤F×$;Ñ$;¸ZÈÐSØ˜V D§I¡I ;Ð.LÐMØ˜D $§'¡'¨6°4·9±9Ð=ðó ð øô
 ô 	ÜØ˜F¤F×$?Ñ$?ÀÈXÐVØœ3˜q›6ðó õ ûð	ús5   Ž'G ¶ G Á3G Â$G Â0DG ÇHÇ)HÇ;HÈHc                ó‚  € VP                   p \        P                  P                  VR 7      pVP                  RVP                  4      P                  4       p\        P                  P                  VR7      P                  VR 7      P                  4       '       d&   \        RR\        P                  RR/RRV R	2/4      # WTn        TP                  R
VP                  ;'       g    R4      P                  4       P                  4       R,          Vn        VP                  RVP                  4      Vn        VP                  RVP                  4      Vn        TP                  RVP                   ;'       g    R4      P                  4       Vn        TP                  RVP"                  ;'       g    R4      P                  4       Vn        RV9   d    \%        VP                  R4      4      Vn
        VP'                  4        \        RR\        P(                  RR/RRVP                   R2RRVP*                  RVP                  //4      #   \        P,                   d%    \        RR\        P.                  RR/RR/4      u # \0         d5   p\        RR\        P                  RR/R\3        T4      /4      u Rp?# Rp?ii ; i)r�   r:   r˜  r   r/   r0   rƒ   r2   rš  r›  r‡  r”   rœ  ro   rq   rˆ  r‰  r9   rž  u   ' updated à®†à®šà¯�à®šà¯�! r7   r;   r–   N)r7   r   rG   rC   r:   r›   rŠ   ÚexcluderØ   r   r   rD   r‡  rŸ  ro   rq   rˆ  r‰  r˜   rª   rO   r;   rH   rS   r‹   rQ   )rU   rV   r;   r7   r‘  r:   rŽ   s   &&&    rZ   r­   ÚTeamAPIView.put   sX  € Ø�|‰|ˆð	Ü—<‘<×#Ñ# rÐ#Ó*ˆDØ—8‘8˜F D§I¡IÓ.×4Ñ4Ó6ˆDÜ�|‰|×"Ñ"°Ð"Ó5×=Ñ=ÀÐ=ÓD×KÑK×MÒMÜØ ¬×(CÑ(CÀZÐQYÐZØ  4 &Ð(hÐið!ó ð ð !%ŒIØ $§¡¨¸¿¹×9PÐ9PÈbÓ Q× WÑ WÓ Y× _Ñ _Ó aÐbeÕ fˆDŒOØ $§¡¨¸¿¹Ó IˆDŒOØ $§¡¨¸¿¹Ó IˆDŒOØ $§¡¨¸×9IÑ9I×9PÐ9PÈbÓ Q× WÑ WÓ YˆDÔØ $§¡¨¸×9JÑ9J×9PÐ9PÈbÓ Q× WÑ WÓ YˆDÔØ˜4ÔÜ! $§(¡(¨8Ó"4Ó5�”Ø�I‰IŒKÜØ˜F¤F×$6Ñ$6¸
ÀIÐNØ˜V D§I¡I ;Ð.IÐJØ˜D $§'¡'¨6°4·9±9Ð=ðó ð øô
 × Ñ ô 	ÜØ˜F¤F×$=Ñ$=¸zÈ8ÐTØÐ+ðó ò ô ô 	ÜØ˜F¤F×$?Ñ$?ÀÈXÐVØœ3˜q›6ðó õ ûð	úsJ   ŽBI Â$I Ã$I Ã&BI Å68I Æ/BI É6J>Ê J>Ê	J>Ê
)J9Ê3J>Ê9J>c                óÄ  €  \         P                  P                  VR 7      pVP                  pVP	                  4        \        RR\        P                  RR/RRRRV R	2/4      #   \         P                   d'    \        RR\        P                  RR
/RRRR/4      u # \         d7   p\        RR\        P                  RR
/RRR\        T4      /4      u Rp?# Rp?ii ; i)r�   r   r/   r0   r9   r1   Nr2   rž  z' deleted! rƒ   Tr–   )r   rG   rC   r:   rè   r   r   rO   rH   rS   r‹   rD   rQ   )rU   rV   r;   r‘  Ú	team_namerŽ   s   &&&   rZ   rè   ÚTeamAPIView.deleteÆ  sð   € ð	ÜŸ™×(Ñ(¨BÐ(Ó/ˆDØŸ	™	ˆIà�K‰KŒMÜØ˜F¤F×$6Ñ$6¸
ÀIÐNØ˜4Ø˜V I ;¨kÐ:ðó ð øô
 × Ñ ô 	ÜØ˜F¤F×$=Ñ$=¸zÈ8ÐTØ˜4ØÐ+ðó ò ô
 ô 	ÜØ˜F¤F×$?Ñ$?ÀÈXÐVØ˜4Øœ3˜q›6ðó õ ûð	úó*   ‚A"A% Á%8CÂCÂ(CÂ)+CÃCÃCr]   r¯   rD  re   s   @rZ   r…  r…    s"   ø‡ € ôiò\ òJ!÷Lð rg   r…  c                   ó<   a € ] tR tRt o RR ltR tR tR tRtV t	R# )	ÚPlayerAPIViewià  Nc                ón  € Ve£    \         P                  P                  VR7      p\        RR\        P
                  RR/RR RRVP                  R	VP                  R
VP                  RVP                  RVP                  RVP                  P                  RVP                  //4      # VP                  P                  R4      p \         P                  P                  R4      P!                  4       pV'       d   VP#                  VR7      p. p\%        V^4       Fv  w  rxVP'                  RVRVP                  R	VP                  R
VP                  RVP                  RVP                  RVP                  P                  RVP                  /4       Kx  	  \        RR\        P
                  RR/RR RV/4      #   \         P                   d'    \        RR\        P                  RR/RRRR/4      u # i ; i  \(         d7   p	\        RR\        P*                  RR/RRR\-        T	4      /4      u R p	?	# R p	?	ii ; i)Nr�   r   r/   r0   r9   r1   r7   r;   r:   Ú	player_idrB   r‘  r¥  rƒ   Tr2   r—   )Úteam_idr*  )r   rG   rC   r   r   rO   r;   r:   r«  rB   r¬  r‘  rH   rS   r‡   Úselect_relatedrˆ   rŠ   r,  r-  r‹   rD   rQ   )
rU   rV   r;   r‹  r¬  r�   Úplayer_listr2  ÚprŽ   s
   &&&       rZ   rC   ÚPlayerAPIView.getç  s  € ð Š>ðÜŸ™×+Ñ+¨rÐ+Ó2�ÜØ˜v¤v×'9Ñ'9¸:ÀyÐQØ˜dØØ V§Y¡YØ V§[¡[Ø# V×%5Ñ%5Ø V§[¡[Ø V§^¡^Ø# V§[¡[×%5Ñ%5Ø  V§]¡]ðð!ó ð ð* ×&Ñ&×*Ñ*¨6Ó2ˆð	Ü—‘×.Ñ.¨vÓ6×:Ñ:Ó<ˆBßØ—Y‘Y w�YÓ/�àˆKÜ% b¨!Ö,‘�Ø×"Ñ"Ø Ø §¡Ø §¡Ø §¡Ø §¡Ø §¡Ø §¡§¡Ø §¡ð	$ö 	ñ -ô Ø˜6¤6×#5Ñ#5°zÀ9ÐMØ˜$Ø˜+ðó ð øô7 ×&Ñ&ô ÜØ ¬×(AÑ(AÀ:ÈxÐXØ˜tØÐ1ð!ó ò ðûôB ô 	ÜØ˜F¤F×$?Ñ$?ÀÈXÐVØ˜4Øœ3˜q›6ðó õ ûð	ús7   †B F5 Ã4G3 Ã8B<G3 Æ58G0Ç/G0Ç3H4Ç>+H/È)H4È/H4c                óN  € VP                   p VP                  R R4      P                  4       pV'       g"   \        RR\        P
                  RR/RR/4      # VP                  R4      pV'       g"   \        RR\        P
                  RR/RR	/4      #  \        P                  P                  VR
7      p. ROpTP                  RR4      pYv9  d   Rp\        P                  P                  TTTP                  RR4      P                  4       T\        TP                  R^4      4      R7      p\        RR\        P                  RR/RRTP                   RTP                   R2RRTP                  R TP                  RTP                  RTP                   RTP"                  //4      #   \        P                   d)    \        RR\        P
                  RR/RRT R2/4      u # i ; i  \$         d5   p	\        RR\        P
                  RR/R\'        T	4      /4      u Rp	?	# Rp	?	ii ; i)r:   r”   r   r/   r0   rƒ   r2   zPlayer name is required.r‘  zTeam ID is required.r�   zTeam ID z not found.ÚBATrB   r«  )r‘  r:   r«  rB   r   r9   úPlayer 'z' added to u   ! ðŸ��r7   r;   N©r²  ÚBOWLÚALLÚWK)r7   rC   r›   r   r   rD   r   rG   rH   r   rš   r˜   r  r:   r;   r«  rB   r¬  r‹   rQ   )
rU   rV   r7   r:   r¬  r‘  Úvalid_rolesrB   r‹  rŽ   s
   &&        rZ   r[   ÚPlayerAPIView.post%  s+  € Ø�|‰|ˆð6	Ø—8‘8˜F BÓ'×-Ñ-Ó/ˆDßÜØ ¬×(CÑ(CÀZÐQYÐZØÐ9ð!ó ð ð
 —h‘h˜vÓ&ˆGßÜØ ¬×(CÑ(CÀZÐQYÐZØÐ5ð!ó ð ðÜ—|‘|×'Ñ'¨7Ð'Ó3�ò 7ˆKØ—8‘8˜F EÓ*ˆDØÔ&Ø�ä—^‘^×*Ñ*Ø Ø Ø ŸH™H [°"Ó5×;Ñ;Ó=Ø Ü §¡¨°1Ó 5Ó6ð +ó ˆFô Ø˜F¤F×$;Ñ$;¸ZÈÐSØ˜X f§k¡k ]°+¸d¿i¹i¸[ÈÐOØØ §¡Ø §¡Ø ×!1Ñ!1Ø §¡Ø §¡ðð
ó 
ð 
øô) ×$Ñ$ô ÜØ ¬×(CÑ(CÀZÐQYÐZØ ¨'¨°+Ð>ð!ó ò ðûô@ ô 	ÜØ˜F¤F×$?Ñ$?ÀÈXÐVØœ3˜q›6ðó õ ûð	úsS   Ž'G% ¶ G% ÁG% Á0 G% Â F% Â2C2G% Æ%:G"ÇG% Ç!G"Ç"G% Ç%H$Ç0)HÈH$ÈH$c                ó|  € VP                   p \        P                  P                  VR 7      p. ROpVP                  RVP                  4      pWe9  d   VP                  pVP                  RVP
                  4      P                  4       Vn        TP                  RVP                  ;'       g    R4      P                  4       Vn        Wdn        RV9   d   \        VR,          4      Vn	        VP                  4        \        RR\        P                  RR/R	R
VP
                   R2RRVP                  RVP
                  //4      #   \        P                   d%    \        RR\        P                  RR/R	R/4      u # \          d5   p\        RR\        P"                  RR/R	\%        T4      /4      u Rp?# Rp?ii ; i)r�   rB   r:   r«  r”   r   r/   r0   r9   r2   r³  u   ' updated! âœ…r7   r;   rƒ   r—   Nr´  )r7   r   rG   rC   rB   r:   r›   r«  r˜   r   rª   r   rO   r;   rH   rS   r‹   rD   rQ   )rU   rV   r;   r7   r‹  r¸  rB   rŽ   s   &&&     rZ   r­   ÚPlayerAPIView.putb  s‰  € Ø�|‰|ˆð	Ü—^‘^×'Ñ'¨2Ð'Ó.ˆFâ6ˆKØ—8‘8˜F F§K¡KÓ0ˆDØÔ&Ø—{‘{�à#Ÿx™x¨°V·[±[ÓA×GÑGÓIˆFŒKØ#Ÿx™x¨°V×5EÑ5E×5KÐ5KÈÓL×RÑRÓTˆFÔØ#ŒKØ˜4ÔÜ # D¨¥NÓ 3�”Ø�K‰KŒMäØ˜F¤F×$6Ñ$6¸
ÀIÐNØ˜X f§k¡k ]°.ÐAØ˜D &§)¡)¨V°V·[±[ÐAðó ð øô ×"Ñ"ô 	ÜØ˜F¤F×$=Ñ$=¸zÈ8ÐTØÐ-ðó ò ô ô 	ÜØ˜F¤F×$?Ñ$?ÀÈXÐVØœ3˜q›6ðó õ ûð	ús1   ŽBE Â.BE Å6F;Å=F;ÆF;Æ)F6Æ0F;Æ6F;c                óÄ  €  \         P                  P                  VR 7      pVP                  pVP	                  4        \        RR\        P                  RR/RRRRV R	2/4      #   \         P                   d'    \        RR\        P                  RR
/RRRR/4      u # \         d7   p\        RR\        P                  RR
/RRR\        T4      /4      u Rp?# Rp?ii ; i)r�   r   r/   r0   r9   r1   Nr2   r³  u   ' deleted! âœ…rƒ   Tr—   )r   rG   rC   r:   rè   r   r   rO   rH   rS   r‹   rD   rQ   )rU   rV   r;   r‹  Úplayer_namerŽ   s   &&&   rZ   rè   ÚPlayerAPIView.delete‡  sð   € ð	Ü Ÿ.™.×,Ñ,°Ð,Ó3ˆFØ Ÿ+™+ˆKØ�M‰MŒOÜØ˜F¤F×$6Ñ$6¸
ÀIÐNØ˜4Ø˜X k ]°.ÐAðó ð øô
 ×"Ñ"ô 	ÜØ˜F¤F×$=Ñ$=¸zÈ8ÐTØ˜4ØÐ-ðó ò ô
 ô 	ÜØ˜F¤F×$?Ñ$?ÀÈXÐVØ˜4Øœ3˜q›6ðó õ ûð	úr§  r]   r¯   rD  re   s   @rZ   r©  r©  à  s!   ø‡ € ô9ò|8òz ÷Jð rg   r©  )Úget_object_or_404)r   r   zhttp://localhost:9997zhttp://192.168.29.202:8888zrtmp://192.168.29.202:1935c                   óP   a € ] tR tRt o RtRR ltR tR tRR ltR t	R t
R	tV tR
# )ÚStreamAPIViewi´  u  
POST /api/v1/stream/start/<match_id>/   â†’ generate key, return RTMP URL
GET  /api/v1/stream/status/<match_id>/  â†’ check if live
POST /api/v1/stream/stop/<match_id>/    â†’ mark ended
GET  /api/v1/stream/watch/<match_id>/   â†’ return HLS URL for viewer
c                óœ   € VR 8X  d   V P                  W4      # VR8X  d   V P                  W4      # \        RR/\        P                  R7      # )rÝ   Ústopr2   zUnknown actionr   )Ú_start_streamÚ_stop_streamr   r   rD   ©rU   rV   Úmatch_idÚactions   &&&&rZ   r[   ÚStreamAPIView.post½  sM   € Ø�WÔØ×%Ñ% gÓ8Ð8Ø�vÔØ×$Ñ$ WÓ7Ð7Ü˜Ð$4Ð5¼f×>YÑ>YÔZÐZrg   c                ó  €  \        \        VR 7      p\        P                  P	                  VRRV R\
        P                  ! ^4       2RR/R7      w  rERVP                   2p\         RV R	2Vn	        R
Vn
        \        P                  ! 4       Vn        VP                  4        R
Vn
        VP                  R.R7       \        RR^ÈRR/RRVP                  R\          RV 2RVP                  RVRR\          RV 2RVP                  ///4      #   \        P"                   d!    \        RR/\        P$                  R7      u # \&         d1   p\        R\)        T4      /\        P*                  R7      u Rp?# Rp?ii ; i)r�   Ú
stream_keyÚmatch_Ú_r   Úidle)rF   Údefaultszlive/Ú/z/index.m3u8r•   )Úupdate_fieldsr/   r0   r9   r7   Úrtmp_urlÚhls_urlrÇ  ÚinstructionsÚpush_urlÚ	watch_urlr2   r„   r   N)r¿  r   r   rG   Úget_or_createÚsecretsÚ	token_hexrË  ÚMEDIAMTX_HLSrÓ  r   r   rÙ   Ú
started_atrª   r   Ú	RTMP_BASErH   rS   r‹   rQ   rD   )rU   rV   rÇ  rF   ÚstreamÚ_createdÚstream_pathrŽ   s   &&&     rZ   rÄ  ÚStreamAPIView._start_streamÄ  s†  € ð$	UÜ%¤e°Ô9ˆEä*×2Ñ2×@Ñ@Øà  F¨8¨*°A´g×6GÒ6GÈÓ6JÐ5KÐ"LØ˜fðð  Aó  ÑˆFð " &×"3Ñ"3Ð!4Ð5ˆKÜ ,˜~¨Q¨{¨m¸;ÐGˆFŒNØ"ˆFŒMÜ (§¢£ˆFÔØ�K‰KŒMà!ˆEŒLØ�J‰J h ZˆJÔ0äØ˜6 3¨
°IÐ>ØØ  &×"3Ñ"3Ø¤9 +¨Q¨{¨mÐ <Ø˜vŸ~™~Ø Ø"Ø"¤y k°°;°-Ð$@Ø# V§^¡^ð%ð	ðó ð øô ×!Ñ!ô 	^Ü˜YÐ(9Ð:Ä6×C\ÑC\Ô]Ò]Üô 	UÜ˜Y¬¨A«Ð/¼×8SÑ8SÔTÕTûð	Uús*   ‚DD Ä2E>ÅE>ÅE>Å%E9Å3E>Å9E>c           
     ó`  €  \         P                  P                  VR 7      pRVn        \        P
                  ! 4       Vn        VP                  4        \        RR^ÈRR/RRRR	VP                  4       //4      #   \         P                   d!    \        RR
/\        P                  R7      u # i ; i)©rÇ  Úendedr   r/   r0   r9   r2   zStream stoppedr7   Úrecording_urlzStream not foundr   )r   rG   rC   r   r   rÙ   Úended_atrª   r   Úget_recording_urlrH   rS   ©rU   rV   rÇ  rÝ  s   &&& rZ   rÅ  ÚStreamAPIView._stop_streamë  s©   € ð	_Ü ×(Ñ(×,Ñ,°hÐ,Ó?ˆFØ#ˆFŒMÜ&Ÿlšl›nˆFŒOØ�K‰KŒMÜØ˜6 3¨
°IÐ>ØÐ+Ø˜¨&×*BÑ*BÓ*DÐEðó ð øô
 ×'Ñ'ô 	_Ü˜YÐ(:Ð;ÄF×D]ÑD]Ô^Ò^ð	_ús   ‚A5A8 Á82B-Â,B-c                óT   € VR 8X  d   V P                  W4      # V P                  W4      # r   )Ú_get_statusÚ_get_watch_urlrÆ  s   &&&&rZ   rC   ÚStreamAPIView.getú  s,   € Ø�XÔØ×#Ñ# GÓ6Ð6Ø×"Ñ" 7Ó5Ð5rg   c                ó,  €  \         P                  P                  VR 7      pRp \        P                  ! \         RVP
                   2^R7      pVP                  ^È8X  d#   VP                  4       pVP                  RR4      p\        RR^ÈRR	/R
RTRTP                  RT'       d   TP                  MRRTP                  //4      #   \         d    TP                  R8H  p L_i ; i  \         P                   d    \        RR^ÈRR	/R
RR//4      u # i ; i)râ  Fz/v3/paths/get/)ÚtimeoutÚreadyr•   r   r/   r0   r9   r7   Úis_liveÚstream_statusrÓ  NrÛ  )r   rG   rC   ÚrequestsÚMEDIAMTX_APIrË  Ústatus_codeÚjsonr‹   r   r   rÓ  rÛ  rH   )rU   rV   rÇ  rÝ  rð  Úrr7   s   &&&    rZ   rê  ÚStreamAPIView._get_statusÿ  s#  € ð	Ü ×(Ñ(×,Ñ,°hÐ,Ó?ˆFàˆGð2Ü—L’L¤L >°À×@QÑ@QÐ?RÐ!SÐ]^Ô_�Ø—=‘= CÔ'ØŸ6™6›8�DØ"Ÿh™h w°Ó6�Gô
 Ø˜6 3¨
°IÐ>ØØ˜wØ# V§]¡]Ø·˜vŸ~š~¸dØ  &×"3Ñ"3ð	ðó ð øô	 ô 2à Ÿ-™-¨6Ñ1’ð2ûô ×'Ñ'ô 	ÜØ˜6 3¨
°IÐ>Ø˜ EÐ*ðó ò ð	ús6   ‚"C& ¥AC ÂAC& ÃC#Ã C& Ã"C#Ã#C& Ã&*DÄDc                óX  €  \         P                  P                  VR7      p\        RR^ÈRR/RRVP                  RVP
                  R	VP
                  R
8H  RVP                  4       RV//4      #   \         P                   d'    \        RRRRR/RR/\
        P                  R7      u # i ; i)uD   Read-only â€” no longer mutates viewer_count (that's WS-driven now).râ  r   r/   r0   r9   r7   rÓ  rñ  rð  r•   rä  rÇ  r‚   rƒ   r2   zStream not found for this matchr   )	r   rG   rC   r   rÓ  r   ræ  rH   rS   rç  s   &&& rZ   rë  ÚStreamAPIView._get_watch_url  sÃ   € ð	1Ü ×(Ñ(×,Ñ,°hÐ,Ó?ˆFÜØ˜6 3¨
°IÐ>ØØ˜vŸ~™~Ø# V§]¡]Ø˜vŸ}™}°Ñ6Ø# V×%=Ñ%=Ó%?Ø ðð	ó 	ð 	øô ×'Ñ'ô 	1ÜØ˜6 3¨
°HÐ=ØÐ<ðô ×/Ñ/ô1ò 1ð	1ús   ‚A+A. Á.8B)Â(B)r]   N)rÝ   )Úwatch)r_   r`   ra   rb   Ú__doc__r[   rÄ  rÅ  rC   rê  rë  rc   rd   re   s   @rZ   rÁ  rÁ  ´  s1   ø‡ € ñô[ò%UòN_ô6ò
÷:1ð 1rg   rÁ  )_Údjango.confr   Údjango.shortcutsr   Úrest_framework.viewsr   Úrest_framework.responser   Úrest_frameworkr   Úmodelsr	   r
   r   r   r   r   r   r   Údjango.core.exceptionsr   Úrest_framework.exceptionsr   Údjango.contrib.authr   r   Úrest_framework_simplejwt.tokensr   Údjango.contrib.auth.hashersr   Údjango.contrib.auth.modelsr   Údjango.utilsr   Údjtzr   r   r   rò  Údjango.httpr   Úbase64Úrest_framework.parsersr   r   Údjango.db.modelsr   Úrest_framework.genericsr    r!   Úserializersr"   Úrest_framework.permissionsr#   r$   rõ  Údjango.core.mailr%   Úschool.settingsr&   ÚpdfkitrE   rÛ   r'   Údjango.utils.cryptor(   r)   r+   r}   r   r±   rÃ   rÆ   rÈ   rÊ   rá   rí   rò   rù   rþ   r  r&  r5  rF  rM  ry  r  r…  r©  rØ  r¿  ró  rÚ  rÜ  rÁ  r]   rg   rZ   Ú<module>r     sç  ðÝ  Ý #Ý (Ý ,Ý !ß R× RÓ RÝ 5Ý .ß 3Ý 8Ý 5Ý +Ý )Ý !ß .Ñ .Û Ý !Ý $Û ß >Ý ß @Ý 'Ý 6ß #Û Ý )Ý $Û Ý 5ã 	Ý  Û å &Ý 1Ý  õ
 ,ß 3Ý ,Ý !Ý (Ý 5Ý 8Û 	ôH4�7ô H4òX ôLk`�7ô k`ô^˜7ô ò"+òB+ò@+ôD&�Wô &ôP3=�wô 3=ôn.=˜7ô .=ô`&=˜Wô &=ôN�gô õ@ Ý !ôD�wô DôRx˜7ô xôv9�gô 9ôxE�gô Eôd$/˜'ô $/ôR-˜Gô -ô^H˜Gô Hô&%�ô %ôPU�'ô Uôr|�Gô |ó@ Û Ý (Ý ,Ý !Ý .Ý !ç &ð '€Ø+€Ø(€	ôz1�Gö z1rg   