
| Line item | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 | FY2008 | FY2007 | FY2006 | FY2005 | FY2004 | FY2003 | FY2002 | FY2001 | FY2000 | FY1999 | FY1998 | FY1997 | FY1996 | FY1995 | FY1994 | FY1993 | FY1992 | FY1991 | FY1990 | FY1989 | FY1988 | FY1987 | FY1986 | FY1985 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Valuation | |||||||||||||||||||||||||||||||||||||||||
| Market cap | $149,808 | $146,832 | $122,407 | $125,929 | $159,914 | $112,415 | $78,316 | $64,788 | $70,562 | $49,237 | $48,281 | $45,653 | $49,021 | $43,918 | $34,101 | $34,745 | $32,149 | $26,619 | $39,143 | $51,745 | $49,418 | $44,431 | $42,571 | $26,822 | $35,574 | $20,609 | $17,019 | $21,166 | $9,311 | $5,553 | $4,993 | $5,689 | $4,464 | $1,986 | $1,109 | $944 | $981 | $860 | $669 | $1,057 | $1,013 |
| Enterprise value | $193,133 | $184,377 | $161,324 | $162,191 | $187,894 | $133,430 | $101,190 | $80,282 | $86,730 | $64,278 | $60,218 | $56,429 | $58,966 | $52,330 | $40,428 | $40,195 | $36,172 | $32,018 | $45,293 | $55,385 | $52,015 | $47,197 | $44,702 | $29,511 | $38,614 | $23,131 | $18,329 | $22,392 | $10,272 | $6,384 | $5,826 | $6,249 | $5,034 | $2,276 | $1,358 | $1,153 | $1,106 | $1,003 | $823 | $1,170 | $1,118 |
| P/E (TTM) at period end | 22.57× | 21.16× | 15.88× | 19.63× | 19.02× | 19.35× | 18.35× | 28.08× | 20.54× | 16.08× | 19.05× | 17.02× | 21.60× | 22.58× | 18.70× | 17.43× | 18.16× | 12.13× | 13.93× | 16.67× | 17.83× | 20.42× | 23.09× | 17.99× | 34.77× | 25.45× | 25.30× | 42.30× | 24.31× | 19.01× | 22.09× | 25.44× | 33.87× | 23.45× | 170.67× | 13.28× | 13.10× | 12.43× | 11.95× | 19.18× | 16.96× |
| P/S (TTM) at period end | 1.74× | 1.75× | 1.42× | 1.30× | 1.66× | 1.25× | 1.09× | 0.91× | 1.03× | 0.76× | 0.82× | 0.81× | 0.92× | 0.87× | 0.68× | 0.71× | 0.68× | 0.55× | 0.81× | 1.10× | 1.14× | 1.22× | 1.38× | 1.03× | 1.64× | 1.10× | 1.07× | 1.59× | 0.84× | 0.65× | 0.71× | 0.93× | 0.98× | 0.52× | 0.36× | 0.33× | 0.37× | 0.34× | 0.27× | 0.46× | 0.49× |
| P/B at period end | – | – | – | – | – | 78.23× | 39.71× | 17.78× | 12.01× | 7.65× | 6.31× | 4.58× | 4.14× | 3.17× | 2.06× | 1.92× | 1.69× | 1.47× | 2.43× | 3.29× | 3.45× | 3.85× | 4.13× | 3.23× | 5.33× | 3.75× | 3.62× | 6.75× | 3.58× | 2.50× | 3.01× | 4.01× | 5.11× | 2.71× | 1.66× | 1.38× | 1.52× | 1.47× | 1.15× | 1.96× | 2.49× |
| EV / EBITDA (TTM) | 15.64× | 14.82× | 11.97× | 13.36× | 13.45× | 11.87× | 13.10× | 14.27× | 10.67× | 8.64× | 9.31× | 8.98× | 10.33× | 10.10× | 8.33× | 7.66× | 7.47× | 5.87× | 7.34× | 8.67× | 9.12× | 10.21× | 11.39× | 9.18× | 16.74× | 12.77× | 12.14× | 19.35× | 11.09× | 8.28× | 9.88× | 12.47× | 15.03× | 9.22× | 8.97× | 5.86× | 6.35× | – | – | – | – |
| EV / Sales (TTM) | 2.24× | 2.20× | 1.87× | 1.67× | 1.95× | 1.49× | 1.40× | 1.13× | 1.26× | 0.99× | 1.02× | 1.00× | 1.10× | 1.04× | 0.81× | 0.82× | 0.77× | 0.66× | 0.94× | 1.18× | 1.20× | 1.29× | 1.45× | 1.13× | 1.78× | 1.23× | 1.15× | 1.68× | 0.92× | 0.74× | 0.82× | 1.02× | 1.11× | 0.59× | 0.44× | 0.41× | 0.42× | 0.40× | 0.34× | 0.51× | 0.54× |
| Returns | |||||||||||||||||||||||||||||||||||||||||
| Return on equity | – | – | – | – | – | 404.4% | 216.4% | 63.3% | 58.5% | 47.6% | 33.1% | 26.9% | 19.2% | 14.0% | 11.0% | 11.0% | 9.3% | 12.2% | 17.4% | 19.7% | 19.3% | 18.9% | 17.9% | 18.0% | 15.3% | 14.7% | 14.3% | 16.0% | 14.7% | 13.2% | 13.6% | 15.7% | 15.1% | 11.6% | 1.0% | 10.4% | 11.6% | 11.8% | 9.6% | 10.2% | 14.7% |
| Return on invested capital | 22.9% | 33.6% | 36.3% | 32.3% | 38.9% | 31.7% | 19.2% | 14.2% | 18.7% | 16.1% | 14.4% | 14.5% | 11.7% | 9.9% | 9.0% | 9.2% | 8.4% | 9.9% | 13.0% | 16.2% | 16.5% | 15.6% | 15.2% | 14.1% | 11.4% | 11.0% | 12.2% | 12.9% | 12.5% | 12.1% | 11.2% | 12.8% | 11.7% | 11.6% | 10.1% | 11.6% | 11.4% | 11.4% | 9.2% | 9.5% | 12.8% |
| Dividend yield | 1.8% | 1.7% | 2.1% | 1.9% | 1.2% | 1.5% | 2.1% | 2.2% | 1.8% | 2.3% | 2.0% | 1.8% | 1.5% | 1.6% | 1.9% | 1.6% | 1.2% | 1.8% | 1.1% | 0.5% | 0.3% | 0.3% | 0.2% | 0.2% | 0.2% | 0.3% | 0.3% | 0.2% | 0.3% | 0.6% | 0.6% | 0.5% | 0.5% | 1.1% | 1.8% | 2.0% | 1.9% | – | – | – | – |
| Financial health | |||||||||||||||||||||||||||||||||||||||||
| Current ratio | 1.08× | 1.09× | 1.23× | 1.10× | 1.02× | 1.19× | 1.01× | 0.98× | 1.06× | 1.00× | 1.01× | 1.05× | 1.16× | 1.27× | 1.28× | 1.40× | 1.32× | 1.22× | 1.12× | 1.27× | 1.34× | 1.23× | 1.53× | 1.56× | 1.63× | 1.43× | 1.55× | 1.46× | 1.46× | 1.37× | 1.69× | 1.65× | 1.59× | 1.49× | 1.31× | 1.83× | 1.94× | 2.02× | 2.38× | 2.13× | 2.12× |
| Debt / equity | (4.03×) | (2.49×) | (2.35×) | (2.34×) | (5.13×) | 14.38× | 9.49× | 4.15× | 2.84× | 2.32× | 1.51× | 1.08× | 0.88× | 0.66× | 0.46× | 0.36× | 0.24× | 0.28× | 0.39× | 0.26× | 0.22× | 0.28× | 0.36× | 0.46× | 0.58× | 0.54× | 0.40× | 0.47× | 0.44× | 0.39× | 0.54× | 0.50× | 0.74× | 0.46× | 0.41× | 0.33× | 0.28× | 0.35× | 0.34× | 0.30× | 0.47× |
| Effective tax rate | 23.9% | 24.0% | 24.1% | 28.8% | 24.7% | 24.6% | 23.9% | 31.8% | 37.2% | 40.5% | 42.4% | 36.9% | 37.8% | 37.6% | 36.7% | 37.7% | 36.9% | 37.4% | 37.7% | 37.9% | 38.5% | 38.5% | 38.6% | 37.6% | 37.5% | 36.8% | 36.7% | 35.1% | 33.6% | 35.6% | 35.8% | 34.9% | 33.5% | 32.7% | (30.0%) | 29.1% | 31.2% | 34.5% | 38.3% | 49.0% | 47.1% |
| Share count | |||||||||||||||||||||||||||||||||||||||||
| Diluted shares outstanding | 560 | 568 | 584 | 631 | 699 | 750 | 778 | 812 | 840 | 881 | 929 | 990 | 1,061 | 1,152 | 1,273 | 1,403 | 1,464 | 1,468 | 1,510 | 1,566 | 1,607 | 1,605 | 1,632 | 1,603 | 1,590 | 1,557 | 1,535 | 1,503 | 1,473 | 1,367 | 1,329 | 1,287 | 1,172 | 1,168 | 867 | 1,185 | 1,152 | 1,203 | 1,120 | 1,224 | 1,137 |
| Line item | TTM | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 | FY2008 | FY2007 | FY2006 | FY2005 | FY2004 | FY2003 | FY2002 | FY2001 | FY2000 | FY1999 | FY1998 | FY1997 | FY1996 | FY1995 | FY1994 | FY1993 | FY1992 | FY1991 | FY1990 | FY1989 | FY1988 | FY1987 | FY1986 | FY1985 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue and gross profit | ||||||||||||||||||||||||||||||||||||||||||
| Revenue | $90,432 | $86,286 | $83,674 | $86,377 | $97,059 | $96,250 | $89,597 | $72,148 | $71,309 | $68,619 | $65,017 | $59,074 | $56,223 | $53,417 | $50,521 | $50,208 | $48,815 | $47,220 | $48,230 | $48,283 | $46,927 | $43,243 | $36,464 | $30,838 | $26,112 | $21,714 | $18,779 | $15,906 | $13,331 | $11,108 | $8,600 | $7,075 | $6,110 | $4,538 | $3,846 | $3,056 | $2,833 | $2,650 | $2,517 | $2,442 | $2,284 | $2,073 |
| Cost of revenue | ($60,515) | ($57,401) | ($55,797) | ($57,533) | ($64,802) | ($64,194) | ($60,025) | ($49,205) | ($48,401) | ($46,185) | ($43,343) | ($38,504) | ($36,665) | ($34,941) | ($33,194) | ($32,858) | ($31,663) | ($30,757) | ($31,729) | ($31,556) | ($30,729) | ($28,453) | ($24,224) | ($21,231) | ($18,164) | ($15,427) | ($13,487) | ($11,525) | ($9,756) | ($8,155) | ($6,375) | ($5,309) | ($4,595) | ($3,457) | ($2,946) | ($2,321) | ($2,130) | ($2,004) | ($1,916) | ($1,858) | ($1,724) | ($1,560) |
| Gross profit | $29,917 | $28,885 | $27,877 | $28,844 | $32,257 | $32,056 | $29,572 | $22,943 | $22,908 | $22,434 | $21,674 | $20,570 | $19,558 | $18,476 | $17,327 | $17,350 | $17,152 | $16,463 | $16,501 | $16,727 | $16,198 | $14,790 | $12,240 | $9,607 | $7,948 | $6,287 | $5,292 | $4,381 | $3,574 | $2,953 | $2,225 | $1,767 | $1,516 | $1,081 | $901 | $735 | $703 | $646 | $600 | $584 | $559 | $512 |
| Operating expenses | ||||||||||||||||||||||||||||||||||||||||||
| Research and development | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Selling, general and administrative | ($17,449) | ($16,791) | ($15,682) | ($15,570) | ($20,332) | ($18,301) | ($18,526) | ($15,367) | ($17,413) | ($14,444) | ($14,375) | ($14,105) | ($13,272) | ($12,865) | ($12,244) | ($12,593) | ($12,006) | ($11,737) | ($11,176) | ($10,515) | ($9,884) | ($9,156) | ($7,685) | ($5,706) | ($4,754) | ($3,997) | ($3,480) | ($2,871) | ($2,417) | ($2,027) | ($1,455) | ($1,177) | ($1,015) | ($746) | ($654) | ($584) | ($506) | ($472) | ($433) | ($435) | ($407) | ($366) |
| Total operating expenses | ($19,625) | ($18,732) | ($17,411) | ($17,287) | ($22,098) | ($19,963) | ($19,925) | ($16,629) | ($18,890) | ($15,848) | ($15,828) | ($15,599) | ($14,766) | ($14,327) | ($13,767) | ($14,073) | ($13,592) | ($13,351) | ($12,715) | ($12,022) | ($11,046) | ($10,136) | ($8,544) | ($6,483) | ($5,394) | ($4,510) | ($3,889) | ($3,209) | ($2,706) | ($2,283) | ($1,654) | ($1,330) | ($1,128) | ($827) | ($724) | ($642) | ($557) | ($518) | ($474) | ($474) | ($437) | ($388) |
| Total costs and expenses | ($80,140) | ($76,133) | ($73,208) | ($74,820) | ($86,900) | ($84,157) | ($79,950) | ($65,834) | ($67,291) | ($62,033) | ($59,171) | ($54,103) | ($51,431) | ($49,268) | ($46,961) | ($46,931) | ($45,255) | ($44,108) | ($44,444) | ($43,578) | ($41,775) | ($38,589) | ($32,768) | ($27,714) | ($23,558) | ($19,937) | ($17,376) | ($14,733) | ($12,462) | ($10,438) | ($8,029) | ($6,639) | ($5,722) | ($4,284) | ($3,669) | ($2,963) | ($2,688) | ($2,522) | ($2,390) | ($2,332) | ($2,162) | ($1,948) |
| Operating income | $10,292 | $10,153 | $10,466 | $11,557 | $10,159 | $12,093 | $9,647 | $6,314 | $4,018 | $6,586 | $5,846 | $4,971 | $4,792 | $4,149 | $3,560 | $3,277 | $3,560 | $3,112 | $3,786 | $4,705 | $5,152 | $4,654 | $3,696 | $3,124 | $2,554 | $1,777 | $1,402 | $1,172 | $868 | $670 | $571 | $436 | $388 | $254 | $177 | $93 | $145 | $128 | $127 | $110 | $122 | $124 |
| Earnings | ||||||||||||||||||||||||||||||||||||||||||
| EBITDA | $12,756 | $12,347 | $12,438 | $13,480 | $12,140 | $13,975 | $11,241 | $7,724 | $5,625 | $8,126 | $7,436 | $6,465 | $6,286 | $5,711 | $5,183 | $4,856 | $5,244 | $4,845 | $5,453 | $6,169 | $6,389 | $5,705 | $4,622 | $3,924 | $3,213 | $2,307 | $1,812 | $1,510 | $1,157 | $926 | $771 | $590 | $501 | $335 | $247 | $151 | $197 | $174 | – | – | – | – |
| Interest income | $81 | $121 | $159 | $101 | $37 | $12 | $24 | $27 | $28 | $16 | $12 | $4 | $6 | $4 | $9 | $12 | $12 | $17 | $40 | $45 | $52 | $45 | $16 | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Interest expense | ($1,582) | ($1,527) | ($1,469) | ($1,473) | ($1,138) | ($885) | ($848) | ($691) | ($624) | ($633) | ($645) | ($552) | ($516) | ($476) | ($423) | ($371) | ($332) | ($287) | ($280) | ($194) | ($206) | ($203) | ($192) | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Pre-tax income | $8,763 | $8,747 | $9,153 | $10,175 | $9,036 | $11,208 | $7,739 | $5,623 | $3,394 | $5,489 | $5,201 | $4,419 | $4,276 | $3,673 | $3,137 | $2,906 | $3,228 | $2,825 | $3,506 | $4,511 | $4,998 | $4,506 | $3,536 | $2,944 | $2,359 | $1,603 | $1,281 | $1,063 | $787 | $599 | $454 | $352 | $344 | $198 | $126 | $5 | $100 | $109 | $106 | $91 | $108 | $113 |
| Income tax expense | ($2,120) | ($2,093) | ($2,196) | ($2,449) | ($2,599) | ($2,766) | ($1,904) | ($1,342) | ($1,080) | ($2,042) | ($2,108) | ($1,873) | ($1,578) | ($1,387) | ($1,178) | ($1,067) | ($1,218) | ($1,042) | ($1,311) | ($1,702) | ($1,893) | ($1,735) | ($1,360) | ($1,136) | ($888) | ($601) | ($472) | ($390) | ($276) | ($201) | ($162) | ($126) | ($120) | ($66) | ($41) | $2 | ($29) | ($34) | ($36) | ($35) | ($53) | ($53) |
| Net income | $6,643 | $6,654 | $6,957 | $7,726 | $6,437 | $8,442 | $5,835 | $4,281 | $2,314 | $3,447 | $3,093 | $2,546 | $2,698 | $2,286 | $1,959 | $1,839 | $2,010 | $1,783 | $2,195 | $2,809 | $3,105 | $2,771 | $2,176 | $1,844 | $1,491 | $1,023 | $810 | $673 | $500 | $383 | $292 | $226 | $224 | $132 | $85 | $6 | $71 | $75 | $69 | $56 | $55 | $60 |
| Per share | ||||||||||||||||||||||||||||||||||||||||||
| Diluted EPS (GAAP) | $11.83 | $11.85 | $12.23 | $13.20 | $10.17 | $12.04 | $7.75 | $5.49 | $2.84 | $4.09 | $3.47 | $2.73 | $2.71 | $2.14 | $1.69 | $1.43 | $1.42 | $1.21 | $1.49 | $1.86 | $1.99 | $1.73 | $1.35 | $1.13 | $0.93 | $0.65 | $0.52 | $0.44 | $0.34 | $0.26 | $0.21 | $0.17 | $0.17 | $0.11 | $0.0725 | $0.0075 | $0.06 | $0.065 | $0.0575 | $0.05 | $0.045 | $0.0525 |
| Basic EPS (GAAP) | $11.84 | $11.87 | $12.25 | $13.23 | $10.20 | $12.07 | $7.77 | $5.49 | $2.84 | $4.09 | $3.48 | $2.73 | $2.71 | $2.14 | $1.69 | $1.43 | $1.42 | $1.21 | $1.50 | $1.89 | $2.02 | $1.78 | $1.39 | $1.16 | $0.95 | $0.67 | $0.53 | $0.44 | $0.34 | $0.26 | $0.22 | $0.18 | $0.18 | $0.11 | $0.0725 | $0.0075 | $0.06 | $0.065 | $0.0575 | $0.05 | $0.045 | $0.0525 |
| Basic shares outstanding | 559 | 559 | 567 | 582 | 629 | 696 | 748 | 777 | 811 | 839 | 880 | 927 | 988 | 1,059 | 1,150 | 1,271 | 1,401 | 1,462 | 1,457 | 1,481 | 1,535 | 1,555 | 1,559 | 1,590 | 1,569 | 1,544 | 1,543 | 1,525 | 1,483 | 1,473 | 1,341 | 1,284 | 1,239 | 1,172 | 1,168 | 867 | 1,185 | 1,152 | 1,203 | 1,120 | 1,224 | 1,137 |
| Margins | ||||||||||||||||||||||||||||||||||||||||||
| Gross margin | 33.1% | 33.5% | 33.3% | 33.4% | 33.2% | 33.3% | 33.0% | 31.8% | 32.1% | 32.7% | 33.3% | 34.8% | 34.8% | 34.6% | 34.3% | 34.6% | 35.1% | 34.9% | 34.2% | 34.6% | 34.5% | 34.2% | 33.6% | 31.2% | 30.4% | 29.0% | 28.2% | 27.5% | 26.8% | 26.6% | 25.9% | 25.0% | 24.8% | 23.8% | 23.4% | 24.1% | 24.8% | 24.4% | 23.9% | 23.9% | 24.5% | 24.7% |
| Operating margin | 11.4% | 11.8% | 12.5% | 13.4% | 10.5% | 12.6% | 10.8% | 8.8% | 5.6% | 9.6% | 9.0% | 8.4% | 8.5% | 7.8% | 7.0% | 6.5% | 7.3% | 6.6% | 7.8% | 9.7% | 11.0% | 10.8% | 10.1% | 10.1% | 9.8% | 8.2% | 7.5% | 7.4% | 6.5% | 6.0% | 6.6% | 6.2% | 6.4% | 5.6% | 4.6% | 3.0% | 5.1% | 4.8% | 5.0% | 4.5% | 5.3% | 6.0% |
| Net margin | 7.3% | 7.7% | 8.3% | 8.9% | 6.6% | 8.8% | 6.5% | 5.9% | 3.2% | 5.0% | 4.8% | 4.3% | 4.8% | 4.3% | 3.9% | 3.7% | 4.1% | 3.8% | 4.6% | 5.8% | 6.6% | 6.4% | 6.0% | 6.0% | 5.7% | 4.7% | 4.3% | 4.2% | 3.8% | 3.4% | 3.4% | 3.2% | 3.7% | 2.9% | 2.2% | 0.2% | 2.5% | 2.8% | 2.7% | 2.3% | 2.4% | 2.9% |