
    khX              #          d Z ddlZd\  ZZZZg dZg dg dg dg dgg d	g d
g dgg dg dg dgg dg dg dg dg dg dg dg dg dg dg
g dg dg dg dg dg dg dg d g d!g d"g d#gg d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d<g d=g d>g d?g d@gg dAg dBg dCg dDg dEg dFg dGg dHgg dIg dJg dKg dLg dMg dNg dOgg dPg dQg dRg dSg dTg dUg dVg dWg dXg dYg dZg d[gg d\g d]g d^g d_gg d`g dag dbg dcgg ddg deg dfgg dgg dhg digg djgg dkggZeD ]!  ZeD ]  Z	 ej                  e	d         e	d<    # i dlg dmdng dodpg dqdrg dsdtg dudvg dwdxg dydzg d{d|g d}d~g ddg ddg ddddgdg ddg ddg ddg dg dg dg ddZeddfdZg ddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgZeD ]  Z	 ej                  e	d         e	d<    g dآZg doZg d٢Zedp   Zi ddۓddݓddߓddddddddddddddddddddddddddddi ddddddd ddddddddd	d
dddddddddddddddddddddddd d!Zedfd"Zy(#  zThe pluralize and singular methods from the pattern library.

Licenced under the BSD.
See here https://github.com/clips/pattern/blob/master/LICENSE.txt for
complete license information.
    N)VBNNJJRB)(aboutaboveacrossafteramongaroundatathwartbeforebehindbelowbeneathbesidebesidesbetweenbetwixtbeyondbutbyduringexceptforfrominintonearofoffonontooutoversincetilltounderuntiluntouponwith)z^a$|^an$someNF)z^this$theseNF)z^that$thoseNF)z^any$allNF)z^my$ourNF)z^your$|^thy$yourNF)z^her$|^his$|^its$|^their$theirNF)z^mine$oursNF)z^yours$|^thine$yoursNF)z^hers$|^his$|^its$|^theirs$theirsNF)z^I$weNF)z^me$usNF)z^myself$	ourselvesNF)z^you$youNF)z^thou$|^thee$yeNF)z^yourself$|^thyself$yourselfNF)z^she$|^he$|^it$|^they$theyNF)z^her$|^him$|^it$|^them$themNF)z'^herself$|^himself$|^itself$|^themself$
themselvesNF)z	^oneself$	oneselvesNF)$ uninflectedF)rC   rD   uncountableF)zfish$fishNF)z([- ])bass$z\1bassNF)zois$oisNF)zsheep$sheepNF)zdeer$deerNF)zpox$poxNF)z([A-Z].*)ese$z\1eseNF)zitis$itisNF)z8(fruct|gluc|galact|lact|ket|malt|rib|sacchar|cellul)ose$\1oseNF)atlas$atlantesNT)rN   atlasesNF)zbeef$beevesNT)zbrother$brethrenNT)zchild$childrenNF)corpus$corporaNT)rT   corpusesNF)z^cow$kineNT)z
ephemeris$ephemeridesNF)z	ganglion$gangliaNT)zgenie$geniiNT)zgenus$generaNF)z	graffito$graffitiNF)zloaf$loavesNF)zmoney$moniesNT)z	mongoose$	mongoosesNF)zmythos$mythoiNF)zoctopus$	octopodesNT)opus$operaNT)rb   opusesNF)z^ox$oxenNF)penis$penesNT)rf   penisesNF)z
soliloquy$soliloquiesNF)ztestis$testesNF)ztrilby$trilbysNF)zturf$turvesNT)znumen$numenaNF)zocciput$occipitaNT)zman$menNF)zperson$peopleNF)z([lm])ouse$z\1iceNF)ztooth$teethNF)zgoose$geeseNF)zfoot$feetNF)zzoon$zoaNF)z
([csx])is$z\1esNF)ex$icesex-icesF)ru   rv   ex-ices-classicalT)um$aum-aF)ry   rz   um-a-classicalT)zon$rz   on-aF)a$aea-aeF)r~   r   a-ae-classicalT)ztrix$tricesNT)zeau$eauxNT)zieu$ieuNT)z
([iay])nx$z\1ngesNT)zen$inaen-ina-classicalT)r~   ataa-ata-classicalT)zis$idesis-ides-classicalT)us$ius-i-classicalT)r   r:   us-us-classicalT)o$r   o-i-classicalT)rC   r   -i-classicalT)rC   im-im-classicalT)z([cs])h$z\1hesNF)zss$ssesNF)zx$xesNF)zs$ses
s-singularF)z
([aeo]l)f$\1vesNF)z
([^d]ea)f$r   NF)zarf$arvesNF)z([nlw]i)fe$r   NF)z([aeiou])y$\1ysNF)z([A-Z].*)y$r   NF)zy$iesNF)r   oso-osF)z([aeiou])o$z\1osNF)r   oesNF)zl$lsgeneral-generalsF)rC   sNFrE   )0aircraftantelopebisonbreambreechesbritchescarpcattlechassisclipperscodcontretempscorpsdebrisdiabetesdjinnelandelkfloundergallowsr\   headquartersherpes
high-jinkshomeworkinnings
jackanapesmackerelmeaslesmewsmoosemumps	offspringnewspincerspliersproceedingsrabiessalmonscissorsseriesshearsspeciesswinetrouttunawhiting
wildebeestrF   )advicebreadbuttercannabischeeseelectricity	equipmentfruit	furnituregarbagegravel	happinessinformationketchup	knowledgeloveluggagemathematics
mayonnaisemeatmustardr   progressresearchricesandsoftwareunderstandingwaterr   )	acropolisaegisaliasasbestosbathosbiasbuscaddiscanvaschaos	christmascosmosdais	digitalis	epidermisethosgasglottisibislensmantismarquis
metropolispathospelvispolis
rhinoceros	sassafrastrellisrw   )codexmurexsilexrx   )apexcortexindexlatexpontifexsimplexvertexvortexr{   )	agendum	bacteriumcandelabrumdatumdesideratumerratumextremumovumstratumr|   )aquarium
compendium
consortiumcranium
curriculumdictumemporiumenconium	gymnasium
honorariuminterregnumlustrummaximummedium
memorandum	milleniumminimummomentumoptimumphylumquantumrostrumspectrumspeculumstadium	trapezium	ultimatumvacuumvelumr}   )	aphelion	asyndeton	criterion
hyperbatonnoumenonorganon
perihelion
phenomenonprolegomenonr   )algaalumnavertebrar   )abscissaamoebaantennaauroraformulahydra	hyperbolalacunamedusanebulanovaparabolar   )foramenlumenstamenr   )anathemabema	carcinomacharismadiplomadogmadramaedemaenemaenigmagummalemmalymphomamagmamelismamiasmaoedemasarcomaschemasomastigmastomatraumar   clitorisirisr   )focusfungusgeniusincubusnimbus	nucleolusradiusstylussuccubustorus	umbilicusuterusr   )
	apparatuscantuscoitushiatusimpetusnexusplexus
prospectussinusstatusr   )altobassocanto	contralto	crescendosolosopranotempor   )afreetafritefreet)cherubgoyseraph)albinoarchipelago	armadillocommandodittodynamoembryofiascogeneralissimoghettoguanoinfernojumbolingolumbagomagneto	manifestomedicooctavophotoproquartorhinostylo)
Adjutant	Brigadier
LieutenantMajorQuartermasteradjutant	brigadier
lieutenantmajorquartermaster)r   r   r   Tc           	         |i }| |v r||    S | j                  d      s| j                  d      r:| j                  d      }t        ||||      }|j                  d      r|dz   S |dz   S | j                  dd      j	                  d      }t        |      dkD  r|d   dk(  s|d   d	k(  r2|d
   t        d   vr$| j                  |d
   t        |d
   |||            S |d   t        v r$| j                  |d
   t        |d
   |||            S | j                  |d   t        |d   |||            S t        t        t        t                          }|j                  t              rd
dg}|D ]  }t        |   }	|	D ]v  }
|
\  }}}}|-|r|r)|r'|j                  |       |j                  ||       c c S |<| t        |   v sH|r|sM|sP|j                  |       b|j                  ||       c c S   y)a  Returns the plural of a given word.
    For example: child -> children.
    Handles nouns and adjectives, using classical inflection by default
    (e.g. where "matrix" pluralizes to "matrices" instead of "matrixes").
    The custom dictionary is for user-defined replacements.
    N''sr   -    generalGeneralr   r   )endswithrstrip	pluralizereplacesplitlenplural_categoriesplural_prepositionslistrangeplural_rules
startswith	ADJECTIVEsearchsub)wordposcustom	classicalownerownerswordsnr   rulesetrulesuffix
inflectioncategoryclassics                  O/opt/mcp/mcp-sentiment/venv/lib/python3.12/site-packages/textblob/en/inflect.pyr  r    s    ~v~d|
 }}ST]]40D!5#vy9??3C<D=  LLc"((-E
5zA~!H	!Qx9$a 12D EE<<a)E!Hc69*UVV1X,,<<a)E!Hc69*UVV<<b	9U2YVY+WXX 	U3|$%&A
~~i F  <q/ 	<D481FJ'7y}}T*6%zz*d;;#,X66G	}}T*6%zz*d;;	<<    z
(?i)(.)ae$z\1az(?i)(.)itis$z\1itisz(?i)(.)eaux$z\1eauz(?i)(quiz)zes$z\1z(?i)(matr)ices$z\1ixz(?i)(ap|vert|ind)ices$z\1exz(?i)^(ox)enz(?i)(alias|status)es$z(?i)([octop|vir])i$z\1usz(?i)(cris|ax|test)es$z\1isz(?i)(shoe)s$z
(?i)(o)es$z(?i)(bus)es$z(?i)([m|l])ice$z\1ousez(?i)(x|ch|ss|sh)es$z(?i)(m)ovies$z\1oviez(?i)(.)ombies$z\1ombiez(?i)(s)eries$z\1eriesz(?i)([^aeiouy]|qu)ies$z\1yz([aeo]l)ves$z\1fz([^d]ea)ves$zarves$arfzerves$ervez([nlw]i)ves$z\1fez(?i)([lr])ves$z([aeo])ves$z\1vez(?i)(sive)s$z(?i)(tive)s$z(?i)(hive)s$z(?i)([^f])ves$z(?i)(^analy)ses$z\1siszA(?i)((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$z\1\2sisz(?i)(.)opses$z\1opsisz(?i)(.)yses$z\1ysisz(?i)(h|d|r|o|n|b|cl|p)oses$rM   z<(?i)(fruct|gluc|galact|lact|ket|malt|rib|sacchar|cellul)ose$z(?i)(.)oses$z\1osisz(?i)([ti])a$z\1umz(?i)(n)ews$z\1ewsz(?i)s$rD   )2r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   georgiar\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   swissr   r   r   r   ),algerieauntiebeaniebirdiebogiebombiebookiecolliecookiecutiedoggieeyriefreebiegooniegroupiehankiehippiehoagiehottieindiejunkieladdielaramielingeriemeanienightieoldiez^piepixiequickiereverierookiesoftiesortiestooliesweetietechiez^tietoughievalkyrieveggieweenieyuppiezombiero   manrp   personrS   childsexessexaxesaxemovesmoverq   toothrr   goosers   footrt   zoonrO   atlasrP   rQ   beefrR   brotherrU   corpusrV   rW   cowrX   	ephemerisrY   ganglionrZ   genier[   genusr\   graffitohelveshelveleavesleafr]   loafr^   moneyr_   mongooser`   mythosra   octopusrc   opusrd   re   oxrg   penisrh   	soliloquytestistrilbyturfnumenocciputmy)ri   rj   rk   rl   rm   rn   r3   c           	      ,   |i }| t        |j                               v r||    S d| v rR| j                  d      }t        |      dkD  r3|d   t        v r(t        |d   ||      dz   dj                  |dd        z   S | j                  d      rt        | d d       dz   S | j                         }t        D ]  }|j                  |      s| c S  t        D ]  }|j                  |      s| c S  t        D ]  }|j                  |dz         s|c S  t        D ]  }|j                  |dz         s|c S  t        t        j                               D ]9  }|j                  |      st        j                  d	|z   d
z   t        |   |       c S  t         D ]  }|\  }}|j#                  |       }	|	s|	j%                         }
t'        dt        |
            D ])  }|
|   	|j)                  dt+        |dz         z   d      }+ |j                  ||       c S  | S )Nr  r  r   r  r  r  r   esz(?i)rC   \rD   )r  keysr  r  r  singularizejoinr  lowersingular_uninflectedsingular_uncountablesingular_ie
singular_ssingular_irregularrer  singular_rulesr  groupsr  r  str)r  r  r  r  r;  wr  r  r  matchrC  ks               r  r9  r9  D  s#   ~tFKKM""d| d{

3u:>eAh*==uQxf5;chhuQRy>QQQ}}S49%,,JJLE! ::eK " ::eK  >>!c'"H  >>!d(#H $))+, I>>!66&1*s*,>q,A4HHI  0!
d#\\^F1c&k* K!9$!+!3!3D3q1u:4Er!JJK ::j$//0 Kr  )__doc__rA  VERBNOUNr  ADVERBr  r  r  r  compiler  r  rB  r<  r=  r>  r?  r@  r9   r  r  <module>rN     s   
 6 dIv) h 	*((%	 	%-; 	(1> 	##.%,978N/ 	('&/$(&$0&	
( 	+*',+*,%2,').((/*-&(%'*2*+'),;B 	%*.((&%,	 	*2#,##, 	($#-0.2,.*(*  	,$"*	 	.-&.	 	.-" 	$-" --sZz  &G &"**T!W%Q&&
g 1gf  ggd  egb *cgd  	egx  
ygN  OgL  
Mgb *cgd  eg@ 6AgB  Cgt *f-ugv  wgR  Sgj  	kg~ 1g@ 14wg T	 TT <<f,6,Y, X, u	,
  , w', E, e$, G$, g&, U, 5, U, 	", E",  i !," z"#,$ j!%,& v&',* V+,, V-,. u/,0 v1,2 W3,4 v5,6 G7,8 U9,: U;,< U=,> w?,B "C,D I+VE,F j!G,H YI,J #H-K,L DXNM,N YO,R WS,T HU,V rNW,^  "Dbjja!DG"3 h >-\ |,
*	5*h* * U	*
 E* V* W* W* F* 
6* * w* f* 	* x*  !*" E#*$ ;%*& z'*( W)** g+*, 
-*. g/*0 f1*2 f3*4 g5*6 7*8 h9*: ;*< V=*> f?*@ DA*B WC*D wE*F S* Z t *r  