<?xml version="1.0" encoding="utf-8"?>
<informationTable xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sec.gov/edgar/document/thirteenf/informationtable">
  <infoTable>
    <nameOfIssuer>AAON, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>000360206</cusip>
    <value>2022696</value>
    <shrsOrPrnAmt>
      <sshPrnamt>21647</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3107</Sole>
      <Shared>0</Shared>
      <None>18540</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>APi Group Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>00187Y100</cusip>
    <value>2615385</value>
    <shrsOrPrnAmt>
      <sshPrnamt>76095</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>10893</Sole>
      <Shared>0</Shared>
      <None>65202</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>AbbVie, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>00287Y109</cusip>
    <value>37477182</value>
    <shrsOrPrnAmt>
      <sshPrnamt>161861</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>84655</Sole>
      <Shared>0</Shared>
      <None>77206</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Abbott Laboratories</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>002824100</cusip>
    <value>32027917</value>
    <shrsOrPrnAmt>
      <sshPrnamt>239121</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>124542</Sole>
      <Shared>0</Shared>
      <None>114579</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Advanced Micro Devices, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>007903107</cusip>
    <value>1386702</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8571</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4695</Sole>
      <Shared>0</Shared>
      <None>3876</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Alphabet, Inc. Class A</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>02079K305</cusip>
    <value>8634912</value>
    <shrsOrPrnAmt>
      <sshPrnamt>35520</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>26450</Sole>
      <Shared>0</Shared>
      <None>9070</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Alphabet, Inc. Class C</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>02079K107</cusip>
    <value>8701554</value>
    <shrsOrPrnAmt>
      <sshPrnamt>35728</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>34528</Sole>
      <Shared>0</Shared>
      <None>1200</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Amazon.com, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>023135106</cusip>
    <value>18134506</value>
    <shrsOrPrnAmt>
      <sshPrnamt>82591</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>76902</Sole>
      <Shared>0</Shared>
      <None>5689</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>American Superconductor Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>030111207</cusip>
    <value>3882027</value>
    <shrsOrPrnAmt>
      <sshPrnamt>65365</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>9465</Sole>
      <Shared>0</Shared>
      <None>55900</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Amgen,Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>031162100</cusip>
    <value>1908236</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6762</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6762</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Amphenol Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>032095101</cusip>
    <value>50726363</value>
    <shrsOrPrnAmt>
      <sshPrnamt>409910</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>202350</Sole>
      <Shared>0</Shared>
      <None>207560</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Analog Devices, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>032654105</cusip>
    <value>31320608</value>
    <shrsOrPrnAmt>
      <sshPrnamt>127475</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>76615</Sole>
      <Shared>0</Shared>
      <None>50860</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Apple, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>037833100</cusip>
    <value>87340489</value>
    <shrsOrPrnAmt>
      <sshPrnamt>343009</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>210980</Sole>
      <Shared>0</Shared>
      <None>132029</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Arthur J. Gallagher &amp; Co.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>363576109</cusip>
    <value>38219438</value>
    <shrsOrPrnAmt>
      <sshPrnamt>123392</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>64877</Sole>
      <Shared>0</Shared>
      <None>58515</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Bank of America Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>060505104</cusip>
    <value>1772117</value>
    <shrsOrPrnAmt>
      <sshPrnamt>34350</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>34350</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Boot Barn Holdings, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>099406100</cusip>
    <value>2145080</value>
    <shrsOrPrnAmt>
      <sshPrnamt>12944</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1859</Sole>
      <Shared>0</Shared>
      <None>11085</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Broadcom, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>11135F101</cusip>
    <value>76924785</value>
    <shrsOrPrnAmt>
      <sshPrnamt>233169</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>152009</Sole>
      <Shared>0</Shared>
      <None>81160</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Carrier Global Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>14448C104</cusip>
    <value>566434</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9488</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>9488</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Catalyst Pharmaceuticals</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>14888U101</cusip>
    <value>1859010</value>
    <shrsOrPrnAmt>
      <sshPrnamt>94366</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>13538</Sole>
      <Shared>0</Shared>
      <None>80828</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Century Communities, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>156504300</cusip>
    <value>1696668</value>
    <shrsOrPrnAmt>
      <sshPrnamt>26774</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3832</Sole>
      <Shared>0</Shared>
      <None>22942</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Ciena Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>171779309</cusip>
    <value>5038143</value>
    <shrsOrPrnAmt>
      <sshPrnamt>34586</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4950</Sole>
      <Shared>0</Shared>
      <None>29636</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Cisco Systems, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>17275R102</cusip>
    <value>1583239</value>
    <shrsOrPrnAmt>
      <sshPrnamt>23140</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>22740</Sole>
      <Shared>0</Shared>
      <None>400</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Cognizant Technology Solutions</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>192446102</cusip>
    <value>16261815</value>
    <shrsOrPrnAmt>
      <sshPrnamt>242460</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>120394</Sole>
      <Shared>0</Shared>
      <None>122066</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ConocoPhillips</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>20825C104</cusip>
    <value>231840</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2451</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>691</Sole>
      <Shared>0</Shared>
      <None>1760</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Corcept Therapeutics, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>218352102</cusip>
    <value>2952898</value>
    <shrsOrPrnAmt>
      <sshPrnamt>35530</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>5130</Sole>
      <Shared>0</Shared>
      <None>30400</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Costco Wholesale Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>22160K105</cusip>
    <value>467443</value>
    <shrsOrPrnAmt>
      <sshPrnamt>505</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>505</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Curtiss-Wright Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>231561101</cusip>
    <value>4749096</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8747</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1252</Sole>
      <Shared>0</Shared>
      <None>7495</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Deere &amp; Co.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>244199105</cusip>
    <value>14067161</value>
    <shrsOrPrnAmt>
      <sshPrnamt>30764</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>15593</Sole>
      <Shared>0</Shared>
      <None>15171</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Dycom Industries, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>267475101</cusip>
    <value>4322424</value>
    <shrsOrPrnAmt>
      <sshPrnamt>14815</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2118</Sole>
      <Shared>0</Shared>
      <None>12697</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>EOG Resources, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>26875P101</cusip>
    <value>17103495</value>
    <shrsOrPrnAmt>
      <sshPrnamt>152546</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>86374</Sole>
      <Shared>0</Shared>
      <None>66172</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Eaton Corp. plc</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>G29183103</cusip>
    <value>46003559</value>
    <shrsOrPrnAmt>
      <sshPrnamt>122922</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>59931</Sole>
      <Shared>0</Shared>
      <None>62991</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Eli Lilly &amp; Co.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>532457108</cusip>
    <value>31606512</value>
    <shrsOrPrnAmt>
      <sshPrnamt>41424</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>31428</Sole>
      <Shared>0</Shared>
      <None>9996</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Emerson Electric Co.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>291011104</cusip>
    <value>32576323</value>
    <shrsOrPrnAmt>
      <sshPrnamt>248333</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>125515</Sole>
      <Shared>0</Shared>
      <None>122818</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Ensign Group, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>29358P101</cusip>
    <value>3365560</value>
    <shrsOrPrnAmt>
      <sshPrnamt>19480</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2789</Sole>
      <Shared>0</Shared>
      <None>16691</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Evercore, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>29977A105</cusip>
    <value>3449772</value>
    <shrsOrPrnAmt>
      <sshPrnamt>10227</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1463</Sole>
      <Shared>0</Shared>
      <None>8764</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ExlService Holdings, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>302081104</cusip>
    <value>3500385</value>
    <shrsOrPrnAmt>
      <sshPrnamt>79500</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>11476</Sole>
      <Shared>0</Shared>
      <None>68024</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ExxonMobil Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>30231G102</cusip>
    <value>578746</value>
    <shrsOrPrnAmt>
      <sshPrnamt>5133</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>905</Sole>
      <Shared>0</Shared>
      <None>4228</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Fabrinet</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>G3323L100</cusip>
    <value>5132756</value>
    <shrsOrPrnAmt>
      <sshPrnamt>14077</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2034</Sole>
      <Shared>0</Shared>
      <None>12043</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Fiserv, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>337738108</cusip>
    <value>2446060</value>
    <shrsOrPrnAmt>
      <sshPrnamt>18972</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>8693</Sole>
      <Shared>0</Shared>
      <None>10279</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Halozyme Therapeutics, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>40637H109</cusip>
    <value>2704633</value>
    <shrsOrPrnAmt>
      <sshPrnamt>36878</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>5285</Sole>
      <Shared>0</Shared>
      <None>31593</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Honeywell International, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>438516106</cusip>
    <value>17282261</value>
    <shrsOrPrnAmt>
      <sshPrnamt>82101</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>42428</Sole>
      <Shared>0</Shared>
      <None>39673</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Intercontinental Exchange, Inc</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>45866F104</cusip>
    <value>36080497</value>
    <shrsOrPrnAmt>
      <sshPrnamt>214153</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>109949</Sole>
      <Shared>0</Shared>
      <None>104204</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Intl. Flavors &amp; Fragrances, In</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>459506101</cusip>
    <value>8410733</value>
    <shrsOrPrnAmt>
      <sshPrnamt>136671</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>136671</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Jacobs Solutions, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>46982L108</cusip>
    <value>38138021</value>
    <shrsOrPrnAmt>
      <sshPrnamt>254491</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>126797</Sole>
      <Shared>0</Shared>
      <None>127694</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Johnson &amp; Johnson</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>478160104</cusip>
    <value>4190677</value>
    <shrsOrPrnAmt>
      <sshPrnamt>22601</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>22101</Sole>
      <Shared>0</Shared>
      <None>500</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Johnson Controls Intl PLC</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>G51502105</cusip>
    <value>395820</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3600</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>3600</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>KLA Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>482480100</cusip>
    <value>62863014</value>
    <shrsOrPrnAmt>
      <sshPrnamt>58282</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>33915</Sole>
      <Shared>0</Shared>
      <None>24367</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Knife River Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>498894104</cusip>
    <value>1368209</value>
    <shrsOrPrnAmt>
      <sshPrnamt>17799</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2568</Sole>
      <Shared>0</Shared>
      <None>15231</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Lantheus Holdings, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>516544103</cusip>
    <value>1842593</value>
    <shrsOrPrnAmt>
      <sshPrnamt>35925</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>5150</Sole>
      <Shared>0</Shared>
      <None>30775</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Lithia Motors, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>536797103</cusip>
    <value>1847652</value>
    <shrsOrPrnAmt>
      <sshPrnamt>5847</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>835</Sole>
      <Shared>0</Shared>
      <None>5012</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Lowe's Companies, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>548661107</cusip>
    <value>36189963</value>
    <shrsOrPrnAmt>
      <sshPrnamt>144005</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>73208</Sole>
      <Shared>0</Shared>
      <None>70797</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Magnolia Oil &amp; Gas Corp. Cl A</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>559663109</cusip>
    <value>2359120</value>
    <shrsOrPrnAmt>
      <sshPrnamt>98832</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>14157</Sole>
      <Shared>0</Shared>
      <None>84675</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MarketAxess Holdings, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>57060D108</cusip>
    <value>618239</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3548</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>509</Sole>
      <Shared>0</Shared>
      <None>3039</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MasTec, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>576323109</cusip>
    <value>5161494</value>
    <shrsOrPrnAmt>
      <sshPrnamt>24254</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3508</Sole>
      <Shared>0</Shared>
      <None>20746</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Mastercard, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>57636Q104</cusip>
    <value>44694833</value>
    <shrsOrPrnAmt>
      <sshPrnamt>78576</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>41254</Sole>
      <Shared>0</Shared>
      <None>37322</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Matador Resources Co.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>576485205</cusip>
    <value>936521</value>
    <shrsOrPrnAmt>
      <sshPrnamt>20844</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2975</Sole>
      <Shared>0</Shared>
      <None>17869</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>McDonald's Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>580135101</cusip>
    <value>7051464</value>
    <shrsOrPrnAmt>
      <sshPrnamt>23204</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>23204</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Medpace Holdings, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>58506Q109</cusip>
    <value>4826420</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9387</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1345</Sole>
      <Shared>0</Shared>
      <None>8042</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Meta Platforms, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>30303M102</cusip>
    <value>3198225</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4355</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2461</Sole>
      <Shared>0</Shared>
      <None>1894</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Microsoft Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>594918104</cusip>
    <value>94216141</value>
    <shrsOrPrnAmt>
      <sshPrnamt>181902</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>113361</Sole>
      <Shared>0</Shared>
      <None>68541</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Modine Manufacturing Co.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>607828100</cusip>
    <value>4495526</value>
    <shrsOrPrnAmt>
      <sshPrnamt>31623</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6944</Sole>
      <Shared>0</Shared>
      <None>24679</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Moelis</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>60786M105</cusip>
    <value>1223709</value>
    <shrsOrPrnAmt>
      <sshPrnamt>17158</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2480</Sole>
      <Shared>0</Shared>
      <None>14678</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Moody's Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>615369105</cusip>
    <value>22083895</value>
    <shrsOrPrnAmt>
      <sshPrnamt>46348</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>25622</Sole>
      <Shared>0</Shared>
      <None>20726</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Motorola Solutions, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>620076307</cusip>
    <value>1042621</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2280</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>840</Sole>
      <Shared>0</Shared>
      <None>1440</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NIKE, Inc. Class B</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>654106103</cusip>
    <value>934870</value>
    <shrsOrPrnAmt>
      <sshPrnamt>13407</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>8105</Sole>
      <Shared>0</Shared>
      <None>5302</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NVIDIA Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>67066G104</cusip>
    <value>5101657</value>
    <shrsOrPrnAmt>
      <sshPrnamt>27343</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>8998</Sole>
      <Shared>0</Shared>
      <None>18345</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Nasdaq, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>631103108</cusip>
    <value>30232564</value>
    <shrsOrPrnAmt>
      <sshPrnamt>341804</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>167705</Sole>
      <Shared>0</Shared>
      <None>174099</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Norfolk Southern Corporation</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>655844108</cusip>
    <value>2753258</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9165</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>9165</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>O Reilly Automotive</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>67103H107</cusip>
    <value>863558</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8010</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>8010</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Ollie's Bargain Outlet Holding</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>681116109</cusip>
    <value>2677140</value>
    <shrsOrPrnAmt>
      <sshPrnamt>20850</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2993</Sole>
      <Shared>0</Shared>
      <None>17857</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Onto Innovation, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>683344105</cusip>
    <value>2439674</value>
    <shrsOrPrnAmt>
      <sshPrnamt>18880</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2717</Sole>
      <Shared>0</Shared>
      <None>16163</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Oracle Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>68389x105</cusip>
    <value>2187485</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7778</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3148</Sole>
      <Shared>0</Shared>
      <None>4630</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>PTC, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>69370C100</cusip>
    <value>2466084</value>
    <shrsOrPrnAmt>
      <sshPrnamt>12147</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1735</Sole>
      <Shared>0</Shared>
      <None>10412</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>PepsiCo, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>713448108</cusip>
    <value>1327720</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9454</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>8388</Sole>
      <Shared>0</Shared>
      <None>1066</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Pool Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>73278L105</cusip>
    <value>1524924</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4918</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1069</Sole>
      <Shared>0</Shared>
      <None>3849</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Primo Brands Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>741623102</cusip>
    <value>1241158</value>
    <shrsOrPrnAmt>
      <sshPrnamt>56161</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>8094</Sole>
      <Shared>0</Shared>
      <None>48067</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Procter &amp; Gamble Co.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>742718109</cusip>
    <value>637648</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4150</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4150</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>RTX Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>75513E101</cusip>
    <value>36598387</value>
    <shrsOrPrnAmt>
      <sshPrnamt>218720</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>115795</Sole>
      <Shared>0</Shared>
      <None>102925</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Rambus, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>750917106</cusip>
    <value>4360874</value>
    <shrsOrPrnAmt>
      <sshPrnamt>41851</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6025</Sole>
      <Shared>0</Shared>
      <None>35826</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>S&amp;P Global, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>78409V104</cusip>
    <value>11020088</value>
    <shrsOrPrnAmt>
      <sshPrnamt>22642</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>13171</Sole>
      <Shared>0</Shared>
      <None>9471</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Skyward Specialty Insurance Gr</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>830940102</cusip>
    <value>1299149</value>
    <shrsOrPrnAmt>
      <sshPrnamt>27316</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4142</Sole>
      <Shared>0</Shared>
      <None>23174</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Sprouts Farmers Market, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>85208M102</cusip>
    <value>1885395</value>
    <shrsOrPrnAmt>
      <sshPrnamt>17329</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2486</Sole>
      <Shared>0</Shared>
      <None>14843</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Starbucks Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>855244109</cusip>
    <value>1121881</value>
    <shrsOrPrnAmt>
      <sshPrnamt>13261</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>7518</Sole>
      <Shared>0</Shared>
      <None>5743</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Stride, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>86333m108</cusip>
    <value>3615072</value>
    <shrsOrPrnAmt>
      <sshPrnamt>24272</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3471</Sole>
      <Shared>0</Shared>
      <None>20801</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Stryker Corp.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>863667101</cusip>
    <value>38829058</value>
    <shrsOrPrnAmt>
      <sshPrnamt>105037</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>53234</Sole>
      <Shared>0</Shared>
      <None>51803</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Supernus Pharmaceuticals, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>868459108</cusip>
    <value>2186870</value>
    <shrsOrPrnAmt>
      <sshPrnamt>45760</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6558</Sole>
      <Shared>0</Shared>
      <None>39202</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>T-Mobile US, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>872590104</cusip>
    <value>2158489</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9017</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4819</Sole>
      <Shared>0</Shared>
      <None>4198</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>TE Connectivity plc</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>G87052109</cusip>
    <value>30959218</value>
    <shrsOrPrnAmt>
      <sshPrnamt>141025</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>72184</Sole>
      <Shared>0</Shared>
      <None>68841</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Texas Instruments, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>882508104</cusip>
    <value>31914881</value>
    <shrsOrPrnAmt>
      <sshPrnamt>173705</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>87988</Sole>
      <Shared>0</Shared>
      <None>85717</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>The Boeing Co.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>097023105</cusip>
    <value>487992</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2261</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>786</Sole>
      <Shared>0</Shared>
      <None>1475</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>The Hershey Co.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>427866108</cusip>
    <value>1193192</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6379</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6379</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>The Home Depot, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>437076102</cusip>
    <value>3397113</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8384</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>8384</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>The TJX Companies, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>872540109</cusip>
    <value>2214208</value>
    <shrsOrPrnAmt>
      <sshPrnamt>15319</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>8858</Sole>
      <Shared>0</Shared>
      <None>6461</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>The Walt Disney Co.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>254687106</cusip>
    <value>1782193</value>
    <shrsOrPrnAmt>
      <sshPrnamt>15565</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>15565</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Thermo Fisher Scientific, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>883556102</cusip>
    <value>1283848</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2647</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1415</Sole>
      <Shared>0</Shared>
      <None>1232</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Trane Technologies plc</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>G8994E103</cusip>
    <value>956161</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2266</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>833</Sole>
      <Shared>0</Shared>
      <None>1433</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Transmedics Group, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>89377M109</cusip>
    <value>1402276</value>
    <shrsOrPrnAmt>
      <sshPrnamt>12498</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1792</Sole>
      <Shared>0</Shared>
      <None>10706</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Upstart Holdings, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>91680M107</cusip>
    <value>1114704</value>
    <shrsOrPrnAmt>
      <sshPrnamt>21943</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3172</Sole>
      <Shared>0</Shared>
      <None>18771</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Vertex Pharmaceuticals, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>92532f100</cusip>
    <value>639940</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1634</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>545</Sole>
      <Shared>0</Shared>
      <None>1089</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Visa, Inc. Class A</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>92826C839</cusip>
    <value>43035410</value>
    <shrsOrPrnAmt>
      <sshPrnamt>126063</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>68542</Sole>
      <Shared>0</Shared>
      <None>57521</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Vital Farms, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>92847w103</cusip>
    <value>2827993</value>
    <shrsOrPrnAmt>
      <sshPrnamt>68724</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>9862</Sole>
      <Shared>0</Shared>
      <None>58862</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Vulcan Materials Co.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>929160109</cusip>
    <value>20070667</value>
    <shrsOrPrnAmt>
      <sshPrnamt>65245</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>32551</Sole>
      <Shared>0</Shared>
      <None>32694</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>WEC Energy Group, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>92939U106</cusip>
    <value>42333286</value>
    <shrsOrPrnAmt>
      <sshPrnamt>369433</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>182685</Sole>
      <Shared>0</Shared>
      <None>186748</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Zoetis, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>98978V103</cusip>
    <value>14255095</value>
    <shrsOrPrnAmt>
      <sshPrnamt>97424</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>47699</Sole>
      <Shared>0</Shared>
      <None>49725</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ePlus, Inc.</nameOfIssuer>
    <titleOfClass>COMMON STOCKS</titleOfClass>
    <cusip>294268107</cusip>
    <value>2429252</value>
    <shrsOrPrnAmt>
      <sshPrnamt>34210</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4908</Sole>
      <Shared>0</Shared>
      <None>29302</None>
    </votingAuthority>
  </infoTable>
</informationTable>
