+
    iO                    ~   R t ^ RIHt ^ RIHt ^ RIHt ]'       d1   ^RIHt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HtHtHtHt RtR	tR
 R ltR R ltR R ltR R lt R R lt!RUR R llt"RUR R llt#R R lt$RVR R llt%R R lt&R R  lt'R! R" lt(R# R$ lt)R% R& lt*RVR' R( llt+RWR) R* llt,RXR+ R, llt-R- R. lt.RYR/ R0 llt/R1 R2 lt0R3 R4 lt1R5 R6 lt2R7 R8 lt3R9 R: lt4R; R< lt5R= R> lt6R? R@ lt7RA RB lt8RC RD lt9RE RF lt:RG RH lt;RI RJ lt<RK RL lt=RM RN lt>RO RP lt?RQ RR lt@RS RT ltAR# )ZzJupyter/IPython display representations.

This module contains all HTML rendering logic, keeping domain classes clean.
Functions are only called when objects are displayed in Jupyter notebooks.
)annotationsescape)TYPE_CHECKING)MarketSeries)Order)Event)BalanceModelPositionModel	FillModelOrderbookResponseSettlementModel
TradeModelExchangeStatusAnnouncement	APILimitsAPIKeyQueuePositionModelOrderGroupModela;  <style>
.kl{font-family:system-ui,-apple-system,sans-serif;font-size:13px;line-height:1.4}
.kl table{border-collapse:collapse;margin:4px 0}
.kl td,.kl th{padding:4px 10px 4px 0;text-align:left;vertical-align:top}
.kl th{color:#6b7280;font-weight:500;white-space:nowrap}
.kl .m{font-family:ui-monospace,monospace;font-size:12px}
.kl .g{color:#16a34a}
.kl .r{color:#dc2626}
.kl .y{color:#ca8a04}
.kl .d{color:#6b7280}
.kl .pill{display:inline-block;padding:1px 6px;border-radius:4px;font-size:11px;font-weight:500}
.kl .pill-green{background:#dcfce7;color:#166534}
.kl .pill-red{background:#fee2e2;color:#991b1b}
.kl .pill-yellow{background:#fef9c3;color:#854d0e}
.kl .pill-gray{background:#f3f4f6;color:#374151}
.kl .bar-wrap{display:block;margin-top:2px;line-height:0}
.kl .bar-bg{background:#e5e7eb;border-radius:2px;height:3px;width:80px;display:inline-block}
.kl .bar-fill{display:block;height:100%;border-radius:2px;min-width:2px}
.kl .bar-green{background:#86efac}
.kl .bar-yellow{background:#fde047}
.kl .spread-wrap{display:block;margin-top:2px;line-height:0}
.kl .spread-track{background:#f3f4f6;border-radius:2px;height:3px;width:100px;position:relative;display:inline-block}
.kl .spread-bid{position:absolute;height:100%;background:#86efac;border-radius:2px 0 0 2px;left:0}
.kl .spread-ask{position:absolute;height:100%;background:#fca5a5;border-radius:0 2px 2px 0;right:0}
.kl .depth-bar{background:#e5e7eb;border-radius:1px;height:4px;width:40px;display:inline-block;vertical-align:middle;margin-left:6px}
.kl .depth-yes{background:#86efac}
.kl .depth-no{background:#fca5a5}
</style>zhttps://kalshi.comc               $    V ^8  d   QhRRRRRR/# )   displaystrurlreturn )formats   "U/home/wkmabra/.openclaw/workspace/venv/lib/python3.14/site-packages/pykalshi/_repr.py__annotate__r   C   s&     Z Z3 ZS ZS Z    c                &    RV R\        V 4       R2# )zRender a clickable link.z	<a href="zh" target="_blank" class="m" style="color:inherit;text-decoration:none;border-bottom:1px dashed #9ca3af">z</a>r   )r   r   s   &&r   _linkr"   C   s>    se  D  EK  LS  ET  DU  UY  Z  Zr    c                    V ^8  d   QhRRRR/# )r   textr   r   r   )r   s   "r   r   r   H   s     4 4 4 4r    c                     R\        V 4       R2# )z,Render plain monospace text (non-clickable).<span class="m"></span>r   )r$   s   &r   _plainr(   H   s    fTl^733r    c               $    V ^8  d   QhRRRRRR/# )r   market_tickerr   event_tickerr   r   )r   s   "r   r   r   M   s&     O Os O# O# Or    c                    \          RV RV  2# )z)Build URL for a specific market contract.z/events/z
?contract=KALSHI_BASE_URL)r*   r+   s   &&r   _market_urlr/   M   s    h|nJ}oNNr    c                    V ^8  d   QhRRRR/# r   series_tickerr   r   r   )r   s   "r   r   r   R   s     8 8s 8s 8r    c                    \          RV  2# )zBuild URL for a series page.z	/markets/r-   r2   s   &r   _series_urlr5   R   s    i77r    c                    V ^8  d   QhRRRR/# )r   r*   r   r   
str | Noner   )r   s   "r   r   r   W   s     M M M
 Mr    c                F    RV 9   d   V P                  R^4      ^ ,          # R# )zDerive event ticker from market ticker by removing the last segment.

e.g., KXNCAAMBTOTAL-26FEB04OKLAUK-136 -> KXNCAAMBTOTAL-26FEB04OKLAUK
-N)rsplit)r*   s   &r   _derive_event_tickerr;   W   s(    
 /2].B=Q'*LLr    Nc               $    V ^8  d   QhRRRRRR/# )r   tickerr   r+   r7   r   r   )r   s   "r   r   r   _   s!       J # r    c                |    T;'       g    \        V 4      pV'       d   \        V \        W4      4      # \        V 4      # )zCRender market ticker as link. Derives event_ticker if not provided.)r;   r"   r/   r(   )r=   r+   events   && r   _ticker_linkr@   _   s4    8808EV[788&>r    c               $    V ^8  d   QhRRRRRR/# )r   r+   r   r2   r7   r   r   )r   s   "r   r   r   g   s!        c  *    r    c                R    V'       d   \        V \        V4      4      # \        V 4      # )z4Render event ticker as link (points to series page).)r"   r5   r(   )r+   r2   s   &&r   _event_linkrC   g   s"    \;}#=>>,r    c                    V ^8  d   QhRRRR/# r1   r   )r   s   "r   r   r   n   s     < < < <r    c                ,    \        V \        V 4      4      # )zRender series ticker as link.)r"   r5   r4   s   &r   _series_linkrF   n   s    M :;;r    c               $    V ^8  d   QhRRRRRR/# )r   v
int | None
as_dollarsboolr   r   r   )r   s   "r   r   r   s   s!      j d s r    c                B    V f   R# V'       d   RV ^d,          R 2# V  R2# )z?Format cents as currency. Use as_dollars=True for $X.XX format.   —$,.2f   ¢r   )rH   rJ   s   &&r   _centsrQ   s   s+    y1s74.!!S8Or    c                    V ^8  d   QhRRRR/# r   rH   rI   r   r   r   )r   s   "r   r   r   |   s      J 3 r    c                    V f   R# V R # )zFormat number with commas.rM   ,r   )rH   s   &r   _numrV   |   s    yUOr    c                    V ^8  d   QhRRRR/# )r   statusr7   r   r   r   )r   s   "r   r   r      s     @ @ @ @r    c                    V f   R# V P                  4       p\        V 4      pVR9   d   RV R2# VR9   d   RV R2# VR	9   d   RV R2# RV R2# )
z Render status as a colored pill.rM   z<span class="pill pill-green">r'   z<span class="pill pill-red">z<span class="pill pill-yellow"><span class="pill pill-gray">)activeopenresting)closedcanceled	cancelled)settledfilledexecuted)lowerr   )rX   ssafe_statuss   &  r   _status_pillrg      su    ~A.K))/}GDD//-k]'BB--0WEE*;-w??r    c               $    V ^8  d   QhRRRRRR/# )r   actionr7   sider   r   r   )r   s   "r   r   r      s!     / /z / / /r    c           	     D   . pV '       dI   V P                  4       R8X  d   RMRpVP                  RV R\        V P                  4       4       R24       V'       d-   VP                  R\        VP                  4       4       R24       V'       d   RP	                  V4      # R	# )
z7Render action/side as colored pills (always uppercase).buy
pill-greenpill-red<span class="pill ">r'   rZ    rM   )rd   appendr   upperjoin)ri   rj   partsclss   &&  r   
_side_pillrw      s    E$lln5l:)#b1G0HPQ4VDJJL5I4J'RS#388E?..r    c                    V ^8  d   QhRRRR/# )r   resultr7   r   r   r   )r   s   "r   r   r      s     2 2 2 2r    c                z    V f   R# \        V P                  4       4      pVR8X  d   RM
VR8X  d   RMRpRV RV R	2# )
z'Render market result as uppercase pill.rM   YESrm   NOrn   	pill-grayro   rp   r'   )r   rs   )ry   rrv   s   &  r   _result_pillr      sD    ~v||~Au*,T	*{CuBqc11r    c                    V ^8  d   QhRRRR/# rS   r   )r   s   "r   r   r      s     ? ?J ?3 ?r    c                b    V f   R# V ^ 8  d   RMRpV ^ 8  d   RMRpRV RV RV ^d,          R	 R
2# )zFormat P&L with color.rM   gr~   + <span class="rp   rN   rO   r'   r   )rH   rv   signs   &  r   _pnlr      sE    ya#SCa%3RD3%r$qSg>>r    c               (    V ^8  d   QhRRRRRRRR/# )r   labelr   valuemonorK   r   r   )r   s   "r   r   r      s(     = = =C =t = =r    c                2    V'       d   RMRpRV  RV RV R2# )zGenerate a table row.z
 class="m"r   z<tr><th>z</th><td>
</td></tr>r   )r   r   r   rv   s   &&& r   _rowr      s&    ,BCeWHSE5'<<r    c               $    V ^8  d   QhRRRRRR/# )r   idr   max_lenintr   r   )r   s   "r   r   r      s!     / / /s /C /r    c                h    \        V 4      p\        V 4      V8  d   R\        V RV 4       R2# RV R2# )z/Render an ID in monospace, truncated if needed.r&   Nz
...</span>r'   )r   len)r   r   safe_ids   && r   _mono_idr      sA    RjG
2w!&HW"6!7zBBgYg..r    c               (    V ^8  d   QhRRRRRRRR/# )r   rb   r   totalcolorr   r   r   )r   s   "r   r   r      s.     L L# Lc L# LC Lr    c                n    V^ 8X  d   R# \        ^\        ^dW,          ^d,          4      4      pRV RVR R2# )z&Render a progress bar on its own line.r   zF<span class="bar-wrap"><span class="bar-bg"><span class="bar-fill bar-" style="width:.0f%"></span></span></span>)maxmin)rb   r   r   pcts   &&& r   _progress_barr      sN    z
aS&.3./
0CSTYSZZijmnqir  sK  L  Lr    c               $    V ^8  d   QhRRRRRR/# )r   bidrI   askr   r   r   )r   s   "r   r   r      s&     D DZ Dj DS Dr    c                >    V e   Vf   R# T p^dV,
          pRV RV R2# )zGRender a visual bid/ask spread indicator (0-100 scale) on its own line.r   z[<span class="spread-wrap"><span class="spread-track"><span class="spread-bid" style="width:z0%"></span><span class="spread-ask" style="width:r   r   )r   r   bid_pctask_pcts   &&  r   _spread_vizr      sM    
{ckGCiGhiphq  rb  cj  bk  kC  D  Dr    c               (    V ^8  d   QhRRRRRRRR/# )r   quantityr   max_qtyrv   r   r   r   )r   s   "r   r   r      s.     L L Ls L Ls Lr    c                    V^ 8X  d   R# \        ^dW,          ^d,          4      p\        ^\        VR,          4      4      pRV RV R2# )zRender a depth bar inline.r   g?z<span class="depth-bar r   zpx"></span>)r   r   r   )r   r   rv   r   widths   &&&  r   
_depth_barr      sI    !|
c8%+
,C3sSy>"E$SE{KKr    c                    V ^8  d   QhRRRR/# )r   tsr7   r   r   r   )r   s   "r   r   r      s      Z C r    c                    V '       g   R#  ^ RI H p RV 9   d3   VP                  V P                  RR4      4      pVP                  R4      # V #   \         d    T u # i ; i)z'Format ISO timestamp to human-readable.rM   )datetimeTZz+00:00z%b %d, %H:%M)r   fromisoformatreplacestrftime	Exception)r   r   dts   &  r   _format_timer      sZ    %"9''

3(ABB;;~..	 	s   >A A AAc                    V ^8  d   QhRRRR/# )r   contentr   r   r   )r   s   "r   r   r      s     7 73 73 7r    c                    \          RV  R2# )z'Wrap content with styles and container.z<div class="kl">z</div>)_STYLES)r   s   &r   _wrapr      s    Y&wiv66r    c                    V ^8  d   QhRRRR/# )r   mr   r   r   r   )r   s   "r   r   r      s     4 46 4c 4r    c                :   V P                   '       d   V P                   P                  MRpRpV P                  e/   V P                  e!   \	        V P                  V P                  4      p\        R\        V P                  V P                  4      4      \        R\        V4      4      \        R\        V P                  4       R\        V P                  4       V 24      \        R\        V P                  4      4      \        R\        V P                  4      4      \        R	\        V P                  4      4      .pV P                  '       d4   VP!                  ^\        R
R\#        V P                  4       R24      4       V P$                  '       d/   VP'                  \        R\)        V P$                  4      4      4       V P*                  '       d/   VP'                  \        R\-        V P*                  4      4      4       \/        RRP1                  V4       R24      # )zRender Market as HTML table.Nr   TickerStatusr{   z / LastVolumezOpen IntTitle<span class="d">r'   ResultCloses<table></table>)rX   r   yes_bidyes_askr   r   r@   r=   r+   rg   rQ   
last_pricerV   volumeopen_interesttitleinsertr   ry   rr   r   
close_timer   r   rt   )r   rX   
spread_vizrowss   &   r   market_htmlr      st    xxxQXX^^TFJyy!6 AII6
 	X|AHHann=>X|F+,Uvaii()VAII->,?
|LMVVALL)*XtAHH~&Zaoo./D 	wwwAtG'7qww7H%PQRxxxD<#9:;|||D<#=>?72774=/233r    c                    V ^8  d   QhRRRR/# )r   re   r   r   r   r   )r   s   "r   r   r   
  s     4 46 4c 4r    c                   V P                   '       d   R\        V P                   4       R2MRp\        R\        V P                  4      4      \        RV P
                  '       d   \        V P
                  4      MR4      \        RV4      .p\        V RR4      pV'       d;   R	P                  R
 VR,           4       4      pVP                  \        RV4      4       \        RRP                  V4       R24      # )zRender Series as HTML table.rZ   r'   rM   r   r   CategorytagsNrq   c              3  @   "   T F  pR \        V4       R2x  K  	  R# 5irZ   r'   Nr   ).0ts   & r   	<genexpr>series_html.<locals>.<genexpr>  s!     bYaTU<VAYKwOYa   :N   NTagsr   r   r   )
categoryr   r   rF   r=   r   getattrrt   rr   r   )re   r   r   r   	tag_pillss   &    r   series_htmlr   
  s    NOjjj.vajj/A.B'J^cH 	X|AHH-.WfQWWoe<Z"D 1fd#DHHbY]^`Yabb	D+,72774=/233r    c                    V ^8  d   QhRRRR/# )r   or   r   r   r   )r   s   "r   r   r     s     4 4% 4C 4r    c                   V P                   '       d   V P                   P                  MRpV P                  '       d   V P                  P                  MRpV P                  '       d   V P                  P                  MRpV P                  ;'       g    ^ pV P
                  ;'       g    ^ pV RV 2pV^ 8  d<   WE,          ^d,          pVRVR R2,          pV^d8X  d   RMRpV\        WEV4      ,          pV P                  e   V P                  MV P                  p	\        R\        V P                  4      4      \        R	\        V P                  4      4      \        R
\        W#4      4      \        R\        V	4      4      \        RV4      \        R\!        V4      4      .p
V P"                  '       d/   V
P%                  \        R\'        V P"                  4      4      4       \)        RRP+                  V
4       R24      # )zRender Order as HTML table.N/z (r   z%)greenyellowOrder IDr   SidePriceFilledr   Createdr   r   r   )rX   r   ri   rj   
fill_countinitial_countr   	yes_priceno_pricer   r   order_idr@   r=   rw   rQ   rg   created_timerr   r   r   rt   )r   rX   ri   rj   rb   r   fill_strr   	bar_colorpricer   s   &          r   
order_htmlr     s    xxxQXX^^TF xxxQXX^^TF666166<<tD\\QFOO  qE5'"Hqyns"bS	$$"czGx	M&;;;;2AKK

E 	Z!**-.X|AHH-.VZ-.WfUm$Xx X|F+,D 	~~~DL$@AB72774=/233r    c                    V ^8  d   QhRRRR/# )r   er	   r   r   r   )r   s   "r   r   r   =  s     4 4% 4C 4r    c                   V P                   '       d   RMRpV P                  '       d   R\        V P                  4       R2MRp\        R\	        V P
                  V P                  4      4      \        R\        V P                  4      4      \        RV P                  '       d   \        V P                  4      MR4      \        R	V4      \        R
V4      .p\        RRP                  V4       R24      # )zRender Event as HTML table.u   <span class="g">✓</span>u   <span class="d">✗</span>rZ   r'   rM   r	   r   r   r   	Exclusiver   r   r   )mutually_exclusiver   r   r   rC   r+   r2   rF   r   r   rt   )r   	exclusiver   r   s   &   r   
event_htmlr  =  s     120D0D0D,JfINOjjj.vajj/A.B'J^cH 	Wk!..!//BCX|AOO45WfQWWoe<Z"[)$D 72774=/233r    c                    V ^8  d   QhRRRR/# )r   br
   r   r   r   )r   s   "r   r   r   O  s     4 4L 4S 4r    c           	         \        R\        V P                  RR7      4      \        R\        V P                  RR7      4      .p\	        RRP                  V4       R24      # )z"Render BalanceModel as HTML table.BalanceTrJ   	Portfolior   r   r   )r   rQ   balanceportfolio_valuer   rt   )r  r   s   & r   balance_htmlr  O  sU     	YqyyT:;[&!2!2tDED 72774=/233r    c                    V ^8  d   QhRRRR/# )r   pr   r   r   r   )r   s   "r   r   r   X  s     4 4] 4s 4r    c           
        \        V P                  4       pV P                  ^ 8  d   RpMV P                  ^ 8  d   RpMRp\        R\        V P                  4      4      \        RV RV 24      \        R\        V P                  RR	7      4      \        R
\        V P                  4      4      .p\        RRP                  V4       R24      # )z#Render PositionModel as HTML table.z(<span class="pill pill-green">YES</span>z%<span class="pill pill-red">NO</span>rM   r   Positionrq   ExposureTr
  zRealized P&Lr   r   r   )abspositionr   r@   r=   rQ   market_exposurer   realized_pnlr   rt   )r  pos_str	side_pillr   s   &   r   position_htmlr  X  s    QZZ!GzzA~>		
a;		 	X|AHH-.ZG9Ai[12Z 1 1dCD^T!..12	D 72774=/233r    c                    V ^8  d   QhRRRR/# )r   fr   r   r   r   )r   s   "r   r   r   k  s     4 4 4s 4r    c           
     h   V P                   '       d   V P                   P                  MRpV P                  '       d   V P                  P                  MRpV P                  RJ d   RpMV P                  RJ d   RpMRp\	        R\        V P                  4      4      \	        R\        V P                  4      4      \	        R	\        W4      4      \	        R
\        V P                  4      4      \	        R\        V P                  4      4      \	        RV4      .p\        RRP                  V4       R24      # )zRender FillModel as HTML table.NTz+<span class="pill pill-yellow">Taker</span>Fz)<span class="pill pill-gray">Maker</span>rM   Trade IDr   r   Countr   Roler   r   r   )ri   r   rj   is_takerr   r   trade_idr@   r=   rw   rV   countrQ   r   r   rt   )r  ri   rj   roler   s   &    r   	fill_htmlr%  k  s     xxxQXX^^TF666166<<tD 	zzT<	
u	: 	Z!**-.X|AHH-.VZ-.Wd177m$WfQ[[)*VTD 72774=/233r    c                    V ^8  d   QhRRRR/# )r   obr   r   r   r   )r   s   "r   r   r     s     1@ 1@( 1@S 1@r    c                (   V P                   pV P                  pV P                  pRpV P                  e/   V P                  e!   \        V P                  V P                  4      p\        R\        V P                  4      4      \        R\        V P                  4      4      \        RVe   V RV 2MR4      \        RVe   VR	 R2MR4      \        R
Ve   VR MR4      .pV P                  ;'       g    . pV P                  ;'       g    . pRpV'       g
   V'       EdW   \        R V 4       ^R7      p	\        R V 4       ^R7      p
\        W4      p. p\        \        \        V4      \        V4      4      4       F  pV\        V4      8  d	   Wm,          MRpV\        V4      8  d	   W},          MRpV'       d   VP                   RVP                   2MRpV'       d   \        VP                  VR4      MRpV'       d   VP                   RVP                   2MRpV'       d   \        VP                  VR4      MRpVP!                  RV RV RV RV R2	4       K  	  RRP#                  V4       R2p\%        RRP#                  V4       RV 24      # )z!Render OrderbookResponse as HTML.r   NzBest BidzBest AskSpreadrP   rM   Midz.1f	Imbalancez+.2fc              3  8   "   T F  qP                   x  K  	  R # 5iNr   r   ls   & r   r   !orderbook_html.<locals>.<genexpr>  s     6:azz:   )defaultc              3  8   "   T F  qP                   x  K  	  R # 5ir-  r.  r/  s   & r   r   r1    s     4)Qjj)r2  u   ¢ × 	depth-yeszdepth-noz><tr><td class="m" style="text-align:right;white-space:nowrap">z	</td><td>zQ</td><td class="m" style="text-align:right;white-space:nowrap;padding-left:16px">r   zz<table style="margin-top:8px"><tr><th colspan="2">YES Bids</th><th colspan="2" style="padding-left:16px">NO Bids</th></tr>r   r   )spreadmid	imbalancebest_yes_bidbest_yes_askr   r   rQ   
yes_levels	no_levelsr   ranger   r   r   r   rr   rt   r   )r'  r6  r7  r8  r   r   r;  r<  
depth_htmlmax_yesmax_nor   
depth_rowsiyesnoyes_textyes_barno_textno_bars   &                   r   orderbook_htmlrI    sX   YYF
&&CIJ	"r'B "//B
 	Z01Z01XF4F&J<0ERUcos3irN5A[1FYt,ERD $$"J""IJYY6:6B4)4a@g&
s3z?C	N;<A#$s:#6*-DC!"S^!3B=@#))F3<<.9bHHKjwDQSG:<
&6"GEGZWjARFMMUJ Wi  __f^g hh 	 = kwwz"#8- 	 72774=/*>??r    c                    V ^8  d   QhRRRR/# )r   re   r   r   r   r   )r   s   "r   r   r     s     4 4 43 4r    c                   . pV P                   ^ 8  d   VP                  V P                    R24       V P                  ^ 8  d   VP                  V P                   R24       V'       d   RP                  V4      MRp\	        R\        V P                  V P                  4      4      \	        R\        V P                  4      4      \	        RV4      \	        R\        V P                  R	R
7      4      \	        R\        V P                  4      4      .pV P                  '       d/   VP                  \	        R\        V P                  4      4      4       \!        RRP                  V4       R24      # )z%Render SettlementModel as HTML table.z) <span class="pill pill-green">YES</span>z& <span class="pill pill-red">NO</span>rq   rM   r   r   r  RevenueTr
  zP&LSettledr   r   r   )	yes_countrr   no_countrt   r   r@   r=   r+   r   market_resultrQ   revenuer   pnlsettled_timer   r   )re   	pos_partsposition_strr   s   &   r   settlement_htmlrV    s    I{{QAKK=(QRSzzA~AJJ<'MNO*3388I&L 	X|AHHann=>X|AOO45Z&YqyyT:;UDK D 	~~~DL$@AB72774=/233r    c                    V ^8  d   QhRRRR/# )r   r   r   r   r   r   )r   s   "r   r   r     s     4 4* 4 4r    c                   V P                   '       d   V P                   P                  4       MRpVR8X  d   RM
VR8X  d   RMRpV'       d
   RV RV R	2MR
p\        R\        V P                  4      4      \        R\        V P                  4      4      \        RV4      \        R\        V P                  4      4      \        RR\        V P                  4       R\        V P                  4       24      .pV P                  '       d/   VP                  \        R\        V P                  4      4      4       \        RRP!                  V4       R24      # )z Render TradeModel as HTML table.Nr{   rm   r|   rn   r}   ro   rp   r'   rM   r  r   Takerr  r   zYES z / NO Timer   r   r   )
taker_siders   r   r   r"  r@   r=   rV   r#  rQ   r   r   r   rr   r   r   rt   )r   taker	taker_cls	taker_strr   s   &    r   
trade_htmlr_    s   $%LLLALL dE %%4-JU`IDI$YKr%@uI 	Z!**-.X|AHH-.Wi Wd177m$WVAKK01qzz8J7KLMD 	~~~Dann!=>?72774=/233r    c                    V ^8  d   QhRRRR/# )r   r   r   r   r   r   )r   s   "r   r   r     s     	4 	4N 	4s 	4r    c                    \        V P                  '       d   RMR4      p\        V P                  '       d   RMR4      p\        RV4      \        RV4      .p\	        RRP                  V4       R24      # )zRender ExchangeStatus as HTML.r[   r^   ExchangeTradingr   r   r   )rg   exchange_activetrading_activer   r   rt   )r   exchange_pilltrading_pillr   s   &   r   exchange_status_htmlrh    sk     Q->->->HMMA,<,<,<(KL 	Z'Y%D 72774=/233r    c                    V ^8  d   QhRRRR/# )r   ar   r   r   r   )r   s   "r   r   r     s     4 4 4# 4r    c           	        \        RR\        V P                  4       R24      .pV P                  '       di   \	        V P                  4      ^8  d   V P                  R,          R,           MV P                  pVP                  \        RR\        V4       R24      4       V P                  '       d3   VP                  \        R	R
\        V P                  4       R24      4       V P                  '       d/   VP                  \        R\        V P                  4      4      4       \        RRP                  V4       R24      # )zRender Announcement as HTML.r   z<strong>z	</strong>:N   Nz...Bodyr   r'   TyperZ   rZ  r   r   r   )r   r   r   bodyr   rr   typedelivery_timer   r   rt   )rj  r   ro  s   &  r   announcement_htmlrr    s     	W 1;<D 	vvv'*166{S'8qvvd|e#affD#3F4L>!IJKvvvD#@@PPW!XYZDaoo!>?@72774=/233r    c                    V ^8  d   QhRRRR/# )r   rj  r   r   r   r   )r   s   "r   r   r     s     b by bS br    c           	        . pV P                   '       d3   VP                  \        RR\        V P                   4       R24      4       V P                  e/   VP                  \        R\        V P                  4      4      4       V P                  e/   VP                  \        R\        V P                  4      4      4       V'       d   \        RRP                  V4       R24      # \        R	4      # )
zRender APILimits as HTML table.TierrZ   r'   z
Read LimitzWrite Limitr   r   r   z<em>No limits info</em>)	
usage_tierrr   r   r   
read_limitrV   write_limitr   rt   )rj  r   s   & r   api_limits_htmlry    s    D|||D#@AU@VV]!^_`||DtALL'9:;}} DQ]](;<=7;572774=/23aG`Aaar    c                    V ^8  d   QhRRRR/# )r   kr   r   r   r   )r   s   "r   r   r     s     4 4F 4s 4r    c                   \        R\        V P                  4      4      .pV P                  '       d/   VP	                  \        R\        V P                  4      4      4       V P                  '       d>   RP                  R V P                   4       4      pVP	                  \        RV4      4       V P                  '       d/   VP	                  \        R\        V P                  4      4      4       V P                  '       d/   VP	                  \        R\        V P                  4      4      4       \        RR	P                  V4       R
24      # )zRender APIKey as HTML table.IDNamerq   c              3  @   "   T F  pR \        V4       R2x  K  	  R# 5ir   r   )r   re   s   & r   r   api_key_html.<locals>.<genexpr>  s!     d[cVW!>vaykQ[cr   Scopesr   z	Last Usedr   r   r   )r   r   r   namerr   r   scopesrt   r   r   	last_usedr   )r{  r   scope_pillss   &  r   api_key_htmlr    s     	T8ADD>"D 	vvvD01xxxhhd[\[c[cddD;/0~~~DL$@AB{{{Dl1;;&?@A72774=/233r    c                    V ^8  d   QhRRRR/# )r   qr   r   r   r   )r   s   "r   r   r   +  s     	4 	4- 	4# 	4r    c           	        RV P                   ^,            2pV P                   ^8  d   RMV P                   ^
8  d   RMRp\        R\        V P                  4      4      \        RRV RV R	24      .p\	        R
RP                  V4       R24      # )z(Render QueuePositionModel as HTML table.#r   ydr   Queuer   rp   r'   r   r   r   )queue_positionr   r   r   r   rt   )r  pos_display	pos_classr   s   &   r   queue_position_htmlr  +  s    a&&*+,K''!+8H8H28MSVI 	Z!**-.Wi[;-wGHD 72774=/233r    c                    V ^8  d   QhRRRR/# )r   r   r   r   r   r   )r   s   "r   r   r   7  s     4 4 4C 4r    c                |   \        R\        V P                  4      4      .pV P                  e/   VP	                  \        R\        V P                  4      4      4       V P                  '       d2   VP	                  \        R\        V P                  4       R24      4       \        RRP                  V4       R24      # )z%Render OrderGroupModel as HTML table.zGroup IDzContracts LimitOrdersz linkedr   r   r   )
r   r   r   contracts_limitrr   rV   ordersr   r   rt   )r   r   s   & r   order_group_htmlr  7  s     	Z!$$(D 	$D*D1B1B,CDExxxDc!((m_G#<=>72774=/233r    r-  )F)   )r   )r5  )B__doc__
__future__r   htmlr   typingr   marketsr   r   r  r   eventsr	   modelsr
   r   r   r   r   r   r   r   r   r   r   r   r   r.   r"   r(   r/   r5   r;   r@   rC   rF   rQ   rV   rg   rw   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r%  rI  rV  r_  rh  rr  ry  r  r  r  r   r    r   <module>r     s   #   '   @ 'Z
4
O
8
M <
@/2?=/LDL7484&4@4$44&401@l404(	44(b 4,	44r    