0001628280-25-037024.txt : 20250731 0001628280-25-037024.hdr.sgml : 20250731 20250731162739 ACCESSION NUMBER: 0001628280-25-037024 CONFORMED SUBMISSION TYPE: 10-Q PUBLIC DOCUMENT COUNT: 63 CONFORMED PERIOD OF REPORT: 20250630 FILED AS OF DATE: 20250731 DATE AS OF CHANGE: 20250731 FILER: COMPANY DATA: COMPANY CONFORMED NAME: Proto Labs Inc CENTRAL INDEX KEY: 0001443669 STANDARD INDUSTRIAL CLASSIFICATION: FABRICATED STRUCTURAL METAL PRODUCTS [3440] ORGANIZATION NAME: 04 Manufacturing EIN: 000000000 FISCAL YEAR END: 1231 FILING VALUES: FORM TYPE: 10-Q SEC ACT: 1934 Act SEC FILE NUMBER: 001-35435 FILM NUMBER: 251172048 BUSINESS ADDRESS: STREET 1: 5540 Pioneer Creek CITY: Maple Plain STATE: MN ZIP: 55359 BUSINESS PHONE: 763-479-7474 MAIL ADDRESS: STREET 1: 5540 Pioneer Creek CITY: Maple Plain STATE: MN ZIP: 55359 10-Q 1 prlb-20250630.htm 10-Q prlb-20250630
000144366912-312025Q2falseP3YP6MP3Yxbrli:sharesiso4217:USDiso4217:USDxbrli:sharesiso4217:EURxbrli:pureprlb:performancePeriod00014436692025-01-012025-06-3000014436692025-07-2900014436692025-06-3000014436692024-12-3100014436692025-04-012025-06-3000014436692024-04-012024-06-3000014436692024-01-012024-06-300001443669us-gaap:CommonStockMember2024-12-310001443669us-gaap:AdditionalPaidInCapitalMember2024-12-310001443669us-gaap:RetainedEarningsMember2024-12-310001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2024-12-310001443669us-gaap:CommonStockMember2025-01-012025-03-310001443669us-gaap:AdditionalPaidInCapitalMember2025-01-012025-03-3100014436692025-01-012025-03-310001443669us-gaap:RetainedEarningsMember2025-01-012025-03-310001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2025-01-012025-03-310001443669us-gaap:CommonStockMember2025-03-310001443669us-gaap:AdditionalPaidInCapitalMember2025-03-310001443669us-gaap:RetainedEarningsMember2025-03-310001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2025-03-3100014436692025-03-310001443669us-gaap:CommonStockMember2025-04-012025-06-300001443669us-gaap:AdditionalPaidInCapitalMember2025-04-012025-06-300001443669us-gaap:RetainedEarningsMember2025-04-012025-06-300001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2025-04-012025-06-300001443669us-gaap:CommonStockMember2025-06-300001443669us-gaap:AdditionalPaidInCapitalMember2025-06-300001443669us-gaap:RetainedEarningsMember2025-06-300001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2025-06-300001443669us-gaap:CommonStockMember2023-12-310001443669us-gaap:AdditionalPaidInCapitalMember2023-12-310001443669us-gaap:RetainedEarningsMember2023-12-310001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2023-12-3100014436692023-12-310001443669us-gaap:CommonStockMember2024-01-012024-03-310001443669us-gaap:AdditionalPaidInCapitalMember2024-01-012024-03-3100014436692024-01-012024-03-310001443669us-gaap:RetainedEarningsMember2024-01-012024-03-310001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2024-01-012024-03-310001443669us-gaap:CommonStockMember2024-03-310001443669us-gaap:AdditionalPaidInCapitalMember2024-03-310001443669us-gaap:RetainedEarningsMember2024-03-310001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2024-03-3100014436692024-03-310001443669us-gaap:CommonStockMember2024-04-012024-06-300001443669us-gaap:AdditionalPaidInCapitalMember2024-04-012024-06-300001443669us-gaap:RetainedEarningsMember2024-04-012024-06-300001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2024-04-012024-06-300001443669us-gaap:CommonStockMember2024-06-300001443669us-gaap:AdditionalPaidInCapitalMember2024-06-300001443669us-gaap:RetainedEarningsMember2024-06-300001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2024-06-3000014436692024-06-300001443669us-gaap:NoncompeteAgreementsMember2025-06-300001443669us-gaap:NoncompeteAgreementsMember2024-12-310001443669srt:MinimumMemberus-gaap:NoncompeteAgreementsMember2025-06-300001443669srt:MaximumMemberus-gaap:NoncompeteAgreementsMember2025-06-300001443669us-gaap:ComputerSoftwareIntangibleAssetMember2025-06-300001443669us-gaap:ComputerSoftwareIntangibleAssetMember2024-12-310001443669prlb:SoftwarePlatformMember2025-06-300001443669prlb:SoftwarePlatformMember2024-12-310001443669srt:EuropeMemberprlb:A3DHubsInc.HubsMember2021-01-222021-01-220001443669country:USprlb:A3DHubsInc.HubsMember2021-01-222021-01-2200014436692024-01-012024-12-310001443669us-gaap:CashMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel1Member2025-06-300001443669us-gaap:CashMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel2Member2025-06-300001443669us-gaap:CashMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel3Member2025-06-300001443669us-gaap:CashMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel1Member2024-12-310001443669us-gaap:CashMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel2Member2024-12-310001443669us-gaap:CashMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel3Member2024-12-310001443669us-gaap:MoneyMarketFundsMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel1Member2025-06-300001443669us-gaap:MoneyMarketFundsMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel2Member2025-06-300001443669us-gaap:MoneyMarketFundsMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel3Member2025-06-300001443669us-gaap:MoneyMarketFundsMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel1Member2024-12-310001443669us-gaap:MoneyMarketFundsMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel2Member2024-12-310001443669us-gaap:MoneyMarketFundsMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel3Member2024-12-310001443669us-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel1Member2025-06-300001443669us-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel2Member2025-06-300001443669us-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel3Member2025-06-300001443669us-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel1Member2024-12-310001443669us-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel2Member2024-12-310001443669us-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel3Member2024-12-310001443669us-gaap:USGovernmentAgenciesDebtSecuritiesMember2025-06-300001443669us-gaap:CorporateDebtSecuritiesMember2025-06-300001443669us-gaap:USStatesAndPoliticalSubdivisionsMember2025-06-300001443669us-gaap:USTreasuryBondSecuritiesMember2025-06-300001443669us-gaap:USGovernmentAgenciesDebtSecuritiesMember2024-12-310001443669us-gaap:CorporateDebtSecuritiesMember2024-12-310001443669us-gaap:USStatesAndPoliticalSubdivisionsMember2024-12-310001443669us-gaap:USTreasuryBondSecuritiesMember2024-12-310001443669prlb:LongTermIncentivePlan2022Member2024-05-232024-05-230001443669prlb:LongTermIncentivePlan2022Member2025-01-012025-06-300001443669prlb:LongTermIncentivePlan2022Member2025-05-202025-05-200001443669prlb:ESPPMember2025-01-012025-06-300001443669us-gaap:EmployeeStockOptionMember2025-01-012025-06-300001443669srt:MinimumMemberus-gaap:EmployeeStockOptionMember2025-01-012025-06-300001443669srt:MaximumMemberus-gaap:EmployeeStockOptionMember2025-01-012025-06-300001443669srt:MinimumMemberus-gaap:EmployeeStockOptionMember2024-01-012024-06-300001443669srt:MaximumMemberus-gaap:EmployeeStockOptionMember2024-01-012024-06-300001443669us-gaap:EmployeeStockOptionMember2024-01-012024-06-300001443669us-gaap:EmployeeStockOptionMember2025-06-300001443669srt:MinimumMemberus-gaap:RestrictedStockUnitsRSUMember2025-01-012025-06-300001443669srt:MaximumMemberus-gaap:RestrictedStockUnitsRSUMember2025-01-012025-06-300001443669us-gaap:RestrictedStockUnitsRSUMember2024-12-310001443669us-gaap:RestrictedStockUnitsRSUMember2025-01-012025-06-300001443669us-gaap:RestrictedStockUnitsRSUMember2025-06-300001443669us-gaap:PerformanceSharesMember2025-06-300001443669us-gaap:PerformanceSharesMember2025-01-012025-06-300001443669us-gaap:PerformanceSharesMember2024-12-310001443669prlb:InducementAwardsMemberus-gaap:PerformanceSharesMember2025-05-232025-05-230001443669prlb:InducementAwardsMarketConditionMemberus-gaap:PerformanceSharesMember2025-05-232025-05-230001443669prlb:InducementAwardsPerformanceConditionMemberus-gaap:PerformanceSharesMember2025-05-232025-05-230001443669prlb:InducementAwardsPerformanceConditionMemberus-gaap:PerformanceSharesMember2025-05-230001443669srt:MinimumMemberus-gaap:PerformanceSharesMember2025-01-012025-06-300001443669srt:MaximumMemberus-gaap:PerformanceSharesMember2025-01-012025-06-300001443669us-gaap:PerformanceSharesMember2024-01-012024-06-300001443669prlb:EmployeeStockPurchasePlanMember2025-01-012025-06-300001443669srt:MinimumMemberprlb:EmployeeStockPurchasePlanMember2024-01-012024-06-300001443669srt:MaximumMemberprlb:EmployeeStockPurchasePlanMember2024-01-012024-06-300001443669prlb:EmployeeStockPurchasePlanMember2024-01-012024-06-300001443669us-gaap:AccumulatedTranslationAdjustmentMember2025-04-012025-06-300001443669us-gaap:AccumulatedTranslationAdjustmentMember2024-04-012024-06-300001443669us-gaap:AccumulatedTranslationAdjustmentMember2025-01-012025-06-300001443669us-gaap:AccumulatedTranslationAdjustmentMember2024-01-012024-06-300001443669us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember2025-04-012025-06-300001443669us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember2024-04-012024-06-300001443669us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember2025-01-012025-06-300001443669us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember2024-01-012024-06-300001443669prlb:UnitedStatesSegmentMember2025-04-012025-06-300001443669prlb:EuropeSegmentMember2025-04-012025-06-300001443669us-gaap:CorporateAndOtherMember2025-04-012025-06-300001443669prlb:UnitedStatesSegmentMember2024-04-012024-06-300001443669prlb:EuropeSegmentMember2024-04-012024-06-300001443669us-gaap:CorporateAndOtherMember2024-04-012024-06-300001443669prlb:UnitedStatesSegmentMember2025-01-012025-06-300001443669prlb:EuropeSegmentMember2025-01-012025-06-300001443669us-gaap:CorporateAndOtherMember2025-01-012025-06-300001443669prlb:UnitedStatesSegmentMember2024-01-012024-06-300001443669prlb:EuropeSegmentMember2024-01-012024-06-300001443669us-gaap:CorporateAndOtherMember2024-01-012024-06-300001443669prlb:UnitedStatesSegmentMember2025-06-300001443669prlb:UnitedStatesSegmentMember2024-12-310001443669prlb:EuropeSegmentMember2025-06-300001443669prlb:EuropeSegmentMember2024-12-310001443669country:US2025-04-012025-06-300001443669country:US2024-04-012024-06-300001443669country:US2025-01-012025-06-300001443669country:US2024-01-012024-06-300001443669srt:EuropeMember2025-04-012025-06-300001443669srt:EuropeMember2024-04-012024-06-300001443669srt:EuropeMember2025-01-012025-06-300001443669srt:EuropeMember2024-01-012024-06-300001443669prlb:InjectionMoldingProtomoldMember2025-04-012025-06-300001443669prlb:InjectionMoldingProtomoldMember2024-04-012024-06-300001443669prlb:InjectionMoldingProtomoldMember2025-01-012025-06-300001443669prlb:InjectionMoldingProtomoldMember2024-01-012024-06-300001443669prlb:CNCMachiningFirstcutMember2025-04-012025-06-300001443669prlb:CNCMachiningFirstcutMember2024-04-012024-06-300001443669prlb:CNCMachiningFirstcutMember2025-01-012025-06-300001443669prlb:CNCMachiningFirstcutMember2024-01-012024-06-300001443669prlb:ThreeDPrintingFinelineMember2025-04-012025-06-300001443669prlb:ThreeDPrintingFinelineMember2024-04-012024-06-300001443669prlb:ThreeDPrintingFinelineMember2025-01-012025-06-300001443669prlb:ThreeDPrintingFinelineMember2024-01-012024-06-300001443669prlb:SheetMetalMember2025-04-012025-06-300001443669prlb:SheetMetalMember2024-04-012024-06-300001443669prlb:SheetMetalMember2025-01-012025-06-300001443669prlb:SheetMetalMember2024-01-012024-06-300001443669prlb:OtherProductsMember2025-04-012025-06-300001443669prlb:OtherProductsMember2024-04-012024-06-300001443669prlb:OtherProductsMember2025-01-012025-06-300001443669prlb:OtherProductsMember2024-01-012024-06-30
UNITED STATES
SECURITIES AND EXCHANGE COMMISSION
Washington, D.C. 20549
___________________________
FORM 10-Q
(Mark One)
þQUARTERLY REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934
For the quarterly period ended June 30, 2025
or
oTRANSITION REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934
For the transition period from ___________ to ___________
Commission File Number: 001-35435
Proto Labs, Inc.
(Exact name of registrant as specified in its charter)
Minnesota41-1939628
(State or other jurisdiction of incorporation or organization)(I.R.S. Employer Identification No.)
5540 Pioneer Creek Drive
Maple Plain, Minnesota
55359
(Address of principal executive offices)(Zip Code)
(763) 479-3680
(Registrant’s telephone number, including area code)
Not Applicable
(Former name, former address and former fiscal year, if changed since last report)
Securities registered pursuant to Section 12(b) of the Act:
Title of each classTrading Symbol(s)Name of each exchange on which registered
Common Stock, Par Value $0.001 Per SharePRLBNew York Stock Exchange
Indicate by check mark whether the registrant (1) has filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that the registrant was required to file such reports), and (2) has been subject to such filing requirements for the past 90 days. þYes oNo
Indicate by check mark whether the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files). þYes oNo
Indicate by check mark whether the registrant is a large accelerated filer, an accelerated filer, a non-accelerated filer, a smaller reporting company, or an emerging growth company. See the definitions of "large accelerated filer," "accelerated filer," "smaller reporting company," and "emerging growth company" in Rule 12b-2 of the Exchange Act.
Large accelerated filerþAccelerated filer o
Non-accelerated filero
Smaller reporting companyoEmerging growth companyo
If an emerging growth company, indicate by check mark if the registrant has elected not to use the extended transition period for complying with any new or revised financial accounting standards provided pursuant to Section 13(a) of the Exchange Act. o
Indicate by check mark whether the registrant is a shell company (as defined in Rule 12b-2 of the Exchange Act). oYes þNo
Indicate the number of shares outstanding of each of the issuer’s classes of common stock, as of the latest practicable date: 23,874,757 shares of Common Stock, par value $0.001 per share, were outstanding at July 29, 2025.


Proto Labs, Inc.
TABLE OF CONTENTS
1

PART I. FINANCIAL INFORMATION
Item 1. Financial Statements
Proto Labs, Inc.
Consolidated Balance Sheets
(In thousands, except share and per share amounts)
June 30,
2025
December 31,
2024
(Unaudited)
Assets
Current assets
Cash and cash equivalents$90,382 $89,071 
Short-term marketable securities12,804 14,019 
Accounts receivable, net of allowance for doubtful accounts of $2,272 and $1,975 as of June 30, 2025, and December 31, 2024, respectively
78,011 66,504 
Inventory13,169 12,305 
Income taxes receivable1,155 2,906 
Prepaid expenses and other current assets9,985 10,049 
Total current assets205,506 194,854 
Property and equipment, net215,777 227,263 
Goodwill273,991 273,991 
Other intangible assets, net20,500 21,422 
Long-term marketable securities20,037 17,773 
Operating lease assets2,308 2,993 
Finance lease assets558 692 
Other long-term assets4,575 4,524 
Total assets$743,252 $743,512 
Liabilities and shareholders' equity
Current liabilities  
Accounts payable$15,583 $15,504 
Accrued compensation19,435 16,550 
Accrued liabilities and other25,846 19,621 
Current operating lease liabilities984 1,287 
Current finance lease liabilities316 309 
Total current liabilities62,164 53,271 
Long-term operating lease liabilities1,402 1,633 
Long-term finance lease liabilities127 287 
Long-term deferred tax liabilities9,737 13,565 
Other long-term liabilities5,115 4,605 
Total liabilities78,545 73,361 
Shareholders' equity  
Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of each of June 30, 2025, and December 31, 2024
  
Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 23,874,601 and 24,226,088 shares as of June 30, 2025, and December 31, 2024, respectively
23 24 
Additional paid-in capital449,903 453,705 
Retained earnings239,344 244,406 
Accumulated other comprehensive loss(24,563)(27,984)
Total shareholders' equity664,707 670,151 
Total liabilities and shareholders' equity$743,252 $743,512 
The accompanying notes are an integral part of these consolidated financial statements.
2

Proto Labs, Inc.
Consolidated Statements of Comprehensive Income
(In thousands, except share and per share amounts)
(Unaudited)
Three Months Ended
June 30,
Six Months Ended
June 30,
2025202420252024
Statements of Operations:
Revenue$135,063 $125,631 $261,268 $253,521 
Cost of revenue75,289 69,085 145,796 139,508 
Gross profit59,774 56,546 115,472 114,013 
Operating expenses  
Marketing and sales24,731 23,291 48,480 46,451 
Research and development11,173 10,661 21,782 21,828 
General and administrative18,752 16,595 35,600 32,908 
Costs related to exit and disposal activities149  110  
Total operating expenses54,805 50,547 105,972 101,187 
Income from operations4,969 5,999 9,500 12,826 
Other income, net1,705 1,361 3,159 2,260 
Income before income taxes6,674 7,360 12,659 15,086 
Provision for income taxes2,247 2,820 4,633 5,278 
Net income$4,427 $4,540 $8,026 $9,808 
Net income per share:
Basic$0.19 $0.18 $0.33 $0.39 
Diluted$0.18 $0.18 $0.33 $0.38 
Shares used to compute net income per share:
Basic23,900,39025,313,03624,018,11925,473,937
Diluted24,101,59225,372,97224,291,24625,573,344
Comprehensive Income (net of tax)
Comprehensive income$6,755 $3,953 $11,447 $8,389 
The accompanying notes are an integral part of these consolidated financial statements.
3

Proto Labs, Inc.
Consolidated Statements of Shareholders' Equity
(In thousands, except share amounts)
Common StockAdditional
Paid-In
Capital
Retained
Earnings
Accumulated Other
Comprehensive
Loss
Total
SharesAmount
Balance at December 31, 202424,226,088$24 $453,705 $244,406 $(27,984)$670,151 
Common shares issued on exercise of options and other, net of shares withheld for tax obligations58,291 — (961)— — (961)
Stock-based compensation expense— — 3,992 — — 3,992 
Repurchases of common stock and other(513,739)(1)(9,621)(11,451)— (21,073)
 Net income— — — 3,599 — 3,599 
Other comprehensive income
Foreign currency translation adjustment— — — — 1,003 1,003 
Net unrealized gains on investments in securities— — — — 90 90 
 Comprehensive income    4,692 
Balance at March 31, 202523,770,640$23 $447,115 $236,554 $(26,891)$656,801 
Common shares issued on exercise of options and other, net of shares withheld for tax obligations179,393— (58)— — (58)
Stock-based compensation expense— 4,259 — — 4,259 
Repurchases of common stock and other(75,432)— (1,413)(1,637)— (3,050)
 Net income— — 4,427 — 4,427 
Other comprehensive income
Foreign currency translation adjustment— — — 2,300 2,300 
Net unrealized gains on investments in securities— — — 28 28 
 Comprehensive income6,755 
Balance at June 30, 202523,874,601$23 $449,903 $239,344 $(24,563)$664,707 
Common StockAdditional
Paid-In
Capital
Retained
Earnings
Accumulated Other
Comprehensive
Loss
Total
SharesAmount
Balance at December 31, 202325,721,957$26 $466,884 $256,398 $(28,013)$695,295 
Common shares issued on exercise of options and other, net of shares withheld for tax obligations29,974— (533)— — (533)
Stock-based compensation expense— — 4,276 — — 4,276 
Repurchases of common stock(435,861)— (7,912)(8,252)— (16,164)
 Net income— — — 5,268 — 5,268 
Other comprehensive income
Foreign currency translation adjustment— — — — (925)(925)
Net unrealized gains on investments in securities— — — — 93 93 
 Comprehensive income4,436 
Balance at March 31, 202425,316,070$26 $462,715 $253,414 $(28,845)$687,310 
Common shares issued on exercise of options and other, net of shares withheld for tax obligations176,780— 707 — — 707 
Stock-based compensation expense— — 4,244 — — 4,244 
Repurchases of common stock(345,234)— (6,266)(4,712)— (10,978)
 Net income— — 4,540 — 4,540 
Other comprehensive income
Foreign currency translation adjustment— — — — (678)(678)
Net unrealized gains on investments in securities— — — — 91 91 
 Comprehensive income3,953 
Balance at June 30, 202425,147,616$26 $461,400 $253,242 $(29,432)$685,236 
The accompanying notes are an integral part of these consolidated financial statements.
4

Proto Labs, Inc.
Consolidated Statements of Cash Flows
(In thousands)
(Unaudited)
Six Months Ended
June 30,
20252024
Operating activities
Net income$8,026 $9,808 
Adjustments to reconcile net income to net cash provided by operating activities:  
Depreciation and amortization17,264 18,075 
Stock-based compensation expense8,251 8,520 
Deferred taxes(3,985)(4,144)
Interest on finance lease obligations11 18 
Impairments related to exit and closure of facilities448  
Gain on disposal of property and equipment (20)
Other(82)64 
Changes in operating assets and liabilities:  
Accounts receivable(9,487)113 
Inventories(983)1,263 
Prepaid expenses and other338 (829)
Income taxes1,836 825 
Accounts payable(654)537 
Accrued liabilities and other7,980 1,551 
Net cash provided by operating activities28,963 35,781 
Investing activities
Purchases of property, equipment and other capital assets(2,730)(6,784)
Proceeds from sales of property, equipment and other capital assets 30 
Purchases of marketable securities(11,052) 
Proceeds from call redemptions and maturities of marketable securities10,230 10,419 
Net cash (used in) provided by investing activities(3,552)3,665 
Financing activities
Proceeds from issuance of common stock from equity plans2,081 2,094 
Purchases of shares withheld for tax obligations(3,117)(1,920)
Repurchases of common stock(23,980)(26,940)
Principal repayments of finance lease obligations(153)(146)
Net cash used in financing activities(25,169)(26,912)
Effect of exchange rate changes on cash and cash equivalents1,069 (175)
Net increase in cash and cash equivalents1,311 12,359 
Cash and cash equivalents, beginning of period89,071 83,790 
Cash and cash equivalents, end of period$90,382 $96,149 
The accompanying notes are an integral part of these consolidated financial statements.
5

Notes to Consolidated Financial Statements
Note 1 – Basis of Presentation
The unaudited interim Consolidated Financial Statements of Proto Labs, Inc. (Protolabs, the Company, we, us or our) have been prepared in accordance with accounting principles generally accepted in the United States of America (U.S. GAAP) for interim financial information and with the instructions to Form 10-Q and Article 10 of Regulation S-X. In the opinion of management, the accompanying financial statements reflect all adjustments necessary for a fair presentation of the Company’s statements of financial position, results of operations and cash flows for the periods presented. Except as otherwise disclosed herein, these adjustments consist of normal, recurring items. Operating results for interim periods are not necessarily indicative of results that may be expected for the fiscal year as a whole.
The preparation of the financial statements in conformity with U.S. GAAP requires management to make estimates and assumptions that affect the reported amounts of assets, liabilities, revenues, expenses, and the related disclosures at the date of the financial statements and during the reporting period. Actual results could materially differ from these estimates. For further information, refer to the audited Consolidated Financial Statements and Notes thereto included in the Company’s Annual Report on Form 10-K for the year ended December 31, 2024, as filed with the Securities and Exchange Commission (SEC) on February 21, 2025.
The accompanying Consolidated Balance Sheet as of December 31, 2024 was derived from the audited Consolidated Financial Statements but does not include all disclosures required by U.S. GAAP for a full set of financial statements. This Quarterly Report on Form 10-Q should be read in conjunction with the Company’s Consolidated Financial Statements and Notes included in the Company's Annual Report on Form 10-K filed on February 21, 2025 as referenced above.
Note 2 – Recent Accounting Pronouncements
The Company did not recently adopt any accounting pronouncements that had a material impact on the Company's Consolidated Financial Statements.
In December 2023, the Financial Accounting Standards Board (FASB) issued Accounting Standards Update (ASU) No. 2023-09, Income Taxes (Topic 740): Improvements to Income Tax Disclosures, that enhances the transparency of income tax disclosures by expanding annual disclosure requirements related to the rate reconciliation and income taxes paid. The Company is required to adopt this guidance for its annual year ending December 31, 2025. Early adoption is permitted. The Company is currently evaluating the impact of this guidance on its disclosures.
In November 2024, the FASB issued ASU No. 2024-03, Income Statement - Reporting Comprehensive Income - Expense Disaggregation Disclosures (Subtopic 220-40): Disaggregation of Income Statement Expenses, which is intended to improve disclosures about a public business entity's expenses, primarily through additional disaggregation of income statement expenses. ASU 2024-03 is effective for annual periods beginning after December 15, 2026, and interim periods beginning after December 15, 2027, with early adoption permitted. The Company is currently evaluating ASU 2024-03 to determine the impact on the Company's disclosures.
Note 3 – Net Income per Common Share
Basic net income per share is computed based on the weighted-average number of common shares outstanding. Diluted net income per share is computed based on the weighted-average number of common shares outstanding, increased by the number of additional shares that would have been outstanding had potentially dilutive common shares been issued and reduced by the number of shares the Company could have repurchased from the proceeds from issuance of the potentially dilutive shares. Potentially dilutive shares of common stock include stock options and other stock-based awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan. Performance stock units are excluded from the calculation of dilutive potential common shares until the performance conditions have been satisfied. Anti-dilutive options were excluded from the calculation of diluted weighted average shares outstanding and were 459,386 and 452,239 for the three months ended June 30, 2025 and 2024, respectively, and 446,174 and 371,313 for the six months ended June 30, 2025 and 2024, respectively.
6

The table below sets forth the computation of basic and diluted net income per share:
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands, except share and per share amounts)2025202420252024
Net income$4,427 $4,540 $8,026 $9,808 
Basic - weighted-average shares outstanding:23,900,39025,313,03624,018,11925,473,937
Effect of dilutive securities:
Employee stock options and other201,20259,936273,12799,407
Diluted - weighted-average shares outstanding:24,101,59225,372,97224,291,24625,573,344
Net income per share:
Basic$0.19 $0.18 $0.33 $0.39 
Diluted$0.18 $0.18 $0.33 $0.38 
Note 4 – Goodwill and Other Intangible Assets
There were no changes in the carrying amount of goodwill during the three and six months ended June 30, 2025.
Intangible assets other than goodwill at June 30, 2025 and December 31, 2024 were as follows:
June 30, 2025December 31, 2024Useful
Life (in years)
Weighted Average
Useful Life Remaining
(in years)
(in thousands)GrossAccumulated
Amortization
NetGrossAccumulated
Amortization
Net
Intangible assets with finite lives:
Non-compete agreement$851 $(786)$65 $819 $(703)$116 
2.0 - 5.0
0.4
Software technology13,229 (9,808)3,421 13,229 (9,123)4,106 10.02.5
Software platform27,135 (10,121)17,014 25,657 (8,457)17,200 12.07.6
Total intangible assets$41,215 $(20,715)$20,500 $39,705 $(18,283)$21,422 
Intangible assets allocated to the Protolabs Network entities consisted of intangible assets of €11.6 million in Europe and $16.6 million in the United States as of the date of the acquisition. The Euro denominated intangible assets are translated at the end of each period using the current exchange rates resulting in a foreign currency translation adjustment that is recorded as a component of Other Comprehensive Income. Foreign currency unrealized losses related to intangible assets were $0.5 million and $2.2 million as of June 30, 2025 and December 31, 2024, respectively. Amortization expense for intangible assets was $0.9 million for each of the three months ended June 30, 2025 and 2024, and $1.8 million and $1.9 million for the six months ended June 30, 2025 and 2024.
7

Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets and current exchange rates is as follows:
(in thousands)Estimated Amortization Expense
Remaining 2025$1,862
20263,622
20273,613
20282,244
20292,244
Thereafter6,915
Total estimated amortization expense$20,500
Note 5 – Fair Value Measurements
Accounting Standards Codification, Fair Value Measurement (ASC 820), defines fair value as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. ASC 820 also establishes a fair value hierarchy that requires classification based on observable and unobservable inputs when measuring fair value. There are three levels of inputs that may be used to measure fair value:
Level 1Quoted prices in active markets for identical assets or liabilities.
Level 2Observable inputs other than Level 1 prices such as quoted prices for similar assets or liabilities; quoted prices in markets that are not active; or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the assets or liabilities.
Level 3Unobservable inputs that are supported by little or no market activity and that are significant to the fair value of the assets or liabilities.
The Company's assets and liabilities that are required to be measured or disclosed at fair value on a recurring basis include cash and cash equivalents and marketable securities. The Company’s cash consists of bank deposits and cash equivalents consist primarily of money market mutual funds. The Company determines the fair value of these investments using Level 1 inputs. The Company's marketable securities consist of short-term and long-term agency, municipal, corporate and other debt securities. Fair value for the corporate debt securities is primarily determined based on quoted market prices (Level 1). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level 2).
The following table summarizes financial assets as of June 30, 2025 and December 31, 2024 measured at fair value on a recurring basis:
June 30, 2025December 31, 2024
(in thousands)Level 1Level 2Level 3Level 1Level 2Level 3
Financial Assets:
Cash$82,748 $ $ $86,366 $ $ 
Money market mutual fund7,634   2,705   
Marketable securities16,270 16,571  17,261 14,531  
Total$106,652 $16,571 $ $106,332 $14,531 $ 
8

Note 6 – Marketable Securities
The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. The securities are categorized as available-for-sale and are recorded at fair value. The following table summarizes information regarding the Company’s short-term and long-term marketable securities as of June 30, 2025 and December 31, 2024:
June 30, 2025
(in thousands)CostUnrealized GainsUnrealized LossesFair Value
U.S. government agency securities$1,000 $3 $ $1,003 
Corporate debt securities15,914 2 (27)15,889 
U.S. municipal securities8,954 17 (8)8,963 
U.S. treasury bonds7,000 1 (15)6,986 
Total marketable securities$32,868 $23 $(50)$32,841 
December 31, 2024
(in thousands)CostUnrealized GainsUnrealized LossesFair Value
U.S. government agency securities$8,323 $ $(22)$8,301 
Corporate debt securities15,852  (82)15,770 
U.S. municipal securities6,762  (38)6,724 
U.S. treasury bonds1,000  (3)997 
Total marketable securities$31,937 $ $(145)$31,792 
Fair values for the corporate debt securities are primarily determined based on quoted market prices (Level 1). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level 2).
Classification of marketable securities as current or non-current is based upon the security’s maturity date as of the date of these financial statements.
The June 30, 2025 balance of available-for-sale debt securities by contractual maturity is shown in the following table at fair value. Actual maturities may differ from contractual maturities because the issuers of the securities may have the right to prepay obligations without prepayment penalties.
(in thousands)June 30,
2025
Due in one year or less$12,804 
Due after one year through five years20,037 
Total marketable securities$32,841 
Note 7 – Inventory
Inventory consists primarily of raw materials, which are recorded at the lower of cost and net realizable value using the standard cost method, which approximates first-in, first-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.
9

The Company’s inventory consisted of the following as of the dates indicated:
(in thousands)June 30,
2025
December 31,
2024
Total inventory$13,886 $12,989 
Allowance for obsolescence(717)(684)
Inventory, net of allowance$13,169 $12,305 
Note 8 – Stock-Based Compensation
On July 8, 2022, the board of directors approved the Proto Labs, Inc. 2022 Long-Term Incentive Plan, which was approved by the Company's shareholders at a Special Meeting of Shareholders on August 29, 2022, and subsequently amended and restated by the Company's shareholders at the Annual Meeting of Shareholders on May 23, 2024 (as amended and restated, and subsequently further amended, the 2022 Plan) to increase the number of shares available for issuance pursuant to awards under the 2022 Plan by an additional 430,000 shares, add a minimum vesting requirement, and extend the expiration date so that the term of the 2022 Plan runs for ten years from the date of the shareholder approval. On May 20, 2025, the Company's shareholders approved an amendment to the 2022 Plan to increase the number of shares available for issuance pursuant to awards under the 2022 Plan by an additional 296,000 shares. Under the 2022 Plan, the Company has the ability to grant stock options, stock appreciation rights (SARs), restricted stock, restricted stock units, other stock-based awards and cash incentive awards. Awards under the 2022 Plan have a maximum term of ten years from the date of grant. The compensation and talent committee may provide that the vesting or payment of any award will be subject to the attainment of specified performance measures in addition to the satisfaction of any continued service requirements and the compensation and talent committee will determine whether such measures have been achieved. The per-share exercise price of stock options and SARs granted under the 2022 Plan generally may not be less than the fair market value of a share of our common stock on the date of the grant.
The Company also has outstanding awards under the 2012 Long-Term Incentive Plan, as amended (the 2012 Plan), although the plan expired in February 2022 and no additional awards have since been or will be made under the 2012 Plan. The 2012 Plan provided the Company the ability to grant stock options, SARs, restricted stock, restricted stock units, other stock-based awards and cash incentive awards. Awards under the 2012 Plan that subsequently expired, were forfeited or cancelled, or settled in cash after August 29, 2022 became available for awards under the 2022 Plan.
On May 23, 2025, the Company granted one-time inducement awards (the "Inducement Awards") within the meaning of the New York Stock Exchange Listed Company Manual Section 303A.08 to the Company's incoming Chief Executive Officer. The Inducement Awards were not granted under the 2022 Plan, but have the same terms and conditions as equity awards granted under the 2022 Plan, except as otherwise provided in the award agreements.
Employee Stock Purchase Plan
The Company’s 2012 Employee Stock Purchase Plan (ESPP) allows eligible employees to purchase a variable number of shares of the Company’s common stock each offering period at a discount through payroll deductions of up to 15 percent of their eligible compensation, subject to plan limitations. The ESPP provides for six-month offering periods with a single purchase period ending May 15 and November 15, respectively. At the end of each offering period, employees are able to purchase shares at 85 percent of the lower of the fair market value of the Company’s common stock on the first trading day of the offering period or on the last trading day of the offering period.
Stock-Based Compensation Expense
Stock-based compensation expense was $4.3 million and $4.2 million for the three months ended June 30, 2025 and 2024, respectively, and $8.3 million and $8.5 million for the six months ended June 30, 2025 and 2024, respectively.
10

Stock Options
The following table summarizes stock option activity during the six months ended June 30, 2025:
Stock OptionsWeighted-
Average
Exercise Price
Options outstanding at December 31, 2024445,136$51.34 
Granted139,87239.32 
Exercised(8,762)33.77 
Forfeited(93,350)37.31 
Expired(16,354)87.74 
Options outstanding at June 30, 2025466,542$49.60 
Exercisable at June 30, 2025254,268$60.44 
The outstanding options generally have a term of ten years. For employees, options granted become exercisable ratably over the vesting period, which is generally a period of four years, beginning on the first anniversary of the grant date, subject to the employee’s continuing service to the Company.
The weighted-average grant date fair value of options that were granted during the six months ended June 30, 2025 was $21.81.
The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the six months ended June 30, 2025 and 2024:
Six Months Ended
June 30,
20252024
Risk-free interest rate
4.13% - 4.17%
4.28% - 4.30%
Expected life (years)
6.25
6.25
Expected volatility
52.12% - 52.99%
50.62% - 50.72%
Expected dividend yield0%0%
As of June 30, 2025, there was $3.9 million of unrecognized compensation expense related to unvested stock options, which is expected to be recognized over a weighted-average period of 3.1 years.
Restricted Stock Units
Restricted stock unit (RSU) awards are share-settled awards and restrictions lapse ratably over the vesting period, which is generally a period from three to four years, beginning on the first anniversary of the grant date, subject to the employee's continuing service to the Company. For the board of directors, restrictions generally lapse in full on the first anniversary of the grant date.
11

The following table summarizes restricted stock units activity during the six months ended June 30, 2025:
Restricted
Stock Units
Weighted-
Average
Grant Date
Fair Value
Per Share
Restricted stock units at December 31, 2024763,261$38.25 
Granted278,50039.95 
Restrictions lapsed(212,421)40.55 
Forfeited(85,562)36.57 
Restricted stock units at June 30, 2025743,778$38.42 
As of June 30, 2025, there was $21.7 million of unrecognized compensation expense related to non-vested restricted stock units, which is expected to be recognized over a weighted-average period of 2.9 years.
Performance Stock Units
Performance stock units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between 0 percent and 200 percent of that target number capable of being earned and vesting at the end of a three-year performance period depending on the Company’s performance in the final year of the performance period and the award recipient’s continued employment. The Company’s PSUs are based on market conditions and the related compensation cost is based on the fair value at grant date calculated using a Monte Carlo pricing model.
The following table summarizes performance stock units activity during the six months ended June 30, 2025:
Performance
Stock Units
Weighted-
Average
Grant Date
Fair Value
Per Share
Performance stock units at December 31, 2024180,173$60.75 
Granted1
153,50359.71 
Restrictions lapsed(32,977)96.41
Performance change 
Forfeited(68,887)57
Performance stock units at June 30, 2025231,812$56.17 
1 Includes a target number of 54,320 PSUs granted as part of the May 23, 2025, Inducement Awards, 27,160 of which have the same market condition as the PSUs granted under the 2022 Plan as described above, and 27,160 of which also include a performance condition with anywhere between 0 percent and 100 percent of the target number capable of being achieved during two six-month performance periods and then anywhere between 0 percent and 200 percent of such achieved PSUs capable of being earned and vesting during a three-year performance period depending on the Company's performance in the final year of the performance period and the award recipient's continued employment.
12


The following table provides the assumptions used in the Monte Carlo pricing model valuation of PSUs during the six months ended June 30, 2025 and 2024:
Six Months Ended
June 30,
20252024
Risk-free interest rate
3.98% - 4.08%
4.37%
Expected life (years)
2.61 - 2.85
2.88
Expected volatility
52.40% - 53.20%
51.40%
Expected dividend yield0%0%
As of June 30, 2025, there was $8.6 million of unrecognized compensation expense related to non-vested performance stock units, which is expected to be recognized over a weighted-average period of 2.3 years.
Employee Stock Purchase Plan
The following table presents the assumptions used to estimate the fair value of the ESPP during the six months ended June 30, 2025 and 2024:
Six Months Ended
June 30,
20252024
Risk-free interest rate
4.29%
5.07% - 5.16%
Expected life (months)6.006.00
Expected volatility
65.60%
30.97% - 47.92%
Expected dividend yield0%0%
13

Note 9 – Accumulated Other Comprehensive Income (Loss)
Other comprehensive income (loss) is comprised of foreign currency translation adjustments and net unrealized gains (losses) on investments in securities.
The following table presents the changes in accumulated other comprehensive income (loss) balances during the three and six months ended June 30, 2025 and 2024:
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2025202420252024
Balance at beginning of period$(26,891)$(28,845)$(27,984)$(28,013)
Foreign currency translation adjustments
Other comprehensive income (loss) before reclassifications2,300 (678)3,303 (1,603)
Amounts reclassified from accumulated other comprehensive loss   - 
Net current-period other comprehensive income (loss)2,300 (678)3,303 (1,603)
Net unrealized gains on investments in securities
Other comprehensive income before reclassifications28 91 118 184 
Amounts reclassified from accumulated other comprehensive loss    
Net current-period other comprehensive income28 91 118 184 
Balance at end of period$(24,563)$(29,432)$(24,563)$(29,432)
Note 10 – Income Taxes
The Company is subject to income tax in multiple jurisdictions and the use of estimates is required to determine the provision for income taxes. For the three months ended June 30, 2025 and 2024, the Company recorded an income tax provision of $2.2 million and $2.8 million, respectively. For the six months ended June 30, 2025 and 2024, the Company recorded an income tax provision of $4.6 million and $5.3 million, respectively. The income tax provision is based on the estimated annual effective tax rate for the year applied to pre-tax income. The effective income tax rate for the three months ended June 30, 2025 was 33.7 percent compared to 38.3 percent in the same period of the prior year. The effective tax rate decreased by 4.6 percent for the three months ended June 30, 2025 when compared to the same period in 2024, primarily due to a decrease in tax expense from the vesting of restricted stock units and the exercise of stock options. The effective income tax rate for the six months ended June 30, 2025 was 36.6 percent compared to 35.0 percent in the same period of the prior year. The effective tax rate increased by 1.6 percent for the six months ended June 30, 2025 when compared to the same period in 2024, primarily due to an increase in losses in jurisdictions that are not eligible for tax benefits due to valuation allowances.
The effective income tax rate for the three and six months ended June 30, 2025 differs from the U.S. federal statutory rate of 21.0 percent due to various factors, including operating in multiple state and foreign jurisdictions partially offset by tax credits for which the Company qualifies.
The Company had unrecognized tax benefits totaling $3.7 million as of June 30, 2025 and $3.4 million as of December 31, 2024, respectively, that if recognized would result in a reduction of the Company’s effective tax rate. The liabilities are classified as other long-term liabilities in the accompanying consolidated balance sheets. The Company recognizes interest and penalties related to income tax matters in income tax expense and reports the liability in current or long-term income taxes payable as appropriate.
14

On July 4, 2025, the U.S. enacted H.R. 1 "A bill to provide for reconciliation pursuant to Title II of H. Con. Res. 14", commonly referred to as the One Big Beautiful Bill Act (OBBBA). Changes in tax laws may affect recorded deferred tax assets and deferred tax liabilities and our effective tax rate in the future and we continue to evaluate the impacts the new legislation will have on the Condensed Consolidated Financial Statements. As a result of the enactment of H.R. 1, we anticipate an impact to the deferred tax liability and the income tax payable related to the provisions for 100% bonus depreciation for assets placed in service after January 19, 2025 and full expensing of domestic research and experimental expenditures. We do not expect any material change to our ongoing tax rate as a result of this legislation.
Note 11 – Segment Reporting
The Company’s reportable segments are based on the internal reporting used by the Company’s Chief Executive Officer, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Company’s reportable segments are based upon geographic region, consisting of the United States and Europe. The Corporate Unallocated category includes non-reportable segments, as well as research and development and general and administrative costs that the Company does not allocate directly to its operating segments.
Intercompany transactions primarily relate to intercontinental activity and have been eliminated and are excluded from the reported amounts. The difference between income from operations and pre-tax income relates to foreign currency-related gains and losses and interest income on cash balances and investments, which are not allocated to business segments.
15

The following table summarizes selected financial information by reportable segments:
Three Months Ended June 30, 2025
(in thousands)
United StatesEuropeCorporate UnallocatedTotal
Revenue$110,712 $24,351 $ $135,063 
Segment expenses1
83,025 29,170 17,750 129,945 
Exit, Disposal and Goodwill impairment costs 149  149 
Income (Loss) from Operations$27,687 $(4,968)$(17,750)$4,969 
Three Months Ended June 30, 2024
(in thousands)
United StatesEuropeCorporate UnallocatedTotal
Revenue$98,541 $27,090 $ $125,631 
Segment expenses1
74,300 28,822 16,510 119,632 
Exit, Disposal and Goodwill impairment costs    
Income (Loss) from Operations$24,241 $(1,732)$(16,510)$5,999 
Six Months Ended June 30, 2025
(in thousands)
United StatesEuropeCorporate UnallocatedTotal
Revenue$210,979 $50,289 $ $261,268 
Segment expenses1
157,795 58,970 34,893 251,658 
Exit, Disposal and Goodwill impairment costs 110  110 
Income (Loss) from Operations$53,184 $(8,791)$(34,893)$9,500 
Six Months Ended June 30, 2024
(in thousands)
United StatesEuropeCorporate UnallocatedTotal
Revenue$200,022 $53,499 $ $253,521 
Segment expenses1
149,449 57,675 33,571 240,695 
Exit, Disposal and Goodwill impairment costs    
Income (Loss) from Operations$50,573 $(4,176)$(33,571)$12,826 
1 Segment expenses consist primarily of raw materials, equipment depreciation, employee compensation including benefits, commissions and stock-based compensation, facilities costs and overhead allocations associated with the manufacturing process for molds and custom parts, marketing programs such as electronic, print and pay-per-click advertising and trade shows and other related costs for our United States and Europe reportable segments. Segment expenses for our Corporate Unallocated reportable segment consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements of existing product
16

lines, software developed for internal use, maintenance of internally developed software, quality assurance and testing, employee compensation including benefits and stock-based compensation, severance, professional service fees related to accounting, tax and legal, and other related overhead costs.
Total long-lived assets, expenditures for additions to long-lived assets, and depreciation and amortization expense were as follows:
(in thousands)June 30,
2025
December 31,
2024
Total long-lived assets:
United States$171,170 $181,291 
Europe44,607 45,972 
Total Long-lived Assets$215,777 $227,263 
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2025202420252024
Expenditures for additions to long-lived assets:
United States$1,125 $3,532 $2,293 $4,366 
Europe343 665 437 2,418 
Total expenditures for additions to long-lived assets$1,468 $4,197 $2,730 $6,784 
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2025202420252024
Depreciation and Amortization:
United States$7,003 $7,186 $14,012 $14,511 
Europe1,484 1,732 3,090 3,476 
Corporate Unallocated83 54 $162 $88 
Total depreciation and amortization$8,570 $8,972 $17,264 $18,075 
Revenue by product line the three and six months ended June 30, 2025 and 2024 were as follows:
Three Months Ended
June 30,
Six Months Ended
June 30,
(dollars in thousands)2025202420252024
Revenue:
Injection Molding$47,415 $49,080 $96,138 $101,743 
CNC Machining61,945 51,239 114,788 101,171 
3D Printing21,215 21,281 41,409 42,863 
Sheet Metal4,303 3,922 8,514 7,475 
Other Revenue185 109 419 269 
Total Revenue$135,063 $125,631 $261,268 $253,521 
17

Item 2. Management’s Discussion and Analysis of Financial Condition and Results of Operations
The following discussion and analysis of our financial condition and results of operations should be read in conjunction with our unaudited consolidated financial statements and related notes appearing elsewhere in this Quarterly Report on Form 10-Q and our Annual Report on Form 10-K for the year ended December 31, 2024.
Forward-Looking Statements
Statements contained in this report regarding matters that are not historical or current facts are “forward-looking statements” within the meaning of The Private Securities Litigation Reform Act of 1995. In some cases, you can identify forward-looking statements by the following words: “may,” “will,” “could,” “would,” “should,” “expect,” “intend,” “plan,” “anticipate,” “believe,” “estimate,” “predict,” “project,” “potential,” “continue,” “ongoing” or the negative of these terms or other comparable terminology, although not all forward-looking statements contain these words. These statements involve known and unknown risks, uncertainties and other factors that may cause our results to be materially different than those expressed or implied in such statements. Certain of these risk factors and others are described in Item 1A. “Risk Factors” of this Quarterly Report on Form 10-Q, as well as our most recent Annual Report on Form 10-K as filed with the Securities and Exchange Commission (SEC). Other unknown or unpredictable factors also could have material adverse effects on our future results. We cannot guarantee future results, levels of activity, performance or achievements. Accordingly, you should not place undue reliance on these forward-looking statements. Finally, we expressly disclaim any intent or obligation to update any forward-looking statements to reflect subsequent events or circumstances.
Overview
We are one of the world’s largest, fastest and most comprehensive digital manufacturers of custom parts. Our vision is accelerating innovation by revolutionizing manufacturing. Our mission is to shape the future by bringing customer ideas to life across every stage of their product cycle. We accomplish this by offering a variety of manufacturing capabilities fulfilled through a combination of owned manufacturing factories and a worldwide network of premium manufacturing partners. Our automated quoting and manufacturing systems are highly integrated with our manufacturing and fulfillment systems, which allow us to offer a vast array of manufacturing technologies in a variety of materials across a continuum of lead times and prices. Our technology-enabled digital engineering and manufacturing applications enable us to produce commercial-grade plastic, metal, and liquid silicone rubber parts in as fast as one day.
Our customers conduct the majority of their business with us via our Internet-based eCommerce platform. We target our products to the millions of product developers and engineers who use three-dimensional computer-aided design (3D CAD) software to design products across a diverse range of end-markets, to the procurement and supply chain professionals seeking to easily and efficiently source custom parts on-demand, and to a wide variety of customers seeking to purchase custom parts. We believe our use of advanced technologies enable us to offer significant advantages at competitive prices to many customers and is the primary reason we have become a leading supplier of custom parts.
We have established our operations in the United States and Europe. On October 21, 2024, the Company's board of directors approved a plan related to the Company's manufacturing facilities in Germany. The plan includes the closure of the Company's prototype injection molding manufacturing facility in Eschenlohe, Germany, and the discontinuation of Direct Metal Laser Sintering 3D printing services through its 3D printing facility in Putzbrunn, Germany. The Company expects to substantially complete the plan during fiscal year 2025. The Company intends to continue offering all of its manufacturing services to customers across Europe, including injection molding and metal 3D printing. These services will be fulfilled through internal manufacturing facilities and a network of manufacturing partners.
Our primary manufacturing product lines currently include Injection Molding, CNC Machining, 3D Printing and Sheet Metal. We continually seek to expand the range of sizes and geometric complexity of the parts we can make with these processes, to extend the variety of materials we are able to support, and to identify additional manufacturing processes to which we can apply our technology or incorporate into our manufacturing network in order to better serve the evolving preferences and needs of our customers. With the addition of the Protolabs Network in 2021, our global network of premium manufacturing partners significantly expands the breadth and depth of our manufacturing capabilities, enabling us to offer customers a wider variety of lead times and pricing options, and an expanded envelope of parts (complexity, size, etc.).
President and Chief Executive Officer Transition
On May 21, 2025, the Company announced that the Company’s board of directors appointed Suresh Krishna to serve as the Company’s President and Chief Executive Officer, effective May 20, 2025 (the “Transition Date”), succeeding Robert
18

Bodor, who ceased to be the President and Chief Executive Officer and a director of the Company effective as of May 20, 2025. The board also appointed Mr. Krishna to serve as a director of the Company, filling the vacancy left on the Board by Dr. Bodor’s departure, until the earlier of the Company’s 2026 annual meeting of shareholders and until his successor is elected and qualified, or until his earlier death, resignation, or removal.
Key Financial Measures and Trends
Revenue
Our operations are comprised of two geographic operating segments in the United States and Europe. On October 21, 2024, the Company's board of directors approved a plan related to the Company's manufacturing facilities in Germany. The plan includes the closure of the Company's prototype injection molding manufacturing facility in Eschenlohe, Germany, and the discontinuation of Direct Metal Laser Sintering 3D printing services through its 3D printing facility in Putzbrunn, Germany. The Company expects to substantially complete the plan during fiscal year 2025. The Company intends to continue offering all of its manufacturing services to customers across Europe, including injection molding and metal 3D printing. These services will be fulfilled through internal manufacturing facilities and a network of manufacturing partners.
Revenue is derived from the sale or parts fulfilled through our owned manufacturing factories and worldwide network of premium manufacturing partners. Our product lines consist of Injection Molding, CNC Machining, 3D Printing and Sheet Metal. Injection Molding revenue consists of sales of custom injection molds and injection-molded parts. CNC Machining revenue consists of sales of CNC-machined custom parts. 3D Printing revenue consists of sales of 3D-printed parts. Sheet Metal revenue consists of sales of fabricated sheet metal custom parts. Our revenue is generated from a diverse customer base and our historical and current efforts to increase revenue have been directed at gaining new customers and selling to our existing customer base by increasing marketing and selling activities, including:
expanding the breadth and scope of our products by adding more sizes and materials to our offerings;
the introduction of our 3D Printing product line through our acquisition of FineLine in 2014;
expanding 3D Printing to Europe through our acquisition of Alphaform in 2015;
the introduction of our Sheet Metal product line through our acquisition of Rapid Manufacturing Group, LLC in 2017;
continuously improving the usability of our product lines such as our web-centric applications; and
providing customers with on-demand access to a global network of premium manufacturing partners through our acquisition of Hubs in 2021.
The following table summarizes our unique customer contacts and revenue per customer contact:
Three Months Ended June 30,Six Months Ended June 30,
2025202420252024
Revenue (in thousands)$135,063 $125,631 $261,268 $253,521 
Customer contacts21,77522,45633,13634,338
Revenue per customer contact1
$6,203$5,595$7,885$7,383
1 Revenue per customer contact is calculated using the revenue recognized during the respective period divided by the actual number of customer contacts served during the same period. Customer contacts are product developers, engineers, procurement and supply chain professionals and other individuals who place an order, and that order is shipped and invoiced during the period. The Company believes revenue per customer contact is useful to investors in evaluating the underlying business trends and ongoing operating performance of the Company.
Cost of Revenue, Gross Profit and Gross Margin
Cost of revenue consists primarily of raw materials, equipment depreciation, employee compensation including benefits and stock-based compensation, facilities costs, overhead allocations associated with the manufacturing process for molds
19

and custom parts, and costs to procure parts through our network of premium manufacturing partners. We expect our personnel-related costs to increase in order to retain and attract top talent and remain competitive in the market. Overall, we expect cost of revenue to increase in absolute dollars.
We define gross profit as our revenue less our cost of revenue, and we define gross margin as gross profit expressed as a percentage of revenue. Our gross profit and gross margin are affected by many factors, including our mix of revenue produced in our internal manufacturing operations and outsourced to our external manufacturing partners, pricing, sales volume, manufacturing costs, the costs associated with increasing production capacity, the mix between domestic and foreign revenue sources, the mix of revenue by product line, and foreign currency exchange rates.
Operating Expenses
Operating expenses consist of marketing and sales, research and development and general and administrative expenses. Personnel-related costs are the most significant component in each of these categories.
Our business strategy is to continue to be a leading online and technology-enabled manufacturer of quick-turn, on-demand injection-molded, CNC-machined, 3D-printed and fabricated sheet metal custom parts for prototyping and low-volume production. In order to achieve our goals, we anticipate continued substantial investments in technology and personnel, resulting in increased operating expenses in the future.
Marketing and sales. Marketing and sales expense consists primarily of employee compensation, benefits, commissions, stock-based compensation, marketing demand generation costs such as electronic, print and pay-per-click advertising, trade shows and other related overhead. We expect sales and marketing expense to increase in the future as we increase the number of marketing and sales professionals and marketing demand generation costs targeted to increase our customer base and grow revenue.
Research and development. Research and development expense consists primarily of personnel and outside service costs related to the development of new processes and product lines, enhancement of existing product lines, development of software for internal use, maintenance of internally developed software, quality assurance and testing. Costs for internal use software are evaluated by project and capitalized where appropriate under ASC 350-40, Intangibles — Goodwill and Other, Internal-Use Software. We expect research and development expense to increase in the future as we seek to enhance our e-commerce interface technology, internal software and supporting business systems, and continue to expand our product lines.
General and administrative. General and administrative expense consists primarily of employee compensation, benefits, stock-based compensation, professional service fees related to accounting, tax and legal, and other related overhead. We expect general and administrative expense to increase in the future as we continue to grow and expand as a global organization.
Costs related to disposal and exit activities. Costs related to disposal and exit activities is driven by our decision to close certain manufacturing facilities in Germany. The expenses consist primarily of operating expenses, including employee severance, write-down of fixed assets and facility-related charges. Benefits may result from adjustments to initial estimates regarding the nature and timing of disposal and exit activities.
Other Income, net
Other income, net primarily consists of foreign currency-related gains and losses and interest income on cash balances and investments. Our foreign currency-related gains and losses will vary depending upon movements in underlying foreign currency exchange rates. Our interest income will vary each reporting period depending on our average cash balances during the period, composition of our marketable security portfolio and the current level of interest rates.
Provision for Income Taxes
Provision for income taxes is comprised of federal, state, local and foreign taxes based on pre-tax income. Overall, our effective tax rate for 2025 and beyond may differ from historical effective tax rates due to increases in losses in foreign operations that are not eligible for tax benefits on account of valuation allowances, as well as any future tax law changes that may impact our effective tax rate.
20

Results of Operations
The following table summarizes our results of operations and the related changes for the periods indicated. The results below are not necessarily indicative of the results for future periods.
Three Months Ended June 30,ChangeSix Months Ended June 30,Change
(dollars in thousands)20252024$%20252024$%
Revenue$135,063 100.0$125,631 100.0$9,432 7.5$261,268 100.0$253,521 100.0$7,747 3.1
Cost of revenue75,289 55.769,085 55.06,204 9.0145,796 55.8139,508 55.06,288 4.5
Gross profit59,774 44.356,546 45.03,228 5.7115,472 44.2114,013 45.01,459 1.3
Operating expenses
Marketing and sales24,731 18.323,291 18.51,440 6.248,480 18.646,451 18.32,029 4.4
Research and development11,173 8.310,661 8.5512 4.821,782 8.321,828 8.6(46)(0.2)
General and administrative18,752 13.916,595 13.22,157 13.035,600 13.632,908 13.02,692 8.2
Costs related to exit and disposal activities149 0.1— 149 (100.0)110 — 110 (100.0)
Total operating expenses54,805 40.650,547 40.24,258 8.4105,972 40.6101,187 39.94,785 4.7
Income from operations4,969 3.75,999 4.8(1,030)(17.2)9,500 3.612,826 5.1(3,326)(25.9)
Other income, net1,705 1.31,361 1.1344 25.33,159 1.22,260 0.9899 (39.8)
Income before income taxes6,674 4.97,360 5.9(686)(9.3)12,659 4.815,086 6.0(2,427)(16.1)
Provision for income taxes2,247 1.72,820 2.2(573)(20.3)4,633 1.85,278 2.1(645)(12.2)
Net income$4,427 3.3%$4,540 3.6%$(113)(2.5)%$8,026 3.1%$9,808 3.9%$(1,782)(18.2)%
Stock-based compensation expense included in the statements of operations data above for the three and six months ended June 30, 2025 and 2024 were as follows:
Three Months Ended June 30,Six Months Ended June 30,
(dollars in thousands)2025202420252024
Stock options, RSUs and PSUs$3,939 $3,938 $7,600 $7,893 
Employee stock purchase plan320 306 651 627 
Total stock-based compensation expense$4,259 $4,244 $8,251 $8,520 
Cost of revenue$424 $468 $884 $927 
Operating expenses:
  Marketing and sales808 819 1,586 1,651 
  Research and development735 667 1,360 1,360 
  General and administrative2,292 2,290 4,421 4,582 
Total stock-based compensation expense$4,259 $4,244 $8,251 $8,520 
21

Comparison of Three Months Ended June 30, 2025 and 2024
Revenue
Revenue by reportable segment and the related changes for the three months ended June 30, 2025 and 2024 were as follows:
Three Months Ended June 30,
20252024Change
(dollars in thousands)$% of Total Revenue$% of Total Revenue$%
Revenue:
United States$110,712 82.0 %$98,541 78.4 %$12,171 12.4 %
Europe24,351 18.0 %27,090 21.6 %(2,739)(10.1)
Total revenue$135,063 100.0%$125,631 100.0%$9,432 7.5%
Our revenue increased $9.4 million, or 7.5%, for the three months ended June 30, 2025 compared to the same period in 2024. The growth in revenue was primarily driven by an increase in average order value for our larger customers in the three months ended June 30, 2025 compared to the same period in 2024. By reportable segment, revenue in the United States increased $12.2 million, or 12.4%, for the three months ended June 30, 2025 compared to the same period in 2024. Revenue in Europe decreased $2.7 million, or 10.1%, for the three months ended June 30, 2025 compared to the same period in 2024. International revenue was favorably impacted by $1.3 million during the three months ended June 30, 2025 compared to the same period in 2024 as a result of foreign currency movements, primarily due to the strengthening of the British Pound and Euro relative to the United States Dollar.
During the three months ended June 30, 2025, we served 21,775 unique customer contacts, which is a decrease of 3.0% from the same period in 2024. During the three months ended June 30, 2025, our customer contacts served decreased while our revenue grew. This was primarily due to our mix of customers served in the quarter as compared to the same period in 2024 and our strategic focus to earn larger orders from our customers as we strive to be their supplier of choice by serving their custom parts needs through the comprehensive offer of our factory and the Protolabs Network. Our revenue per customer contact grew 10.9% for the three months ended June 30, 2025 compared to the same period in 2024.
Revenue by product line and the related changes for the three months ended June 30, 2025 and 2024 were as follows:
Three Months Ended June 30,
20252024Change
(dollars in thousands)$% of Total Revenue$% of Total Revenue$%
Revenue:
Injection Molding$47,415 35.1 %$49,080 39.1 %$(1,665)(3.4)%
CNC Machining61,945 45.9 %51,239 40.8 %10,706 20.9 
3D Printing21,215 15.7 %21,281 16.9 %(66)(0.3)
Sheet Metal4,303 3.2 %3,922 3.1 %381 9.7 
Other Revenue185 0.1 %109 0.1 %76 69.7 
Total Revenue$135,063 100.0 %$125,631 100.0 %$9,432 7.5 %
By product line, our revenue increase was driven by a 20.9% increase in CNC Machining revenue, a 9.7% increase in Sheet Metal revenue and a 69.7% increase in Other Revenue, partially offset by a 3.4% decrease in Injection Molding
22

revenue and a 0.3% decrease in 3D Printing revenue, in each case for the three months ended June 30, 2025 compared to the same period in 2024.
Cost of Revenue, Gross Profit and Gross Margin
Cost of Revenue. Cost of revenue increased $6.2 million, or 9.0%, for the three months ended June 30, 2025 compared to the same period in 2024, while revenue increased 7.5% for the three months ended June 30, 2025 compared to the same period in 2024. The increase in the cost of revenue of $6.2 million was primarily driven by higher revenue volumes resulting in increases of $4.0 million in raw material and production and fulfillment related costs, and $2.4 million in personnel and related costs, primarily due to overtime, medical related costs and incentive compensation, during the three months ended June 30, 2025 compared to the same period in 2024, partially offset by decreases in equipment and facility-related costs of $0.2 million.
Gross Profit and Gross Margin. Gross profit increased $3.2 million, or 5.7%, for the three months ended June 30, 2025 compared to the same period in 2024. Gross margin decreased from 45.0% in the three months ended June 30, 2024 to 44.3% in the three months ended June 30, 2025.
Operating Expenses, Other Income, net and Provision for Income Taxes
Marketing and Sales. Our marketing and sales expenses increased $1.4 million during the three months ended June 30, 2025 compared to the same period in 2024 primarily due to increases in personnel and related costs of $1.4 million, primarily due to merit increases and incentive compensation related to commissions.
Research and Development. Our research and development expenses increased $0.5 million, or 4.8%, during the three months ended June 30, 2025 compared to the same period in 2024 primarily due to increases in personnel and related costs of $0.8 million, primarily due to incentive compensation and contract labor, partially offset by decreases of $0.2 million in operating costs and $0.1 million in professional services.
General and Administrative. Our general and administrative expenses increased $2.2 million, or 13.0%, during the three months ended June 30, 2025 compared to the same period in 2024 primarily due to increases of $1.8 million in personnel and related costs, primarily related to the previously disclosed CEO transition that occurred during the three months ended June 30, 2025, $0.2 million in administrative costs and $0.2 million in professional services.
Costs related to exit and disposal. Our decision to exit and close certain operations in Germany resulted in a $0.2 million expense related to the write-down of fixed assets and $0.1 million in personnel and related cost benefits during the three months ended June 30, 2025. These items are the result of changes from the estimated amounts accrued in 2024 and the timing of employee separation payments. We had no costs related to exit and disposal activities during the three months ended June 30, 2024.
Other income, net. We recognized other income, net of $1.7 million for the three months ended June 30, 2025, an increase of $0.3 million compared to other income, net of $1.4 million for the three months ended June 30, 2024. Other income, net for the three months ended June 30, 2025 primarily consisted of $1.1 million in interest income on investments, $0.5 million of foreign currency gains and $0.1 million of other income. Other income, net for the three months ended June 30, 2024 primarily consisted of $1.5 million in interest income on investments and other income, partially offset by $0.1 million of foreign currency losses.
Provision for Income Taxes. Our effective tax rate of 33.7% for the three months ended June 30, 2025 decreased 4.6% compared to 38.3% for the same period in 2024. The decrease in the effective tax rate was primarily due to a decrease in tax expense from the vesting of restricted stock units and the exercise of stock options. Our income tax provision of $2.2 million for the three months ended June 30, 2025 decreased $0.6 million as compared to our income tax provision of $2.8 million for the same period in 2024.
23

Comparison of Six Months Ended June 30, 2025 and 2024
Revenue
Revenue by reportable segment and the related changes for the six months ended June 30, 2025 and 2024 were as follows:
Six Months Ended June 30,
20252024Change
(dollars in thousands)$% of Total Revenue$% of Total Revenue$%
Revenue:
United States$210,979 80.8 %$200,022 78.9 %$10,957 5.5 %
Europe50,289 19.3 %53,499 21.1 %(3,210)(6.0)
Total revenue$261,268 100.0%$253,521 100.0%$7,747 3.1%
Our revenue increased $7.7 million, or 3.1%, for the six months ended June 30, 2025 compared to the same period in 2024. By reportable segment, revenue in the United States increased $11.0 million, or 5.5%, for the six months ended June 30, 2025 compared to the same period in 2024. Revenue in Europe decreased $3.2 million, or 6.0% for the six months ended June 30, 2025 compared to the same period in 2024. International revenue was favorable impacted by $0.9 million during six months ended June 30, 2025 compared to the same period in 2024 as a result of foreign currency movements, primarily the strengthening of the British Pound and Euro relative to the United States Dollar.
During the six months ended June 30, 2025, we served 33,136 unique product developers and engineers, a decrease of 3.5% from the same period in 2024. During the six months ended June 30, 2025, our customer contacts served decreased while our revenue grew. This was primarily due to our mix of customers served during the six months ended June 30, 2025 as compared to the same period in 2024 and our strategic focus to earn larger orders from our customers as we strive to be their supplier of choice by serving their custom parts needs through the comprehensive offer of our factory and the Protolabs Network. Our revenue per customer contact grew 6.8% for the six months ended June 30, 2025 compared to the same period in 2024.
Revenue by product line and the related changes for the six months ended June 30, 2025 and 2024 were as follows:
Six Months Ended June 30,
20252024Change
(dollars in thousands)$% of Total Revenue$% of Total Revenue$%
Revenue:
Injection Molding$96,138 36.8 %$101,743 40.1 %$(5,605)(5.5)%
CNC Machining114,788 43.9 101,171 39.9 13,617 13.5 
3D Printing41,409 15.8 42,863 16.9 (1,454)(3.4)
Sheet Metal8,514 3.3 7,475 3.0 1,039 13.9 
Other Revenue419 0.2 269 0.1 150 55.8 
Total Revenue$261,268 100.0 %$253,521 100.0 %$7,747 3.1 %
By product line, our revenue increase was driven by a 13.5% increase in CNC Machining revenue, a 13.9% increase in Sheet Metal revenue and a 55.8% increase in Other Revenue, partially offset by a 5.5% decrease in Injection Molding revenue and a 3.4% decrease in 3D Printing revenue in each case for the six months ended June 30, 2025 compared to the same period in 2024.
Cost of Revenue, Gross Profit and Gross Margin
Cost of Revenue. Cost of revenue increased $6.3 million, or 4.5%, for the six months ended June 30, 2025 compared to the same period in 2024, which was higher than the rate of revenue increase of 3.1% for the six months ended June 30, 2025
24

compared to the same period in 2024. The increase in cost of revenue of $6.3 million was primarily driven by higher revenue volumes resulting in increases of $4.1 million in raw material and production and fulfillment related costs and $2.7 million in personnel and related costs, primarily due to overtime, medical related costs and incentive compensation, during the six months ended June 30, 2025 compared to the same period in 2024, partially offset by decreases in equipment and facility-related costs of $0.5 million.
Gross Profit and Gross Margin. Gross profit increased from $114.0 million in the six months ended June 30, 2024 to $115.5 million in the six months ended June 30, 2025. Gross margin decreased from 45.0% in the six months ended June 30, 2024 to 44.2% in the six months ended June 30, 2025.
Operating Expenses, Other Income, net and Provision for Income Taxes
Marketing and Sales. Our Marketing and sales expenses increased $2.0 million, or 4.4%, during the six months ended June 30, 2025 compared to the same period in 2024. The increase was driven by increases in personnel and related costs of $1.8 million, primarily due to merit increases and incentive compensation related to commissions, and marketing program cost increases of $0.2 million during the six months ended June 30, 2025 when compared to the same period in 2024.
Research and Development. Our research and development expenses during the six months ended June 30, 2025 compared to the same period in 2024 were flat primarily due to personnel and related cost increases of $0.4 million, primarily related to incentive compensation, being offset by decreases of $0.2 million in operating costs and $0.2 million in professional services.
General and Administrative. Our general and administrative expenses increased $2.7 million, or 8.2%, during the six months ended June 30, 2025 compared to the same period in 2024 primarily due to increases of $1.5 million in personnel and related costs, primarily related to the previously disclosed CEO transition that occurred during the six months ended June 30, 2025, $1.2 million in administrative costs and $0.2 million in professional services, partially offset by decreases of $0.1 million in stock-based compensation and $0.1 million intangible amortization costs.
Costs related to exit and disposal. Our decision to exit and close certain operations in Germany resulted in a $0.2 million expense related to the write-down of fixed assets and $0.1 million in personnel and related cost benefits during the six months ended June 30, 2025. These items are the result of changes from the estimated amounts accrued in 2024 and the timing of employee separation payments. We had no costs related to exit and disposal activities during the six months ended June 30, 2024.
Other loss, net. We recognized other income, net of $3.2 million for the six months ended June 30, 2025, an increase of $0.9 million compared to other income, net of $2.3 million for the six months ended June 30, 2024. Other income, net for the six months ended June 30, 2025 primarily consisted of $2.3 million in interest income on investments, $0.5 million of foreign currency gains and $0.4 million of other income. Other income, net for the six months ended June 30, 2024 primarily consisted of $2.6 million in interest income on investments and other income, partially offset by a $0.3 million of foreign currency losses.
Provision for Income Taxes. Our effective tax rate of 36.6% for the six months ended June 30, 2025 increased 1.6% compared to 35.0% for the same period in 2024. The increase in the effective tax rate is primarily due to an increase in losses in jurisdictions that are not eligible for tax benefits due to valuation allowances. Our income tax provision of $4.6 million for the six months ended June 30, 2025 decreased $0.6 million compared to our income tax provision of $5.3 million for the six months ended June 30, 2024.
25

Liquidity and Capital Resources
Cash Flows
The following table summarizes our cash flows during the six months ended June 30, 2025 and 2024:
Six Months Ended
June 30,
(dollars in thousands)20252024
Net cash provided by operating activities$28,963 $35,781 
Net cash (used in) provided by investing activities(3,552)3,665 
Net cash used in financing activities(25,169)(26,912)
Effect of exchange rate changes on cash and cash equivalents1,069 (175)
Net increase in cash and cash equivalents$1,311 $12,359 
Sources of Liquidity
Historically, we have primarily financed our operations and capital expenditures through cash flow from operations. We had cash and cash equivalents of $90.4 million as of June 30, 2025, an increase of $1.3 million from December 31, 2024. The increase in our cash was primarily due to cash provided by operating activities of $29.0 million and proceeds from call redemptions and maturities of marketable securities of $10.2 million, partially offset by $24.0 million in repurchases of common stock, $11.1 million for purchases of marketable securities and $2.7 million for purchases of property, equipment and other capital assets.
We believe that our existing cash and cash equivalents together with cash generated from operations will be sufficient to meet our working capital and capital expenditure requirements for at least the next 12 months.
Cash Flows from Operating Activities
Cash flows from operating activities were $29.0 million during the six months ended June 30, 2025 and primarily consisted of net income of $8.0 million, adjusted for certain non-cash items, including depreciation and amortization of $17.3 million, stock-based compensation expense of $8.3 million and an impairments on a leased facility and fixed assets of $0.4 million, which were partially offset by deferred taxes of $4.0 million and changes in operating assets and liabilities and other items totaling $1.0 million. Cash flows from operating activities were $35.8 million during the six months ended June 30, 2024 and primarily consisted of net income of $9.8 million, adjusted for certain non-cash items, including depreciation and amortization of $18.1 million, stock-based compensation expense of $8.5 million and changes in operating assets and liabilities and other items totaling $3.5 million, which were partially offset by deferred taxes of $4.1 million.
Cash flows from operating activities decreased $6.8 million during the six months ended June 30, 2025 compared to the same period in 2024, primarily due to changes in operating assets and liabilities and other items totaling $4.5 million, decreases in net income of $1.8 million, decreases in depreciation and amortization of $0.8 million, decreases in stock-based compensation of $0.3 million, which were partially offset by increases in other property and equipment adjustments of $0.4 million and deferred taxes of $0.2 million.
Cash Flows from Investing Activities
Cash used in investing activities was $3.6 million during the six months ended June 30, 2025, consisting of $2.7 million for net purchases of property, equipment and other capital assets and $0.8 million of purchases of marketable securities, net of proceeds from call redemptions and maturities.
Cash provided by investing activities was $3.7 million during the six months ended June 30, 2024, consisting of $10.4 million in proceeds from call redemptions and maturities of marketable securities, which were partially offset by $6.7 million for net purchases of property, equipment and other capital assets.
26

Cash Flows from Financing Activities
Cash used in financing activities was $25.2 million during the six months ended June 30, 2025, consisting of $24.0 million in repurchases of common stock, $3.1 million in purchases of shares withheld for tax obligations associated with equity transactions and $0.2 million for repayments of finance lease obligations, which were partially offset by $2.1 million in proceeds related to equity plans.
Cash used in financing activities was $26.9 million during the six months ended June 30, 2024, consisting of $26.9 million in repurchases of common stock, $1.9 million in purchases of shares withheld for tax obligations associated with equity transactions and $0.2 million for repayments of finance lease obligations, which were partially offset by $2.1 million in proceeds from issuance of common stock from equity plans.
Critical Accounting Estimates
We have adopted various accounting policies to prepare the Consolidated Financial Statements in accordance with accounting principles generally accepted in the United States of America (U.S. GAAP). The preparation of these financial statements requires us to make estimates, judgements and assumptions. Our significant accounting policies and estimates are disclosed in Note 2 to the Consolidated Financial Statements included Part II, Item 8 in our Annual Report on Form 10-K for the year ended December 31, 2024. There were no material changes to our critical accounting policies and estimates during the six months ended June 30, 2025.
Recent Accounting Pronouncements
For information on recent accounting pronouncements, see Note 2 to the Consolidated Financial Statements appearing in Part I, Item 1 in this Quarterly Report on Form 10-Q.
Item 3. Quantitative and Qualitative Disclosures about Market Risk
Foreign Currency Risk
As a result of our foreign operations, we have revenue, expenses, assets and liabilities that are denominated in foreign currencies. We generate revenue and incur production and sourcing costs and operating expenses in British Pounds and Euros.
Our operating results and cash flows are adversely impacted when the United States Dollar appreciates relative to foreign currencies. Additionally, our operating results and cash flows are adversely impacted when the British Pound appreciates relative to the Euro. As we expand internationally, our results of operations and cash flows will become increasingly subject to changes in foreign currency exchange rates.
We have not used forward contracts or currency borrowings to hedge our exposure to foreign currency risk. Foreign currency risk can be assessed by estimating the change in results of operations or financial position resulting from a hypothetical 10% adverse change in foreign exchange rates. We believe such a change would generally not have a material impact on our financial position, but could have a material impact on our results of operations. We recognized foreign currency gains of $0.5 million and foreign currency losses of $0.1 million for the three months ended June 30, 2025 and 2024, respectively. We recognized foreign currency gains of $0.5 million and foreign currency losses of $0.3 million for the six months ended June 30, 2025 and 2024, respectively. The changes in foreign exchange rates had a favorable impact on consolidated revenue of $1.3 million for the three months ended June 30, 2025 and a favorable impact on consolidated revenue of $0.8 million for the six months ended June 30, 2025 compared to the same period in 2024.
Item 4. Controls and Procedures
Evaluation of Disclosure Controls and Procedures
Our management, with the participation of our Chief Executive Officer and Chief Financial Officer, has evaluated the effectiveness of the design and operation of our disclosure controls and procedures (as defined in Rule 13a-15(e) under the Securities Exchange Act of 1934, as amended (the Exchange Act)) as of the end of the period covered by this report. Based upon that evaluation, the Chief Executive Officer and Chief Financial Officer have concluded that, as of the end of the period covered by this Quarterly Report on Form 10-Q, our disclosure controls and procedures are effective and provide reasonable assurance that information required to be disclosed by us in the reports that we file or submit under the Exchange Act is recorded, processed, summarized and reported accurately and within the time frames specified in the
27

SEC’s rules and forms and accumulated and communicated to our management, including our Chief Executive Officer and Chief Financial Officer, as appropriate to allow timely decisions regarding required disclosure.
Changes in Internal Control over Financial Reporting
There have been no changes in our internal control over financial reporting (as such term is defined in Rule 13a-15(f) under the Exchange Act) during the period covered by this report that have materially affected, or are reasonably likely to materially affect, our internal control over financial reporting.
PART II. OTHER INFORMATION
Item 1. Legal Proceedings
From time to time, we are subject to various legal proceedings and claims that arise in the ordinary course of our business activities. Although the results of litigation and claims cannot be predicted with certainty, as of the date of these financial statements, we do not believe we are party to any litigation the outcome of which, if determined adversely to us, would individually or in the aggregate be reasonably expected to have a material adverse effect on our business.
Item 1A. Risk Factors
Part I, Item 1A. “Risk Factors” in our Annual Report on Form 10-K for the year ended December 31, 2024 includes a discussion of our risk factors. There have been no material changes from the risk factors described in our Form 10-K.
Item 2. Unregistered Sales of Equity Securities and Use of Proceeds
On February 4, 2025, our board of directors authorized a share repurchase program (the February 2025 Program). The February 2025 Program is open-ended and authorizes repurchases of shares of our common stock from time to time on the open market or in privately negotiated purchases, with a total stock repurchase authorized of up to $100 million. We have $76.0 million remaining under this authorization. The February 2025 Program does not obligate us to acquire any particular amount of shares of our common stock and remains in effect until the total authorized amount is expended or until further action by our board of directors. The actual timing, manner, number and value of shares repurchased under the February 2025 Program will be determined by our management in its discretion and will depend on several factors, including the market price of the Company's common stock, general market and economic conditions, applicable requirements, and other considerations.
During the three months ended June 30, 2025, we repurchased 75,432 shares of our common stock at a total purchase price of $3.1 million under this program. Common stock repurchase activity through June 30, 2025 was as follows:
PeriodTotal Number of Shares PurchasedAverage Price Paid per ShareTotal Number of Shares Purchased as
Part of Publicly Announced Plans or
Programs
Maximum Dollar Value of Shares that
May Yet Be Purchased Under the Plans
or Programs (in thousands)
April 1, 2025 through April 30, 2025$— $79,125 
May 1, 2025 through May 31, 202575,432$40.97 75,432$76,035 
June 1, 2025 through June 30, 2025$— $76,035 
75,432$40.97 75,432$76,035 
Item 3. Defaults Upon Senior Securities
No matters to disclose.
Item 4. Mine Safety Disclosures
No matters to disclose.
28

Item 5. Other Information
During the three months ended June 30, 2025, none of our directors or officers (as defined in Rule 16a-1(f) of the Exchange Act) adopted, modified or terminated any contract, instruction or written plan for the purchase or sale of our securities that was intended to satisfy the affirmative defense conditions of Rule 10b5-1(c) of the Exchange Act or any non-Rule 10b5-1 trading arrangement (as defined in Item 408(c) of Regulation S-K).
Item 6. Exhibits
The following documents are filed or furnished, as applicable, as part of this Quarterly Report on Form 10-Q:
Exhibit NumberDescription of Exhibit
3.1
3.2
3.3
10.1
10.2
10.3
10.4
31.1
31.2
32.1
101.INSInline XBRL Instance Document (the Instance Document does not appear in the Interactive Data File because its XBRL tags are embedded within the Inline XBRL document)*
101.SCHInline XBRL Taxonomy Extension Schema Document*
101.CALInline XBRL Taxonomy Extension Calculation Linkbase Document*
101.DEFInline XBRL Taxonomy Extension Definition Linkbase Document*
101.LABInline XBRL Taxonomy Extension Label Linkbase Document*
101.PREInline XBRL Taxonomy Extension Presentation Linkbase Document*
104Cover Page Interactive Data File (formatted as Inline XBRL and contained in Exhibit 101)*
*Filed herewith.
**Furnished herewith.
29

SIGNATURE
Pursuant to the requirements of the Securities Exchange Act of 1934, the registrant has duly caused this report to be signed on its behalf by the undersigned thereunto duly authorized.
Proto Labs, Inc.
Date: July 31, 2025
/s/ Suresh Krishna
Suresh Krishna
President and Chief Executive Officer
(Principal Executive Officer)
Date: July 31, 2025
/s/ Daniel Schumacher
Daniel Schumacher
Chief Financial Officer
(Duly Authorized Officer, Principal Financial Officer and Principal Accounting Officer)
30
EX-31.1 2 prlb-2025630xexx311.htm EX-31.1 Document

Exhibit 31.1
CERTIFICATION PURSUANT TO RULE 13a-14(a) OR 15d-14(a) OF
THE SECURITIES EXCHANGE ACT OF 1934,
AS ADOPTED PURSUANT TO SECTION 302 OF
THE SARBANES-OXLEY ACT OF 2002
I, Suresh Krishna, certify that:
1.I have reviewed this Quarterly Report on Form 10-Q of Proto Labs, Inc.;
2.Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;
3.Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report;
4.The registrant’s other certifying officer and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the registrant and have:
a)Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;
b)Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;
c)Evaluated the effectiveness of the registrant’s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and
d)Disclosed in this report any change in the registrant’s internal control over financial reporting that occurred during the registrant’s most recent fiscal quarter (the registrant’s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant’s internal control over financial reporting;
5.The registrant’s other certifying officer and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant’s auditors and the audit committee of the registrant’s board of directors (or persons performing the equivalent functions):
a)All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant’s ability to record, process, summarize and report financial information; and
b)Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant’s internal control over financial reporting.
Date: July 31, 2025
By:/s/ Suresh Krishna
Suresh Krishna
President and Chief Executive Officer
(Principal Executive Officer)

EX-31.2 3 prlb-2025630xexx312.htm EX-31.2 Document

Exhibit 31.2
CERTIFICATION PURSUANT TO RULE 13a-14(a) OR 15d-14(a) OF
THE SECURITIES EXCHANGE ACT OF 1934,
AS ADOPTED PURSUANT TO SECTION 302 OF
THE SARBANES-OXLEY ACT OF 2002
I, Daniel Schumacher, certify that:
1.I have reviewed this Quarterly Report on Form 10-Q of Proto Labs, Inc.;
2.Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;
3.Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report;
4.The registrant’s other certifying officer and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the registrant and have:
a)Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;
b)Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;
c)Evaluated the effectiveness of the registrant’s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and
d)Disclosed in this report any change in the registrant’s internal control over financial reporting that occurred during the registrant’s most recent fiscal quarter (the registrant’s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant’s internal control over financial reporting;
5.The registrant’s other certifying officer and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant’s auditors and the audit committee of the registrant’s board of directors (or persons performing the equivalent functions):
a)All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant’s ability to record, process, summarize and report financial information; and
b)Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant’s internal control over financial reporting.
Date: July 31, 2025
By:/s/ Daniel Schumacher
Daniel Schumacher
Chief Financial Officer
(Principal Financial Officer)

EX-32.1 4 prlb-2025630xexx321.htm EX-32.1 Document

Exhibit 32.1
CERTIFICATION OF CHIEF EXECUTIVE OFFICER AND CHIEF FINANCIAL OFFICER
PURSUANT TO
18 U.S.C. SECTION 1350,
AS ADOPTED PURSUANT TO
SECTION 906 OF THE SARBANES-OXLEY ACT OF 2002
I, Suresh Krishna, certify, pursuant to 18 U.S.C. Section 1350, as adopted pursuant to Section 906 of the Sarbanes-Oxley Act of 2002, that the Quarterly Report of Proto Labs, Inc. on Form 10-Q for the fiscal quarter ended June 30, 2025 fully complies with the requirements of Section 13(a) or 15(d) of the Securities Exchange Act of 1934 and that information contained in such Quarterly Report on Form 10-Q fairly presents in all material respects the financial condition and results of operations of Proto Labs, Inc.
Date: July 31, 2025
By:/s/ Suresh Krishna
Name:Suresh Krishna
Title:President and Chief Executive Officer
I, Daniel Schumacher, certify, pursuant to 18 U.S.C. Section 1350, as adopted pursuant to Section 906 of the Sarbanes-Oxley Act of 2002, that the Quarterly Report of Proto Labs, Inc. on Form 10-Q for the fiscal quarter ended June 30, 2025 fully complies with the requirements of Section 13(a) or 15(d) of the Securities Exchange Act of 1934 and that information contained in such Quarterly Report on Form 10-Q fairly presents in all material respects the financial condition and results of operations of Proto Labs, Inc.
Date: July 31, 2025
By:/s/ Daniel Schumacher
Name:Daniel Schumacher
Title:Chief Financial Officer

EX-101.SCH 5 prlb-20250630.xsd XBRL TAXONOMY EXTENSION SCHEMA DOCUMENT 0000001 - Document - Cover link:presentationLink link:calculationLink link:definitionLink 9952151 - Statement - Consolidated Balance Sheets link:presentationLink link:calculationLink link:definitionLink 9952152 - Statement - Consolidated Balance Sheets (Parenthetical) link:presentationLink link:calculationLink link:definitionLink 9952153 - Statement - Consolidated Statements of Comprehensive Income link:presentationLink link:calculationLink link:definitionLink 9952154 - Statement - Consolidated Statements of Shareholders' Equity link:presentationLink link:calculationLink link:definitionLink 9952155 - Statement - Consolidated Statements of Cash Flows link:presentationLink link:calculationLink link:definitionLink 9952156 - Disclosure - Basis of Presentation link:presentationLink link:calculationLink link:definitionLink 9952157 - Disclosure - Recent Accounting Pronouncements link:presentationLink link:calculationLink link:definitionLink 9952158 - Disclosure - Net Income per Common Share link:presentationLink link:calculationLink link:definitionLink 9952159 - Disclosure - Goodwill and Other Intangible Assets link:presentationLink link:calculationLink link:definitionLink 9952160 - Disclosure - Fair Value Measurements link:presentationLink link:calculationLink link:definitionLink 9952161 - Disclosure - Marketable Securities link:presentationLink link:calculationLink link:definitionLink 9952162 - Disclosure - Inventory link:presentationLink link:calculationLink link:definitionLink 9952163 - Disclosure - Stock-Based Compensation link:presentationLink link:calculationLink link:definitionLink 9952164 - Disclosure - Accumulated Other Comprehensive Income (Loss) link:presentationLink link:calculationLink link:definitionLink 9952165 - Disclosure - Income Taxes link:presentationLink link:calculationLink link:definitionLink 9952166 - Disclosure - Segment Reporting link:presentationLink link:calculationLink link:definitionLink 9955511 - Disclosure - Net Income per Common Share (Tables) link:presentationLink link:calculationLink link:definitionLink 9955512 - Disclosure - Goodwill and Other Intangible Assets (Tables) link:presentationLink link:calculationLink link:definitionLink 9955513 - Disclosure - Fair Value Measurements (Tables) link:presentationLink link:calculationLink link:definitionLink 9955514 - Disclosure - Marketable Securities (Tables) link:presentationLink link:calculationLink link:definitionLink 9955515 - Disclosure - Inventory (Tables) link:presentationLink link:calculationLink link:definitionLink 9955516 - Disclosure - Stock-Based Compensation (Tables) link:presentationLink link:calculationLink link:definitionLink 9955517 - Disclosure - Accumulated Other Comprehensive Income (Loss) (Tables) link:presentationLink link:calculationLink link:definitionLink 9955518 - Disclosure - Segment Reporting (Tables) link:presentationLink link:calculationLink link:definitionLink 9955519 - Disclosure - Net Income per Common Share - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9955520 - Disclosure - Net Income per Common Share -Schedule of Computation Of Basic and Diluted Net Income Per Share (Details) link:presentationLink link:calculationLink link:definitionLink 9955521 - Disclosure - Goodwill and Other Intangible Assets - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9955522 - Disclosure - Goodwill and Other Intangible Assets - Schedule of Intangible Assets Other Than Goodwill (Details) link:presentationLink link:calculationLink link:definitionLink 9955523 - Disclosure - Goodwill and Other Intangible Assets - Schedule of Finite-Lived Intangible Assets, Future Amortization Expense (Details) link:presentationLink link:calculationLink link:definitionLink 9955524 - Disclosure - Fair Value Measurements (Details) link:presentationLink link:calculationLink link:definitionLink 9955525 - Disclosure - Marketable Securities - Short-Term and Long-Term Marketable Securities (Details) link:presentationLink link:calculationLink link:definitionLink 9955526 - Disclosure - Marketable Securities - Maturities of Available-For-Sale Debt Securities (Details) link:presentationLink link:calculationLink link:definitionLink 9955527 - Disclosure - Inventory (Details) link:presentationLink link:calculationLink link:definitionLink 9955528 - Disclosure - Stock-Based Compensation - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9955529 - Disclosure - Stock-Based Compensation - Option Activity (Details) link:presentationLink link:calculationLink link:definitionLink 9955530 - Disclosure - Stock-Based Compensation - Weighted Average Assumptions (Details) link:presentationLink link:calculationLink link:definitionLink 9955531 - Disclosure - Stock-Based Compensation - Stock Activity (Details) link:presentationLink link:calculationLink link:definitionLink 9955532 - Disclosure - Accumulated Other Comprehensive Income (Loss) (Details) link:presentationLink link:calculationLink link:definitionLink 9955533 - Disclosure - Income Taxes (Details) link:presentationLink link:calculationLink link:definitionLink 9955534 - Disclosure - Segment Reporting - Schedule of Reportable Segments (Details) link:presentationLink link:calculationLink link:definitionLink 9955535 - Disclosure - Segment Reporting - Schedule of Long-Lived Assets by Geographic Areas (Details) link:presentationLink link:calculationLink link:definitionLink 9955536 - Disclosure - Segment Reporting - Schedule of Expenditures For Additions To Long-Lived Assets (Details) link:presentationLink link:calculationLink link:definitionLink 9955537 - Disclosure - Segment Reporting - Schedule of Depreciation and Amortization (Details) link:presentationLink link:calculationLink link:definitionLink 9955538 - Disclosure - Segment Reporting - Schedule of Disaggregation of Revenue (Details) link:presentationLink link:calculationLink link:definitionLink EX-101.CAL 6 prlb-20250630_cal.xml XBRL TAXONOMY EXTENSION CALCULATION LINKBASE DOCUMENT EX-101.DEF 7 prlb-20250630_def.xml XBRL TAXONOMY EXTENSION DEFINITION LINKBASE DOCUMENT EX-101.LAB 8 prlb-20250630_lab.xml XBRL TAXONOMY EXTENSION LABEL LINKBASE DOCUMENT Accumulated Amortization Finite-Lived Intangible Assets, Accumulated Amortization Recent Accounting Pronouncements Significant Accounting Policies [Text Block] Statistical Measurement [Domain] Statistical Measurement [Domain] Schedule of Debt Securities, Available-for-Sale Debt Securities, Available-for-Sale [Table Text Block] Software platform Software Platform [Member] Information pertaining to software platform. Schedule of Nonvested Performance-Based Units Activity Schedule of Nonvested Performance-Based Units Activity [Table Text Block] Award Timing Predetermined Award Timing Predetermined [Flag] Asset Class [Axis] Asset Class [Axis] Entity File Number Entity File Number Additional Paid-In Capital Additional Paid-in Capital [Member] Performance change (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Performance Change, Weighted Average Grant Date Fair Value Represents the weighted average grant date fair value per share in connection to a performance change related to equity instruments other than options. Tabular List, Table Tabular List [Table Text Block] Intangible Asset, Acquired, Finite-Lived [Line Items] Intangible Asset, Acquired, Finite-Lived [Line Items] Accounts payable Increase (Decrease) in Accounts Payable Unrealized Losses Debt Securities, Available-for-Sale, Accumulated Gross Unrealized Loss, before Tax Trading Arrangements, by Individual Trading Arrangements, by Individual [Table] Basic (in dollars per share) Earnings Per Share, Basic Adjustment to Compensation: Adjustment to Compensation [Axis] Named Executive Officers, Footnote Named Executive Officers, Footnote [Text Block] Total inventory Inventory, Gross Schedule of Segment Reporting Information, by Segment Schedule of Segment Reporting Information, by Segment [Table Text Block] Inventory Disclosure [Abstract] Adjustment to Compensation, Amount Adjustment to Compensation Amount Stock-based compensation expense Share-Based Payment Arrangement, Noncash Expense 3D Hubs, Inc. (Hubs) 3D Hubs, Inc. (Hubs) [Member] Stock Options Share-Based Payment Arrangement, Option [Member] Impairments related to exit and closure of facilities Disposal Group, Not Discontinued Operation, Loss (Gain) on Write-down Award Timing MNPI Disclosure Award Timing MNPI Disclosure [Text Block] Proceeds from sales of property, equipment and other capital assets Proceeds from Sale of Productive Assets Total shareholders' equity Beginning balance Ending balance Equity, Attributable to Parent Other comprehensive income (loss) before reclassifications Other comprehensive income before reclassifications OCI, before Reclassifications, Net of Tax, Attributable to Parent Debt Securities, Available-for-Sale [Table] Debt Securities, Available-for-Sale [Table] Measurement Frequency [Axis] Measurement Frequency [Axis] Other comprehensive income Other Comprehensive Income (Loss), Net of Tax [Abstract] Insider Trading Policies and Procedures [Line Items] Stock-based compensation expense Share-Based Payment Arrangement, Expense Common stock, authorized (in shares) Common Stock, Shares Authorized Goodwill and Intangible Assets Disclosure [Abstract] Current assets Assets, Current [Abstract] Forfeited (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures in Period Total liabilities and shareholders' equity Liabilities and Equity Fair Value, Recurring Fair Value, Recurring [Member] Stock Options Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding [Roll Forward] Cash and cash equivalents, beginning of period Cash and cash equivalents, end of period Cash, Cash Equivalent, Restricted Cash, and Restricted Cash Equivalent, Including Discontinued Operation Liabilities and shareholders' equity Liabilities and Equity [Abstract] Cover [Abstract] Cover [Abstract] Amounts reclassified from accumulated other comprehensive loss Amounts reclassified from accumulated other comprehensive loss Reclassification from AOCI, Current Period, Net of Tax, Attributable to Parent Cash and cash equivalents Cash and Cash Equivalents, Fair Value Disclosure Maximum Maximum [Member] Options exercisable, weighted-average exercise price (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Weighted Average Exercise Price Useful Life (in years) Finite-Lived Intangible Asset, Useful Life Total expenditures for additions to long-lived assets Segment, Expenditure, Addition to Long-Lived Assets Accounting Policies [Abstract] Accounting Policies [Abstract] Net Finite-Lived Intangible Assets, Net Non-PEO NEO Average Total Compensation Amount Non-PEO NEO Average Total Compensation Amount Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table] Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table] Schedule of Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block] Adjustment to Non-PEO NEO Compensation Footnote Adjustment to Non-PEO NEO Compensation Footnote [Text Block] Pay vs Performance Disclosure [Line Items] U.S. government agency securities US Government Agencies Debt Securities [Member] Forgone Recovery due to Disqualification of Tax Benefits, Amount Forgone Recovery due to Disqualification of Tax Benefits, Amount Non-Rule 10b5-1 Arrangement Terminated Non-Rule 10b5-1 Arrangement Terminated [Flag] Income before income taxes Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest Entity Shell Company Entity Shell Company Other long-term liabilities Other Liabilities, Noncurrent Statement of Stockholders' Equity [Abstract] Statement of Stockholders' Equity [Abstract] United States United States United States Segment [Member] Operating segment for United States. Statement of Cash Flows [Abstract] Statement of Cash Flows [Abstract] Other intangible assets, net Other Intangible Assets, Net Company Selected Measure Amount Company Selected Measure Amount Award Timing MNPI Considered Award Timing MNPI Considered [Flag] Comprehensive income Comprehensive income Comprehensive Income (Loss), Net of Tax, Attributable to Parent Expired (in dollars per share) Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Expirations in Period, Weighted Average Exercise Price Name Measure Name Due in one year or less Debt Securities, Available-for-Sale, Fair Value, Maturity, Allocated and Single Maturity Date, Year One Current operating lease liabilities Operating Lease, Liability, Current Proceeds from call redemptions and maturities of marketable securities Proceeds from Maturities, Prepayments and Calls of Debt Securities, Available-for-Sale Long-term deferred tax liabilities Deferred Income Tax Liabilities, Net Document Fiscal Period Focus Document Fiscal Period Focus Award Timing Method Award Timing Method [Text Block] Award Type [Axis] Award Type [Axis] Foreign currency translation adjustments Accumulated Foreign Currency Adjustment Attributable to Parent [Member] Available-for-Sale Securities, Debt Maturities [Abstract] Available-for-Sale Securities, Debt Maturities [Abstract] Schedule of Comprehensive Income (Loss) Comprehensive Income (Loss) [Table Text Block] Total assets Assets 2026 Finite-Lived Intangible Asset, Expected Amortization, Year One Trading Symbol Trading Symbol Restrictions lapsed (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period, Weighted Average Grant Date Fair Value Geographical [Domain] Geographical [Domain] Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares) Shares Issued, Shares, Share-Based Payment Arrangement, after Forfeiture Accrued liabilities and other Accrued Liabilities and Other Liabilities Long-Term Incentive Plan 2022 Long-Term Incentive Plan 2022 [Member] Long-Term Incentive Plan 2022 Entity Address, City or Town Entity Address, City or Town Operating activities Cash Provided by (Used in) Operating Activity, Including Discontinued Operation [Abstract] Segment expenses Segment Reporting, Other Segment Item, Amount Inventory Inventory Disclosure [Text Block] Non-PEO NEO Average Compensation Actually Paid Amount Non-PEO NEO Average Compensation Actually Paid Amount Restricted Stock Units Restricted Stock Units (RSUs) [Member] Compensation Actually Paid vs. Other Measure Compensation Actually Paid vs. Other Measure [Text Block] Financial Assets: Assets, Fair Value Disclosure [Abstract] 2029 Finite-Lived Intangible Asset, Expected Amortization, Year Four Entity Emerging Growth Company Entity Emerging Growth Company Entity Common Stock, Shares Outstanding Entity Common Stock, Shares Outstanding Debt Securities, Available-for-Sale [Line Items] Debt Securities, Available-for-Sale [Line Items] Options outstanding, beginning balance (in shares) Options outstanding, ending balance (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number Change in Fair Value as of Vesting Date of Prior Year Equity Awards Vested in Covered Year Change in Fair Value as of Vesting Date of Prior Year Equity Awards Vested in Covered Year [Member] Revenue Total Revenue Revenue from Contract with Customer, Including Assessed Tax Level 2 Fair Value, Inputs, Level 2 [Member] Insider Trading Policies and Procedures Not Adopted Insider Trading Policies and Procedures Not Adopted [Text Block] Business Combination [Domain] Business Combination [Domain] Common stock, outstanding (in shares) Beginning balance (in shares) Ending balance (in shares) Common Stock, Shares, Outstanding Plan Name [Axis] Plan Name [Axis] PEO PEO [Member] Schedule of Disaggregation of Revenue Disaggregation of Revenue [Table Text Block] Schedule of Investments Classified by Contractual Maturity Date Investments Classified by Contractual Maturity Date [Table Text Block] Corporate Unallocated Corporate Segment and Other Operating Segment [Member] United States UNITED STATES Changes in operating assets and liabilities: Adjustment to Reconcile Net Income to Cash Provided by (Used in) Operating Activity, Increase (Decrease) in Operating Capital [Abstract] Common shares issued on exercise of options and other, net of shares withheld for tax obligations Stock Issued During Period, Value, Stock Options Exercised Dividends or Other Earnings Paid on Equity Awards not Otherwise Reflected in Total Compensation for Covered Year Dividends or Other Earnings Paid on Equity Awards not Otherwise Reflected in Total Compensation for Covered Year [Member] Schedule of Finite-Lived Intangible Assets, Future Amortization Expense Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block] Expected volatility Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Volatility Rate Retained Earnings Retained Earnings [Member] Prepaid expenses and other current assets Prepaid Expense and Other Assets, Current Entity Address, Postal Zip Code Entity Address, Postal Zip Code Restatement Determination Date Restatement Determination Date Share-Based Payment Arrangement [Abstract] Income Statement [Abstract] Income Statement [Abstract] Provision for income taxes Income Tax Expense (Benefit) Preferred stock, issued (in shares) Preferred Stock, Shares Issued Pension Adjustments Service Cost Pension Adjustments Service Cost [Member] Product and Service [Domain] Product and Service [Domain] Fair Value Hierarchy and NAV [Axis] Fair Value Hierarchy and NAV [Axis] Restatement does not require Recovery Restatement Does Not Require Recovery [Text Block] Organization, Consolidation and Presentation of Financial Statements [Abstract] Compensation Actually Paid vs. Company Selected Measure Compensation Actually Paid vs. Company Selected Measure [Text Block] City Area Code City Area Code Award Timing, How MNPI Considered Award Timing, How MNPI Considered [Text Block] Marketable Securities Investment [Text Block] All Trading Arrangements All Trading Arrangements [Member] Equity Awards Adjustments, Footnote Equity Awards Adjustments, Footnote [Text Block] Total Shareholder Return Vs Peer Group Total Shareholder Return Vs Peer Group [Text Block] Thereafter Finite-Lived Intangible Asset, Expected Amortization, After Year Four Amount of amortization for asset, excluding financial asset and goodwill, lacking physical substance with finite life expected to be recognized after fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach). Beginning balance (in shares) Ending balance (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Number Investing activities Cash Provided by (Used in) Investing Activity, Including Discontinued Operation [Abstract] General and administrative General and Administrative Expense Pay vs Performance Disclosure Pay vs Performance Disclosure [Table] Net cash provided by operating activities Cash Provided by (Used in) Operating Activity, Including Discontinued Operation Goodwill, period increase (decrease) Goodwill, Period Increase (Decrease) Preferred stock, par value (in dollars per share) Preferred Stock, Par or Stated Value Per Share Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions [Table Text Block] ESPP ESPP [Member] ESPP [member U.S. treasury bonds US Treasury Bond Securities [Member] Goodwill Goodwill Equity Valuation Assumption Difference, Footnote Equity Valuation Assumption Difference, Footnote [Text Block] PEO Total Compensation Amount PEO Total Compensation Amount Money market mutual fund Money Market Funds [Member] Remaining 2025 Finite-Lived Intangible Asset, Expected Amortization, Remainder of Fiscal Year Equity Components [Axis] Equity Components [Axis] Non-Rule 10b5-1 Arrangement Adopted Non-Rule 10b5-1 Arrangement Adopted [Flag] Interest on finance lease obligations Accretion Expense Expired (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Expirations in Period Cost Debt Securities, Available-for-Sale, Amortized Cost Other Performance Measure, Amount Other Performance Measure, Amount Weighted- Average Exercise Price Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract] Entity Address, State or Province Entity Address, State or Province Principal repayments of finance lease obligations Finance Lease, Principal Payments Total current liabilities Liabilities, Current Individual: Individual [Axis] Additional paid-in capital Additional Paid in Capital, Common Stock Net cash (used in) provided by investing activities Cash Provided by (Used in) Investing Activity, Including Discontinued Operation Aggregate Change in Present Value of Accumulated Benefit for All Pension Plans Reported in Summary Compensation Table Aggregate Change in Present Value of Accumulated Benefit for All Pension Plans Reported in Summary Compensation Table [Member] Costs related to exit and disposal activities Gain (Loss) on Disposition of Business Document Fiscal Year Focus Document Fiscal Year Focus Operating lease assets Operating Lease, Right-of-Use Asset Forgone Recovery, Explanation of Impracticability Forgone Recovery, Explanation of Impracticability [Text Block] Effective income tax rate (in percent) Effective Income Tax Rate Reconciliation, Percent Award performance period (in years) Share-Based Compensation Arrangement by Share-Based Payment Award, Award Performance Period Share-Based Compensation Arrangement by Share-Based Payment Award, Award Performance Period Entity Interactive Data Current Entity Interactive Data Current Software technology Computer Software, Intangible Asset [Member] Plan Name [Domain] Plan Name [Domain] Stock based award, unrecognized compensation expense, period for recognition (in years) Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition Exercised (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period CNC Machining CNC Machining (Firstcut) [Member] Represents the CNC Machining (Firstcut) product. Foreign currency losses Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, before Tax Segment Reporting Segment Reporting Disclosure [Text Block] Weighted Average Useful Life Remaining (in years) Finite-Lived Intangible Assets, Remaining Amortization Period Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items] Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items] Schedule of Expenditures for Additions to Long-lived Assets by Geographic Region Expenditures For Additions To Long-lived Assets By Geographic Region [Table Text Block] Expenditures For Additions To Long-lived Assets By Geographic Region Schedule of Acquired Finite-Lived Intangible Asset by Major Class [Table] Schedule of Acquired Finite-Lived Intangible Asset by Major Class [Table] Increase (Decrease) in Stockholders' Equity [Roll Forward] Increase (Decrease) in Stockholders' Equity [Roll Forward] Long-term marketable securities Marketable Securities, Noncurrent Compensation Actually Paid vs. Total Shareholder Return Compensation Actually Paid vs. Total Shareholder Return [Text Block] Fair Value, Recurring and Nonrecurring [Table] Fair Value, Recurring and Nonrecurring [Table] Amortization expense for intangible assets Amortization of Intangible Assets Depreciation and amortization Total depreciation and amortization Depreciation, Depletion and Amortization Other long-term assets Other Assets, Noncurrent Entity Central Index Key Entity Central Index Key PEO Name PEO Name Prior Year End Fair Value of Equity Awards Granted in Any Prior Year that Fail to Meet Applicable Vesting Conditions During Covered Year Prior Year End Fair Value of Equity Awards Granted in Any Prior Year that Fail to Meet Applicable Vesting Conditions During Covered Year [Member] Outstanding Aggregate Erroneous Compensation Amount Outstanding Aggregate Erroneous Compensation Amount Comprehensive Income (net of tax) Comprehensive Income (Loss), Net of Tax, Attributable to Parent [Abstract] Arrangement Duration Trading Arrangement Duration Schedule of Segment Reporting Information, by Segment [Table] Schedule of Segment Reporting Information, by Segment [Table] Segments [Axis] Segments [Axis] Prepaid expenses and other Increase (Decrease) in Prepaid Expense and Other Assets Exercise Price Award Exercise Price Entity Filer Category Entity Filer Category Local Phone Number Local Phone Number Additional 402(v) Disclosure Additional 402(v) Disclosure [Text Block] Federal statutory rate (in percent) Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent Europe Europe [Member] Other Adjustment to Reconcile Net Income to Cash Provided by (Used in) Operating Activity, Other Item Stock-Based Compensation Share-Based Payment Arrangement [Text Block] Repurchases of common stock (in shares) Stock Repurchased and Retired During Period, Shares Assets Assets [Abstract] Underlying Security Market Price Change Underlying Security Market Price Change, Percent 2028 Finite-Lived Intangible Asset, Expected Amortization, Year Three Forfeited (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeitures, Weighted Average Grant Date Fair Value Fair Value Measurements Fair Value Disclosures [Text Block] Gross Finite-Lived Intangible Assets, Gross Shareholders' equity Equity, Attributable to Parent [Abstract] Vesting Date Fair Value of Equity Awards Granted and Vested in Covered Year Vesting Date Fair Value of Equity Awards Granted and Vested in Covered Year [Member] Entity Address, Address Line One Entity Address, Address Line One Effective income tax rate, (decrease) increase during period (in percent) Effective Income Tax Rate, Continuing Operations, Increase (Decrease) During The Period The increase (decrease) during the period in percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations. Research and development Research and Development Expense Accumulated Other Comprehensive Loss AOCI Attributable to Parent [Member] Accrued liabilities and other Increase (Decrease) in Accrued Liabilities and Other Operating Liabilities Allowance for credit loss, current Accounts Receivable, Allowance for Credit Loss, Current Long-term operating lease liabilities Operating Lease, Liability, Noncurrent Fair Value as of Grant Date Award Grant Date Fair Value Entity Registrant Name Entity Registrant Name Stock Price or TSR Estimation Method Stock Price or TSR Estimation Method [Text Block] Employee stock options and other (in shares) Incremental Common Shares Attributable to Dilutive Effect of Share-Based Payment Arrangements Granted (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period Forfeited (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeited in Period Stock based award, unrecognized compensation expense Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount Regulated Operations [Abstract] Document Quarterly Report Document Quarterly Report Common shares issued on exercise of options and other, net of shares withheld for tax obligations Adjustments to Additional Paid in Capital, Stock Issued, Issuance Costs Total Assets, Fair Value Disclosure Changed Peer Group, Footnote Changed Peer Group, Footnote [Text Block] Adjustment To PEO Compensation, Footnote Adjustment To PEO Compensation, Footnote [Text Block] Granted (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value Title Trading Arrangement, Individual Title Peer Group Total Shareholder Return Amount Peer Group Total Shareholder Return Amount Schedule of Finite-Lived Intangible Assets Schedule of Finite-Lived Intangible Assets [Table Text Block] Restatement Determination Date: Restatement Determination Date [Axis] Non-PEO NEO Non-PEO NEO [Member] Accumulated Other Comprehensive Income (Loss) [Table] Accumulated Other Comprehensive Income (Loss) [Table] Accumulated Other Comprehensive Income (Loss) [Line Items] Accumulated Other Comprehensive Income (Loss) [Line Items] Unrealized Gains Debt Securities, Available-for-Sale, Accumulated Gross Unrealized Gain, before Tax Name Trading Arrangement, Individual Name Award Type [Domain] Award Type [Domain] Other Revenue Other Products [Member] Represents other products. Equity Awards Adjustments Equity Awards Adjustments [Member] Pension Benefits Adjustments, Footnote Pension Benefits Adjustments, Footnote [Text Block] Compensation Amount Outstanding Recovery Compensation Amount Expected dividend yield Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Dividend Rate Recovery of Erroneously Awarded Compensation Disclosure [Line Items] Percentage of target, capable of being earned and vesting, lower limit Percentage Of Target Number, Capable Of Being Earned And Vesting, Lower Limit The lower limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment. MNPI Disclosure Timed for Compensation Value MNPI Disclosure Timed for Compensation Value [Flag] Name Awards Close in Time to MNPI Disclosures, Individual Name Beginning balance (in dollars per share) Ending balance (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value Shares used to compute net income per share: Weighted Average Number of Shares Outstanding Reconciliation [Abstract] Aggregate Erroneous Compensation Not Yet Determined Aggregate Erroneous Compensation Not Yet Determined [Text Block] Statements of Operations: Revenues [Abstract] Stock-based compensation expense APIC, Share-Based Payment Arrangement, Increase for Cost Recognition Accumulated other comprehensive loss Accumulated Other Comprehensive Income (Loss), Net of Tax Offering period (in months) Employee Stock Purchase Plan, Offering Period The offering period during which employees may purchase stock through the Employee Stock Purchase Plan. Marketing and sales Selling and Marketing Expense Financial Instruments [Domain] Financial Instruments [Domain] Segments [Domain] Segments [Domain] Percentage of target, capable of being achieved during performance periods, lower Percentage Of Target Number, Capable Of Being Achieved During Performance Periods, Lower Limit Percentage Of Target Number, Capable Of Being Achieved During Performance Periods, Lower Limit Performance Stock Units Performance Shares [Member] Aggregate Pension Adjustments Service Cost Aggregate Pension Adjustments Service Cost [Member] Fair Value Hierarchy and NAV [Domain] Fair Value Hierarchy and NAV [Domain] Inventories Increase (Decrease) in Inventories Inventory Inventory, net of allowance Inventory, Net Finite-Lived Intangible Assets by Major Class [Axis] Finite-Lived Intangible Assets by Major Class [Axis] Minimum Minimum [Member] Net unrealized gains on investments in securities AOCI, Accumulated Gain (Loss), Debt Securities, Available-for-Sale, Parent [Member] Company Selected Measure Name Company Selected Measure Name Purchases of marketable securities Payments to Acquire Debt Securities, Available-for-Sale Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of each of June 30, 2025, and December 31, 2024 Preferred Stock, Value, Issued Aggregate Available Trading Arrangement, Securities Aggregate Available Amount U.S. municipal securities US States and Political Subdivisions Debt Securities [Member] Accounts payable Accounts Payable, Current Stock Appreciation Rights (SARs) Stock Appreciation Rights (SARs) [Member] All Executive Categories All Executive Categories [Member] Europe Europe Europe Segment [Member] Operating segment for Europe Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 23,874,601 and 24,226,088 shares as of June 30, 2025, and December 31, 2024, respectively Common Stock, Value, Issued Finance lease assets Finance Lease, Right-of-Use Asset, after Accumulated Amortization Diluted (in shares) Diluted - weighted-average shares outstanding (in shares) Weighted Average Number of Shares Outstanding, Diluted Non-GAAP Measure Description Non-GAAP Measure Description [Text Block] Business Combination [Axis] Business Combination [Axis] Entity Small Business Entity Small Business Income Tax Disclosure [Abstract] Preferred stock, outstanding (in shares) Preferred Stock, Shares Outstanding Document Transition Report Document Transition Report Due after one year through five years Debt Securities, Available-for-Sale, Fair Value, Maturity, Allocated and Single Maturity Date, after Year One Through Five Underlying Securities Award Underlying Securities Amount Equity Component [Domain] Equity Component [Domain] Document Period End Date Document Period End Date Schedule of Long-Lived Assets by Geographic Areas Long-Lived Assets by Geographic Areas [Table Text Block] PEO Actually Paid Compensation Amount PEO Actually Paid Compensation Amount Employee Stock Purchase Plan Employee Stock Purchase Plan [Member] Information pertaining to the Employee Stock Purchase Plan. Net income per share: Earnings Per Share, Basic and Diluted EPS [Abstract] Earnings Per Share, Basic and Diluted EPS Income Taxes Income Tax Disclosure [Text Block] Awards Close in Time to MNPI Disclosures, Table Awards Close in Time to MNPI Disclosures [Table Text Block] Exit, Disposal and Goodwill impairment cost (benefit) Disposal Group, Not Discontinued Operation, Loss (Gain) on Write-down And Goodwill, Impairment Loss Disposal Group, Not Discontinued Operation, Loss (Gain) on Write-down And Goodwill, Impairment Loss Document Type Document Type Level 3 Fair Value, Inputs, Level 3 [Member] Net Income per Common Share Earnings Per Share [Text Block] Name Outstanding Recovery, Individual Name Product and Service [Axis] Product and Service [Axis] 3D Printing 3D Printing (Fineline) [Member] Represents the 3D Printing (Fineline) product. All Individuals All Individuals [Member] Fair Value Disclosures [Abstract] Accumulated Other Comprehensive Income (Loss) Disclosure of Reclassification Amount [Text Block] Purchases of property, equipment and other capital assets Payments to Acquire Property, Plant, and Equipment Name Forgone Recovery, Individual Name Stock-based award, term (in years) Share-Based Compensation Arrangement by Share-Based Payment Award, Expiration Period Total current assets Assets, Current Statistical Measurement [Axis] Statistical Measurement [Axis] Intangible assets acquired Finite-Lived Intangible Assets Acquired Year-over-Year Change in Fair Value of Equity Awards Granted in Prior Years That are Outstanding and Unvested Year-over-Year Change in Fair Value of Equity Awards Granted in Prior Years That are Outstanding and Unvested [Member] Proceeds from issuance of common stock from equity plans Proceeds, Issuance of Shares, Share-Based Payment Arrangement, Including Option Exercised Aggregate Erroneous Compensation Amount Aggregate Erroneous Compensation Amount Purchase price of common stock (in percent) Share-Based Compensation Arrangement by Share-Based Payment Award, Purchase Price of Common Stock, Percent Purchases of shares withheld for tax obligations Payment, Tax Withholding, Share-Based Payment Arrangement Sheet Metal Sheet Metal [Member] Represents the information pertaining to sheet metal. Peer Group Issuers, Footnote Peer Group Issuers, Footnote [Text Block] Inducement Awards Inducement Awards [Member] Inducement Awards Short-term marketable securities Marketable Securities, Current Erroneous Compensation Analysis Erroneous Compensation Analysis [Text Block] Net current-period other comprehensive income (loss) Other Comprehensive Income (Loss), Net of Tax, Portion Attributable to Parent Current liabilities Liabilities, Current [Abstract] Geographical [Axis] Geographical [Axis] Total operating expenses Operating Expenses Rule 10b5-1 Arrangement Terminated Rule 10b5-1 Arrangement Terminated [Flag] Level 1 Fair Value, Inputs, Level 1 [Member] Diluted (in dollars per share) Earnings Per Share, Diluted Erroneously Awarded Compensation Recovery Erroneously Awarded Compensation Recovery [Table] Accounts receivable, net of allowance for doubtful accounts of $2,272 and $1,975 as of June 30, 2025, and December 31, 2024, respectively Accounts Receivable, after Allowance for Credit Loss, Current Title of 12(b) Security Title of 12(b) Security AOCI Attributable to Parent, Net of Tax [Roll Forward] AOCI Attributable to Parent, Net of Tax [Roll Forward] Schedule of Share-based Payment Award, Awards Other Than Stock Options, Valuation Assumptions Schedule of Share-based Payment Award, Awards Other Than Stock Options, Valuation Assumptions [Table Text Block] Tabular disclosure of the valuation assumptions of share-based payment awards other than stock options. Net income per share: Earnings Per Share [Abstract] Non-compete agreement Noncompete Agreements [Member] Investments, Debt and Equity Securities [Abstract] Gross profit Gross Profit Repurchases of common stock Stock Repurchased and Retired During Period, Value Performance change (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Performance Change Represents the amount of shares related to a performance change related to equity instruments other than option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan). Exercised (in dollars per share) Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price 2027 Finite-Lived Intangible Asset, Expected Amortization, Year Two Award Timing Disclosures [Line Items] Schedule of Inventory, Current Schedule of Inventory, Current [Table Text Block] Granted (in dollars per share) Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Grants in Period, Weighted Average Exercise Price Measurement Frequency [Domain] Measurement Frequency [Domain] Accrued compensation Employee-related Liabilities, Current Net unrealized gains on investments in securities OCI, Debt Securities, Available-for-Sale, Unrealized Holding Gain (Loss), before Adjustment, after Tax Net income Net income Net income Net Income (Loss) Attributable to Parent Expiration Date Trading Arrangement Expiration Date Percentage of target, capable of being earned and vesting, upper limit Percentage Of Target Number, Capable Of Being Earned And Vesting, Upper Limit The upper limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment. Stock-based award, vesting period (in years) Share-Based Compensation Arrangement by Share-Based Payment Award, Award Vesting Period Property and equipment, net Total Long-lived Assets Property, Plant and Equipment, Net Segment Reporting Information [Line Items] Segment Reporting Information [Line Items] Preferred stock, authorized (in shares) Preferred Stock, Shares Authorized Repurchases of common stock Payments for Repurchase of Common Stock Adoption Date Trading Arrangement Adoption Date Compensation Actually Paid vs. Net Income Compensation Actually Paid vs. Net Income [Text Block] Accounts receivable Increase (Decrease) in Accounts Receivable Entity Current Reporting Status Entity Current Reporting Status Awards Close in Time to MNPI Disclosures Awards Close in Time to MNPI Disclosures [Table] Income from operations Operating Income (Loss) Retained earnings Retained Earnings (Accumulated Deficit) Foreign currency translation adjustments Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent [Abstract] Gain on disposal of property and equipment Gain (Loss) on Disposition of Property Plant Equipment Financial Instrument [Axis] Financial Instrument [Axis] Statement of Financial Position [Abstract] Statement of Financial Position [Abstract] Year-end Fair Value of Equity Awards Granted in Covered Year that are Outstanding and Unvested Year-end Fair Value of Equity Awards Granted in Covered Year that are Outstanding and Unvested [Member] Executive Category: Executive Category [Axis] Number of performance periods Share-Based Compensation Arrangement by Share-Based Payment Award, Number Of Performance Period Share-Based Compensation Arrangement by Share-Based Payment Award, Number Of Performance Period Current finance lease liabilities Finance Lease, Liability, Current Allowance for obsolescence Inventory Valuation Reserves Current Fiscal Year End Date Current Fiscal Year End Date Expected life (years) Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Term Finite-Lived Intangible Assets, Major Class Name [Domain] Finite-Lived Intangible Assets, Major Class Name [Domain] Aggregate Grant Date Fair Value of Equity Award Amounts Reported in Summary Compensation Table Aggregate Grant Date Fair Value of Equity Award Amounts Reported in Summary Compensation Table [Member] Weighted- Average Grant Date Fair Value Per Share Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value [Abstract] Statement [Table] Statement [Table] Other income, net Other Nonoperating Income (Expense) Inducement Awards, Performance Condition Inducement Awards, Performance Condition [Member] Inducement Awards, Performance Condition Effect of exchange rate changes on cash and cash equivalents Effect of Exchange Rate on Cash, Cash Equivalent, Restricted Cash, and Restricted Cash Equivalent, Including Discontinued Operation Deferred taxes Deferred Income Tax Expense (Benefit) Adjustments to reconcile net income to net cash provided by operating activities: Adjustment to Reconcile Net Income to Cash Provided by (Used in) Operating Activity [Abstract] Financing activities Cash Provided by (Used in) Financing Activity, Including Discontinued Operation [Abstract] Stock-based award, weighted-average grant date fair value (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value Cash Cash [Member] Equity Awards Adjustments, Excluding Value Reported in Compensation Table Equity Awards Adjustments, Excluding Value Reported in the Compensation Table [Member] Injection Molding Injection Molding (Protomold) [Member] Represents the Injection Molding (Protomold) product. Long-term finance lease liabilities Finance Lease, Liability, Noncurrent Basis of Presentation Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block] Unrecognized tax benefits Unrecognized Tax Benefits Anti-dilutive options excluded from calculation of diluted weighted average shares outstanding (in shares) Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount All Adjustments to Compensation All Adjustments to Compensation [Member] Amendment Flag Amendment Flag Debt Securities, Available-for-Sale, Fair Value, Fiscal Year Maturity [Abstract] Debt Securities, Available-for-Sale, Fair Value, Fiscal Year Maturity [Abstract] Percentage of target, capable of being achieved during performance periods, upper limit Percentage Of Target Number, Capable Of Being Achieved During Performance Periods, Upper Limit Percentage Of Target Number, Capable Of Being Achieved During Performance Periods, Upper Limit Termination Date Trading Arrangement Termination Date Net cash used in financing activities Cash Provided by (Used in) Financing Activity, Including Discontinued Operation Insider Trading Policies and Procedures Adopted Insider Trading Policies and Procedures Adopted [Flag] Measure: Measure [Axis] Schedule of Share-Based Payment Arrangement, Option, Activity Share-Based Payment Arrangement, Option, Activity [Table Text Block] Schedule of Fair Value, Assets Measured on Recurring Basis Fair Value, Assets Measured on Recurring Basis [Table Text Block] Basic (in shares) Basic - weighted-average shares outstanding (in shares) Weighted Average Number of Shares Outstanding, Basic Cost of revenue Cost of Product and Service Sold Schedule of Earnings Per Share, Basic and Diluted Schedule of Earnings Per Share, Basic and Diluted [Table Text Block] Option exercisable (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Number Segment Reporting [Abstract] Net unrealized gains on investments in securities OCI, Debt Securities, Available-for-Sale, Gain (Loss), after Adjustment and Tax [Abstract] Finite-Lived Intangible Assets, Net, Amortization Expense, Fiscal Year Maturity [Abstract] Finite-Lived Intangible Assets, Net, Amortization Expense, Fiscal Year Maturity [Abstract] Pay vs Performance Disclosure, Table Pay vs Performance [Table Text Block] Forgone Recovery due to Violation of Home Country Law, Amount Forgone Recovery due to Violation of Home Country Law, Amount Risk-free interest rate Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Risk Free Interest Rate Entity Tax Identification Number Entity Tax Identification Number Inducement Awards, Market Conditions Inducement Awards, Market Condition [Member] Inducement Awards, Market Condition Options outstanding, beginning balance (in dollars per share) Options outstanding, ending balance (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price Forgone Recovery due to Expense of Enforcement, Amount Forgone Recovery due to Expense of Enforcement, Amount Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items] Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items] Common stock, par value (in dollars per share) Common Stock, Par or Stated Value Per Share Common stock, issued (in shares) Common Stock, Shares, Issued Income taxes receivable Income Taxes Receivable, Current Effect of dilutive securities: Dilutive Securities, Effect on Basic Earnings Per Share [Abstract] Schedule of Depreciation and Amortization by Geographic Region Depreciation And Amortization By Geographic Region [Table Text Block] Depreciation And Amortization By Geographic Region Granted (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Gross Goodwill and Other Intangible Assets Goodwill and Intangible Assets Disclosure [Text Block] Schedule of Share-Based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions Schedule of Share-Based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block] Trading Arrangement: Trading Arrangement [Axis] Income taxes Increase (Decrease) in Income Taxes Payable Total Shareholder Return Amount Total Shareholder Return Amount Foreign currency translation adjustment Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax Insider Trading Arrangements [Line Items] Security Exchange Name Security Exchange Name Forfeited (in dollars per share) Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price Performance Stock Units Share-Based Compensation Arrangement by Share-Based Payment Award, Non-Option Equity Instruments, Outstanding [Roll Forward] Total liabilities Liabilities Discount from market price (in percent) Share-Based Compensation Arrangement by Share-Based Payment Award, Discount from Market Price, Offering Date Pension Adjustments Prior Service Cost Pension Adjustments Prior Service Cost [Member] Operating expenses Operating Expenses [Abstract] Material Terms of Trading Arrangement Material Terms of Trading Arrangement [Text Block] Asset Class [Domain] Asset Class [Domain] Statement [Line Items] Statement [Line Items] Rule 10b5-1 Arrangement Adopted Rule 10b5-1 Arrangement Adopted [Flag] Cash and cash equivalents Cash and Cash Equivalent Number of shares available for issuance pursuant to awards (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Number of Additional Shares Authorized Common Stock Common Stock [Member] Restrictions lapsed (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period Marketable securities Fair Value Total marketable securities Debt Securities, Available-for-Sale Entity Incorporation, State or Country Code Entity Incorporation, State or Country Code Non-NEOs Non-NEOs [Member] Corporate debt securities Corporate Debt Securities [Member] Net increase in cash and cash equivalents Cash, Cash Equivalent, Restricted Cash, and Restricted Cash Equivalent, Period Increase (Decrease), Including Exchange Rate Effect and Discontinued Operation EX-101.PRE 9 prlb-20250630_pre.xml XBRL TAXONOMY EXTENSION PRESENTATION LINKBASE DOCUMENT XML 11 R1.htm IDEA: XBRL DOCUMENT v3.25.2
Cover - shares
6 Months Ended
Jun. 30, 2025
Jul. 29, 2025
Cover [Abstract]    
Document Type 10-Q  
Document Quarterly Report true  
Document Period End Date Jun. 30, 2025  
Document Transition Report false  
Entity File Number 001-35435  
Entity Registrant Name Proto Labs, Inc.  
Entity Incorporation, State or Country Code MN  
Entity Tax Identification Number 41-1939628  
Entity Address, Address Line One 5540 Pioneer Creek Drive  
Entity Address, City or Town Maple Plain  
Entity Address, State or Province MN  
Entity Address, Postal Zip Code 55359  
City Area Code 763  
Local Phone Number 479-3680  
Title of 12(b) Security Common Stock, Par Value $0.001 Per Share  
Trading Symbol PRLB  
Security Exchange Name NYSE  
Entity Current Reporting Status Yes  
Entity Interactive Data Current Yes  
Entity Filer Category Large Accelerated Filer  
Entity Small Business false  
Entity Emerging Growth Company false  
Entity Shell Company false  
Entity Common Stock, Shares Outstanding   23,874,757
Entity Central Index Key 0001443669  
Current Fiscal Year End Date --12-31  
Document Fiscal Year Focus 2025  
Document Fiscal Period Focus Q2  
Amendment Flag false  
XML 12 R2.htm IDEA: XBRL DOCUMENT v3.25.2
Consolidated Balance Sheets - USD ($)
$ in Thousands
Jun. 30, 2025
Dec. 31, 2024
Current assets    
Cash and cash equivalents $ 90,382 $ 89,071
Short-term marketable securities 12,804 14,019
Accounts receivable, net of allowance for doubtful accounts of $2,272 and $1,975 as of June 30, 2025, and December 31, 2024, respectively 78,011 66,504
Inventory 13,169 12,305
Income taxes receivable 1,155 2,906
Prepaid expenses and other current assets 9,985 10,049
Total current assets 205,506 194,854
Property and equipment, net 215,777 227,263
Goodwill 273,991 273,991
Other intangible assets, net 20,500 21,422
Long-term marketable securities 20,037 17,773
Operating lease assets 2,308 2,993
Finance lease assets 558 692
Other long-term assets 4,575 4,524
Total assets 743,252 743,512
Current liabilities    
Accounts payable 15,583 15,504
Accrued compensation 19,435 16,550
Accrued liabilities and other 25,846 19,621
Current operating lease liabilities 984 1,287
Current finance lease liabilities 316 309
Total current liabilities 62,164 53,271
Long-term operating lease liabilities 1,402 1,633
Long-term finance lease liabilities 127 287
Long-term deferred tax liabilities 9,737 13,565
Other long-term liabilities 5,115 4,605
Total liabilities 78,545 73,361
Shareholders' equity    
Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of each of June 30, 2025, and December 31, 2024 0 0
Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 23,874,601 and 24,226,088 shares as of June 30, 2025, and December 31, 2024, respectively 23 24
Additional paid-in capital 449,903 453,705
Retained earnings 239,344 244,406
Accumulated other comprehensive loss (24,563) (27,984)
Total shareholders' equity 664,707 670,151
Total liabilities and shareholders' equity $ 743,252 $ 743,512
XML 13 R3.htm IDEA: XBRL DOCUMENT v3.25.2
Consolidated Balance Sheets (Parenthetical) - USD ($)
$ in Thousands
Jun. 30, 2025
Dec. 31, 2024
Statement of Financial Position [Abstract]    
Allowance for credit loss, current $ 2,272 $ 1,975
Preferred stock, par value (in dollars per share) $ 0.001 $ 0.001
Preferred stock, authorized (in shares) 10,000,000 10,000,000
Preferred stock, issued (in shares) 0 0
Preferred stock, outstanding (in shares) 0 0
Common stock, par value (in dollars per share) $ 0.001 $ 0.001
Common stock, authorized (in shares) 150,000,000 150,000,000
Common stock, issued (in shares) 23,874,601 24,226,088
Common stock, outstanding (in shares) 23,874,601 24,226,088
XML 14 R4.htm IDEA: XBRL DOCUMENT v3.25.2
Consolidated Statements of Comprehensive Income - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2025
Jun. 30, 2024
Jun. 30, 2025
Jun. 30, 2024
Statements of Operations:        
Revenue $ 135,063 $ 125,631 $ 261,268 $ 253,521
Cost of revenue 75,289 69,085 145,796 139,508
Gross profit 59,774 56,546 115,472 114,013
Operating expenses        
Marketing and sales 24,731 23,291 48,480 46,451
Research and development 11,173 10,661 21,782 21,828
General and administrative 18,752 16,595 35,600 32,908
Costs related to exit and disposal activities 149 0 110 0
Total operating expenses 54,805 50,547 105,972 101,187
Income from operations 4,969 5,999 9,500 12,826
Other income, net 1,705 1,361 3,159 2,260
Income before income taxes 6,674 7,360 12,659 15,086
Provision for income taxes 2,247 2,820 4,633 5,278
Net income $ 4,427 $ 4,540 $ 8,026 $ 9,808
Net income per share:        
Basic (in dollars per share) $ 0.19 $ 0.18 $ 0.33 $ 0.39
Diluted (in dollars per share) $ 0.18 $ 0.18 $ 0.33 $ 0.38
Shares used to compute net income per share:        
Basic (in shares) 23,900,390 25,313,036 24,018,119 25,473,937
Diluted (in shares) 24,101,592 25,372,972 24,291,246 25,573,344
Comprehensive Income (net of tax)        
Comprehensive income $ 6,755 $ 3,953 $ 11,447 $ 8,389
XML 15 R5.htm IDEA: XBRL DOCUMENT v3.25.2
Consolidated Statements of Shareholders' Equity - USD ($)
Total
Common Stock
Additional Paid-In Capital
Retained Earnings
Accumulated Other Comprehensive Loss
Beginning balance (in shares) at Dec. 31, 2023   25,721,957      
Beginning balance at Dec. 31, 2023 $ 695,295,000 $ 26,000 $ 466,884,000 $ 256,398,000 $ (28,013,000)
Increase (Decrease) in Stockholders' Equity [Roll Forward]          
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)   29,974      
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (533,000)   (533,000)    
Stock-based compensation expense 4,276,000   4,276,000    
Repurchases of common stock (in shares)   (435,861)      
Repurchases of common stock (16,164,000)   (7,912,000) (8,252,000)  
Net income 5,268,000     5,268,000  
Other comprehensive income          
Foreign currency translation adjustment (925,000)       (925,000)
Net unrealized gains on investments in securities 93,000       93,000
Comprehensive income 4,436,000        
Ending balance (in shares) at Mar. 31, 2024   25,316,070      
Ending balance at Mar. 31, 2024 687,310,000 $ 26,000 462,715,000 253,414,000 (28,845,000)
Beginning balance (in shares) at Dec. 31, 2023   25,721,957      
Beginning balance at Dec. 31, 2023 695,295,000 $ 26,000 466,884,000 256,398,000 (28,013,000)
Increase (Decrease) in Stockholders' Equity [Roll Forward]          
Net income 9,808,000        
Other comprehensive income          
Comprehensive income 8,389,000        
Ending balance (in shares) at Jun. 30, 2024   25,147,616      
Ending balance at Jun. 30, 2024 685,236,000 $ 26,000 461,400,000 253,242,000 (29,432,000)
Beginning balance (in shares) at Mar. 31, 2024   25,316,070      
Beginning balance at Mar. 31, 2024 687,310,000 $ 26,000 462,715,000 253,414,000 (28,845,000)
Increase (Decrease) in Stockholders' Equity [Roll Forward]          
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)   176,780      
Common shares issued on exercise of options and other, net of shares withheld for tax obligations 707,000   707,000    
Stock-based compensation expense 4,244,000   4,244,000    
Repurchases of common stock (in shares)   (345,234)      
Repurchases of common stock (10,978,000)   (6,266,000) (4,712,000)  
Net income 4,540,000     4,540,000  
Other comprehensive income          
Foreign currency translation adjustment (678,000)       (678,000)
Net unrealized gains on investments in securities 91,000       91,000
Comprehensive income 3,953,000        
Ending balance (in shares) at Jun. 30, 2024   25,147,616      
Ending balance at Jun. 30, 2024 $ 685,236,000 $ 26,000 461,400,000 253,242,000 (29,432,000)
Beginning balance (in shares) at Dec. 31, 2024 24,226,088 24,226,088      
Beginning balance at Dec. 31, 2024 $ 670,151,000 $ 24,000 453,705,000 244,406,000 (27,984,000)
Increase (Decrease) in Stockholders' Equity [Roll Forward]          
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)   58,291      
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (961,000)   (961,000)    
Stock-based compensation expense 3,992,000   3,992,000    
Repurchases of common stock (in shares)   (513,739)      
Repurchases of common stock (21,073,000) $ (1,000) (9,621,000) (11,451,000)  
Net income 3,599,000     3,599,000  
Other comprehensive income          
Foreign currency translation adjustment 1,003,000       1,003,000
Net unrealized gains on investments in securities 90,000       90,000
Comprehensive income 4,692,000        
Ending balance (in shares) at Mar. 31, 2025   23,770,640      
Ending balance at Mar. 31, 2025 $ 656,801,000 $ 23,000 447,115,000 236,554,000 (26,891,000)
Beginning balance (in shares) at Dec. 31, 2024 24,226,088 24,226,088      
Beginning balance at Dec. 31, 2024 $ 670,151,000 $ 24,000 453,705,000 244,406,000 (27,984,000)
Increase (Decrease) in Stockholders' Equity [Roll Forward]          
Net income 8,026,000        
Other comprehensive income          
Comprehensive income $ 11,447,000        
Ending balance (in shares) at Jun. 30, 2025 23,874,601 23,874,601      
Ending balance at Jun. 30, 2025 $ 664,707,000 $ 23,000 449,903,000 239,344,000 (24,563,000)
Beginning balance (in shares) at Mar. 31, 2025   23,770,640      
Beginning balance at Mar. 31, 2025 656,801,000 $ 23,000 447,115,000 236,554,000 (26,891,000)
Increase (Decrease) in Stockholders' Equity [Roll Forward]          
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)   179,393      
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (58,000)   (58,000)    
Stock-based compensation expense 4,259,000   4,259,000    
Repurchases of common stock (in shares)   (75,432)      
Repurchases of common stock (3,050,000)   (1,413,000) (1,637,000)  
Net income 4,427,000     4,427,000  
Other comprehensive income          
Foreign currency translation adjustment 2,300,000       2,300,000
Net unrealized gains on investments in securities 28,000       28,000
Comprehensive income $ 6,755,000        
Ending balance (in shares) at Jun. 30, 2025 23,874,601 23,874,601      
Ending balance at Jun. 30, 2025 $ 664,707,000 $ 23,000 $ 449,903,000 $ 239,344,000 $ (24,563,000)
XML 16 R6.htm IDEA: XBRL DOCUMENT v3.25.2
Consolidated Statements of Cash Flows - USD ($)
$ in Thousands
6 Months Ended
Jun. 30, 2025
Jun. 30, 2024
Operating activities    
Net income $ 8,026 $ 9,808
Adjustments to reconcile net income to net cash provided by operating activities:    
Depreciation and amortization 17,264 18,075
Stock-based compensation expense 8,251 8,520
Deferred taxes (3,985) (4,144)
Interest on finance lease obligations 11 18
Impairments related to exit and closure of facilities 448 0
Gain on disposal of property and equipment 0 (20)
Other (82) 64
Changes in operating assets and liabilities:    
Accounts receivable (9,487) 113
Inventories (983) 1,263
Prepaid expenses and other 338 (829)
Income taxes 1,836 825
Accounts payable (654) 537
Accrued liabilities and other 7,980 1,551
Net cash provided by operating activities 28,963 35,781
Investing activities    
Purchases of property, equipment and other capital assets (2,730) (6,784)
Proceeds from sales of property, equipment and other capital assets 0 30
Purchases of marketable securities (11,052) 0
Proceeds from call redemptions and maturities of marketable securities 10,230 10,419
Net cash (used in) provided by investing activities (3,552) 3,665
Financing activities    
Proceeds from issuance of common stock from equity plans 2,081 2,094
Purchases of shares withheld for tax obligations (3,117) (1,920)
Repurchases of common stock (23,980) (26,940)
Principal repayments of finance lease obligations (153) (146)
Net cash used in financing activities (25,169) (26,912)
Effect of exchange rate changes on cash and cash equivalents 1,069 (175)
Net increase in cash and cash equivalents 1,311 12,359
Cash and cash equivalents, beginning of period 89,071 83,790
Cash and cash equivalents, end of period $ 90,382 $ 96,149
XML 17 R7.htm IDEA: XBRL DOCUMENT v3.25.2
Basis of Presentation
6 Months Ended
Jun. 30, 2025
Organization, Consolidation and Presentation of Financial Statements [Abstract]  
Basis of Presentation Basis of Presentation
The unaudited interim Consolidated Financial Statements of Proto Labs, Inc. (Protolabs, the Company, we, us or our) have been prepared in accordance with accounting principles generally accepted in the United States of America (U.S. GAAP) for interim financial information and with the instructions to Form 10-Q and Article 10 of Regulation S-X. In the opinion of management, the accompanying financial statements reflect all adjustments necessary for a fair presentation of the Company’s statements of financial position, results of operations and cash flows for the periods presented. Except as otherwise disclosed herein, these adjustments consist of normal, recurring items. Operating results for interim periods are not necessarily indicative of results that may be expected for the fiscal year as a whole.
The preparation of the financial statements in conformity with U.S. GAAP requires management to make estimates and assumptions that affect the reported amounts of assets, liabilities, revenues, expenses, and the related disclosures at the date of the financial statements and during the reporting period. Actual results could materially differ from these estimates. For further information, refer to the audited Consolidated Financial Statements and Notes thereto included in the Company’s Annual Report on Form 10-K for the year ended December 31, 2024, as filed with the Securities and Exchange Commission (SEC) on February 21, 2025.
The accompanying Consolidated Balance Sheet as of December 31, 2024 was derived from the audited Consolidated Financial Statements but does not include all disclosures required by U.S. GAAP for a full set of financial statements. This Quarterly Report on Form 10-Q should be read in conjunction with the Company’s Consolidated Financial Statements and Notes included in the Company's Annual Report on Form 10-K filed on February 21, 2025 as referenced above.
XML 18 R8.htm IDEA: XBRL DOCUMENT v3.25.2
Recent Accounting Pronouncements
6 Months Ended
Jun. 30, 2025
Accounting Policies [Abstract]  
Recent Accounting Pronouncements Recent Accounting Pronouncements
The Company did not recently adopt any accounting pronouncements that had a material impact on the Company's Consolidated Financial Statements.
In December 2023, the Financial Accounting Standards Board (FASB) issued Accounting Standards Update (ASU) No. 2023-09, Income Taxes (Topic 740): Improvements to Income Tax Disclosures, that enhances the transparency of income tax disclosures by expanding annual disclosure requirements related to the rate reconciliation and income taxes paid. The Company is required to adopt this guidance for its annual year ending December 31, 2025. Early adoption is permitted. The Company is currently evaluating the impact of this guidance on its disclosures.
In November 2024, the FASB issued ASU No. 2024-03, Income Statement - Reporting Comprehensive Income - Expense Disaggregation Disclosures (Subtopic 220-40): Disaggregation of Income Statement Expenses, which is intended to improve disclosures about a public business entity's expenses, primarily through additional disaggregation of income statement expenses. ASU 2024-03 is effective for annual periods beginning after December 15, 2026, and interim periods beginning after December 15, 2027, with early adoption permitted. The Company is currently evaluating ASU 2024-03 to determine the impact on the Company's disclosures.
XML 19 R9.htm IDEA: XBRL DOCUMENT v3.25.2
Net Income per Common Share
6 Months Ended
Jun. 30, 2025
Earnings Per Share [Abstract]  
Net Income per Common Share Net Income per Common Share
Basic net income per share is computed based on the weighted-average number of common shares outstanding. Diluted net income per share is computed based on the weighted-average number of common shares outstanding, increased by the number of additional shares that would have been outstanding had potentially dilutive common shares been issued and reduced by the number of shares the Company could have repurchased from the proceeds from issuance of the potentially dilutive shares. Potentially dilutive shares of common stock include stock options and other stock-based awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan. Performance stock units are excluded from the calculation of dilutive potential common shares until the performance conditions have been satisfied. Anti-dilutive options were excluded from the calculation of diluted weighted average shares outstanding and were 459,386 and 452,239 for the three months ended June 30, 2025 and 2024, respectively, and 446,174 and 371,313 for the six months ended June 30, 2025 and 2024, respectively.
The table below sets forth the computation of basic and diluted net income per share:
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands, except share and per share amounts)2025202420252024
Net income$4,427 $4,540 $8,026 $9,808 
Basic - weighted-average shares outstanding:23,900,39025,313,03624,018,11925,473,937
Effect of dilutive securities:
Employee stock options and other201,20259,936273,12799,407
Diluted - weighted-average shares outstanding:24,101,59225,372,97224,291,24625,573,344
Net income per share:
Basic$0.19 $0.18 $0.33 $0.39 
Diluted$0.18 $0.18 $0.33 $0.38 
XML 20 R10.htm IDEA: XBRL DOCUMENT v3.25.2
Goodwill and Other Intangible Assets
6 Months Ended
Jun. 30, 2025
Goodwill and Intangible Assets Disclosure [Abstract]  
Goodwill and Other Intangible Assets Goodwill and Other Intangible Assets
There were no changes in the carrying amount of goodwill during the three and six months ended June 30, 2025.
Intangible assets other than goodwill at June 30, 2025 and December 31, 2024 were as follows:
June 30, 2025December 31, 2024Useful
Life (in years)
Weighted Average
Useful Life Remaining
(in years)
(in thousands)GrossAccumulated
Amortization
NetGrossAccumulated
Amortization
Net
Intangible assets with finite lives:
Non-compete agreement$851 $(786)$65 $819 $(703)$116 
2.0 - 5.0
0.4
Software technology13,229 (9,808)3,421 13,229 (9,123)4,106 10.02.5
Software platform27,135 (10,121)17,014 25,657 (8,457)17,200 12.07.6
Total intangible assets$41,215 $(20,715)$20,500 $39,705 $(18,283)$21,422 
Intangible assets allocated to the Protolabs Network entities consisted of intangible assets of €11.6 million in Europe and $16.6 million in the United States as of the date of the acquisition. The Euro denominated intangible assets are translated at the end of each period using the current exchange rates resulting in a foreign currency translation adjustment that is recorded as a component of Other Comprehensive Income. Foreign currency unrealized losses related to intangible assets were $0.5 million and $2.2 million as of June 30, 2025 and December 31, 2024, respectively. Amortization expense for intangible assets was $0.9 million for each of the three months ended June 30, 2025 and 2024, and $1.8 million and $1.9 million for the six months ended June 30, 2025 and 2024.
Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets and current exchange rates is as follows:
(in thousands)Estimated Amortization Expense
Remaining 2025$1,862
20263,622
20273,613
20282,244
20292,244
Thereafter6,915
Total estimated amortization expense$20,500
XML 21 R11.htm IDEA: XBRL DOCUMENT v3.25.2
Fair Value Measurements
6 Months Ended
Jun. 30, 2025
Fair Value Disclosures [Abstract]  
Fair Value Measurements Fair Value Measurements
Accounting Standards Codification, Fair Value Measurement (ASC 820), defines fair value as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. ASC 820 also establishes a fair value hierarchy that requires classification based on observable and unobservable inputs when measuring fair value. There are three levels of inputs that may be used to measure fair value:
Level 1Quoted prices in active markets for identical assets or liabilities.
Level 2Observable inputs other than Level 1 prices such as quoted prices for similar assets or liabilities; quoted prices in markets that are not active; or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the assets or liabilities.
Level 3Unobservable inputs that are supported by little or no market activity and that are significant to the fair value of the assets or liabilities.
The Company's assets and liabilities that are required to be measured or disclosed at fair value on a recurring basis include cash and cash equivalents and marketable securities. The Company’s cash consists of bank deposits and cash equivalents consist primarily of money market mutual funds. The Company determines the fair value of these investments using Level 1 inputs. The Company's marketable securities consist of short-term and long-term agency, municipal, corporate and other debt securities. Fair value for the corporate debt securities is primarily determined based on quoted market prices (Level 1). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level 2).
The following table summarizes financial assets as of June 30, 2025 and December 31, 2024 measured at fair value on a recurring basis:
June 30, 2025December 31, 2024
(in thousands)Level 1Level 2Level 3Level 1Level 2Level 3
Financial Assets:
Cash$82,748 $— $— $86,366 $— $— 
Money market mutual fund7,634 — — 2,705 — — 
Marketable securities16,270 16,571 — 17,261 14,531 — 
Total$106,652 $16,571 $— $106,332 $14,531 $— 
XML 22 R12.htm IDEA: XBRL DOCUMENT v3.25.2
Marketable Securities
6 Months Ended
Jun. 30, 2025
Investments, Debt and Equity Securities [Abstract]  
Marketable Securities Marketable Securities
The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. The securities are categorized as available-for-sale and are recorded at fair value. The following table summarizes information regarding the Company’s short-term and long-term marketable securities as of June 30, 2025 and December 31, 2024:
June 30, 2025
(in thousands)CostUnrealized GainsUnrealized LossesFair Value
U.S. government agency securities$1,000 $$— $1,003 
Corporate debt securities15,914 (27)15,889 
U.S. municipal securities8,954 17 (8)8,963 
U.S. treasury bonds7,000 (15)6,986 
Total marketable securities$32,868 $23 $(50)$32,841 
December 31, 2024
(in thousands)CostUnrealized GainsUnrealized LossesFair Value
U.S. government agency securities$8,323 $— $(22)$8,301 
Corporate debt securities15,852 — (82)15,770 
U.S. municipal securities6,762 — (38)6,724 
U.S. treasury bonds1,000 — (3)997 
Total marketable securities$31,937 $— $(145)$31,792 
Fair values for the corporate debt securities are primarily determined based on quoted market prices (Level 1). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level 2).
Classification of marketable securities as current or non-current is based upon the security’s maturity date as of the date of these financial statements.
The June 30, 2025 balance of available-for-sale debt securities by contractual maturity is shown in the following table at fair value. Actual maturities may differ from contractual maturities because the issuers of the securities may have the right to prepay obligations without prepayment penalties.
(in thousands)June 30,
2025
Due in one year or less$12,804 
Due after one year through five years20,037 
Total marketable securities$32,841 
XML 23 R13.htm IDEA: XBRL DOCUMENT v3.25.2
Inventory
6 Months Ended
Jun. 30, 2025
Inventory Disclosure [Abstract]  
Inventory Inventory
Inventory consists primarily of raw materials, which are recorded at the lower of cost and net realizable value using the standard cost method, which approximates first-in, first-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.
The Company’s inventory consisted of the following as of the dates indicated:
(in thousands)June 30,
2025
December 31,
2024
Total inventory$13,886 $12,989 
Allowance for obsolescence(717)(684)
Inventory, net of allowance$13,169 $12,305 
XML 24 R14.htm IDEA: XBRL DOCUMENT v3.25.2
Stock-Based Compensation
6 Months Ended
Jun. 30, 2025
Share-Based Payment Arrangement [Abstract]  
Stock-Based Compensation Stock-Based Compensation
On July 8, 2022, the board of directors approved the Proto Labs, Inc. 2022 Long-Term Incentive Plan, which was approved by the Company's shareholders at a Special Meeting of Shareholders on August 29, 2022, and subsequently amended and restated by the Company's shareholders at the Annual Meeting of Shareholders on May 23, 2024 (as amended and restated, and subsequently further amended, the 2022 Plan) to increase the number of shares available for issuance pursuant to awards under the 2022 Plan by an additional 430,000 shares, add a minimum vesting requirement, and extend the expiration date so that the term of the 2022 Plan runs for ten years from the date of the shareholder approval. On May 20, 2025, the Company's shareholders approved an amendment to the 2022 Plan to increase the number of shares available for issuance pursuant to awards under the 2022 Plan by an additional 296,000 shares. Under the 2022 Plan, the Company has the ability to grant stock options, stock appreciation rights (SARs), restricted stock, restricted stock units, other stock-based awards and cash incentive awards. Awards under the 2022 Plan have a maximum term of ten years from the date of grant. The compensation and talent committee may provide that the vesting or payment of any award will be subject to the attainment of specified performance measures in addition to the satisfaction of any continued service requirements and the compensation and talent committee will determine whether such measures have been achieved. The per-share exercise price of stock options and SARs granted under the 2022 Plan generally may not be less than the fair market value of a share of our common stock on the date of the grant.
The Company also has outstanding awards under the 2012 Long-Term Incentive Plan, as amended (the 2012 Plan), although the plan expired in February 2022 and no additional awards have since been or will be made under the 2012 Plan. The 2012 Plan provided the Company the ability to grant stock options, SARs, restricted stock, restricted stock units, other stock-based awards and cash incentive awards. Awards under the 2012 Plan that subsequently expired, were forfeited or cancelled, or settled in cash after August 29, 2022 became available for awards under the 2022 Plan.
On May 23, 2025, the Company granted one-time inducement awards (the "Inducement Awards") within the meaning of the New York Stock Exchange Listed Company Manual Section 303A.08 to the Company's incoming Chief Executive Officer. The Inducement Awards were not granted under the 2022 Plan, but have the same terms and conditions as equity awards granted under the 2022 Plan, except as otherwise provided in the award agreements.
Employee Stock Purchase Plan
The Company’s 2012 Employee Stock Purchase Plan (ESPP) allows eligible employees to purchase a variable number of shares of the Company’s common stock each offering period at a discount through payroll deductions of up to 15 percent of their eligible compensation, subject to plan limitations. The ESPP provides for six-month offering periods with a single purchase period ending May 15 and November 15, respectively. At the end of each offering period, employees are able to purchase shares at 85 percent of the lower of the fair market value of the Company’s common stock on the first trading day of the offering period or on the last trading day of the offering period.
Stock-Based Compensation Expense
Stock-based compensation expense was $4.3 million and $4.2 million for the three months ended June 30, 2025 and 2024, respectively, and $8.3 million and $8.5 million for the six months ended June 30, 2025 and 2024, respectively.
Stock Options
The following table summarizes stock option activity during the six months ended June 30, 2025:
Stock OptionsWeighted-
Average
Exercise Price
Options outstanding at December 31, 2024445,136$51.34 
Granted139,87239.32 
Exercised(8,762)33.77 
Forfeited(93,350)37.31 
Expired(16,354)87.74 
Options outstanding at June 30, 2025466,542$49.60 
Exercisable at June 30, 2025254,268$60.44 
The outstanding options generally have a term of ten years. For employees, options granted become exercisable ratably over the vesting period, which is generally a period of four years, beginning on the first anniversary of the grant date, subject to the employee’s continuing service to the Company.
The weighted-average grant date fair value of options that were granted during the six months ended June 30, 2025 was $21.81.
The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the six months ended June 30, 2025 and 2024:
Six Months Ended
June 30,
20252024
Risk-free interest rate
4.13% - 4.17%
4.28% - 4.30%
Expected life (years)
6.25
6.25
Expected volatility
52.12% - 52.99%
50.62% - 50.72%
Expected dividend yield0%0%
As of June 30, 2025, there was $3.9 million of unrecognized compensation expense related to unvested stock options, which is expected to be recognized over a weighted-average period of 3.1 years.
Restricted Stock Units
Restricted stock unit (RSU) awards are share-settled awards and restrictions lapse ratably over the vesting period, which is generally a period from three to four years, beginning on the first anniversary of the grant date, subject to the employee's continuing service to the Company. For the board of directors, restrictions generally lapse in full on the first anniversary of the grant date.
The following table summarizes restricted stock units activity during the six months ended June 30, 2025:
Restricted
Stock Units
Weighted-
Average
Grant Date
Fair Value
Per Share
Restricted stock units at December 31, 2024763,261$38.25 
Granted278,50039.95 
Restrictions lapsed(212,421)40.55 
Forfeited(85,562)36.57 
Restricted stock units at June 30, 2025743,778$38.42 
As of June 30, 2025, there was $21.7 million of unrecognized compensation expense related to non-vested restricted stock units, which is expected to be recognized over a weighted-average period of 2.9 years.
Performance Stock Units
Performance stock units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between 0 percent and 200 percent of that target number capable of being earned and vesting at the end of a three-year performance period depending on the Company’s performance in the final year of the performance period and the award recipient’s continued employment. The Company’s PSUs are based on market conditions and the related compensation cost is based on the fair value at grant date calculated using a Monte Carlo pricing model.
The following table summarizes performance stock units activity during the six months ended June 30, 2025:
Performance
Stock Units
Weighted-
Average
Grant Date
Fair Value
Per Share
Performance stock units at December 31, 2024180,173$60.75 
Granted1
153,50359.71 
Restrictions lapsed(32,977)96.41
Performance change— 
Forfeited(68,887)57
Performance stock units at June 30, 2025231,812$56.17 
1 Includes a target number of 54,320 PSUs granted as part of the May 23, 2025, Inducement Awards, 27,160 of which have the same market condition as the PSUs granted under the 2022 Plan as described above, and 27,160 of which also include a performance condition with anywhere between 0 percent and 100 percent of the target number capable of being achieved during two six-month performance periods and then anywhere between 0 percent and 200 percent of such achieved PSUs capable of being earned and vesting during a three-year performance period depending on the Company's performance in the final year of the performance period and the award recipient's continued employment.
The following table provides the assumptions used in the Monte Carlo pricing model valuation of PSUs during the six months ended June 30, 2025 and 2024:
Six Months Ended
June 30,
20252024
Risk-free interest rate
3.98% - 4.08%
4.37%
Expected life (years)
2.61 - 2.85
2.88
Expected volatility
52.40% - 53.20%
51.40%
Expected dividend yield0%0%
As of June 30, 2025, there was $8.6 million of unrecognized compensation expense related to non-vested performance stock units, which is expected to be recognized over a weighted-average period of 2.3 years.
Employee Stock Purchase Plan
The following table presents the assumptions used to estimate the fair value of the ESPP during the six months ended June 30, 2025 and 2024:
Six Months Ended
June 30,
20252024
Risk-free interest rate
4.29%
5.07% - 5.16%
Expected life (months)6.006.00
Expected volatility
65.60%
30.97% - 47.92%
Expected dividend yield0%0%
XML 25 R15.htm IDEA: XBRL DOCUMENT v3.25.2
Accumulated Other Comprehensive Income (Loss)
6 Months Ended
Jun. 30, 2025
Regulated Operations [Abstract]  
Accumulated Other Comprehensive Income (Loss) Accumulated Other Comprehensive Income (Loss)
Other comprehensive income (loss) is comprised of foreign currency translation adjustments and net unrealized gains (losses) on investments in securities.
The following table presents the changes in accumulated other comprehensive income (loss) balances during the three and six months ended June 30, 2025 and 2024:
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2025202420252024
Balance at beginning of period$(26,891)$(28,845)$(27,984)$(28,013)
Foreign currency translation adjustments
Other comprehensive income (loss) before reclassifications2,300 (678)3,303 (1,603)
Amounts reclassified from accumulated other comprehensive loss— — — 
Net current-period other comprehensive income (loss)2,300 (678)3,303 (1,603)
Net unrealized gains on investments in securities
Other comprehensive income before reclassifications28 91 118 184 
Amounts reclassified from accumulated other comprehensive loss— — — — 
Net current-period other comprehensive income28 91 118 184 
Balance at end of period$(24,563)$(29,432)$(24,563)$(29,432)
XML 26 R16.htm IDEA: XBRL DOCUMENT v3.25.2
Income Taxes
6 Months Ended
Jun. 30, 2025
Income Tax Disclosure [Abstract]  
Income Taxes Income Taxes
The Company is subject to income tax in multiple jurisdictions and the use of estimates is required to determine the provision for income taxes. For the three months ended June 30, 2025 and 2024, the Company recorded an income tax provision of $2.2 million and $2.8 million, respectively. For the six months ended June 30, 2025 and 2024, the Company recorded an income tax provision of $4.6 million and $5.3 million, respectively. The income tax provision is based on the estimated annual effective tax rate for the year applied to pre-tax income. The effective income tax rate for the three months ended June 30, 2025 was 33.7 percent compared to 38.3 percent in the same period of the prior year. The effective tax rate decreased by 4.6 percent for the three months ended June 30, 2025 when compared to the same period in 2024, primarily due to a decrease in tax expense from the vesting of restricted stock units and the exercise of stock options. The effective income tax rate for the six months ended June 30, 2025 was 36.6 percent compared to 35.0 percent in the same period of the prior year. The effective tax rate increased by 1.6 percent for the six months ended June 30, 2025 when compared to the same period in 2024, primarily due to an increase in losses in jurisdictions that are not eligible for tax benefits due to valuation allowances.
The effective income tax rate for the three and six months ended June 30, 2025 differs from the U.S. federal statutory rate of 21.0 percent due to various factors, including operating in multiple state and foreign jurisdictions partially offset by tax credits for which the Company qualifies.
The Company had unrecognized tax benefits totaling $3.7 million as of June 30, 2025 and $3.4 million as of December 31, 2024, respectively, that if recognized would result in a reduction of the Company’s effective tax rate. The liabilities are classified as other long-term liabilities in the accompanying consolidated balance sheets. The Company recognizes interest and penalties related to income tax matters in income tax expense and reports the liability in current or long-term income taxes payable as appropriate.
On July 4, 2025, the U.S. enacted H.R. 1 "A bill to provide for reconciliation pursuant to Title II of H. Con. Res. 14", commonly referred to as the One Big Beautiful Bill Act (OBBBA). Changes in tax laws may affect recorded deferred tax assets and deferred tax liabilities and our effective tax rate in the future and we continue to evaluate the impacts the new legislation will have on the Condensed Consolidated Financial Statements. As a result of the enactment of H.R. 1, we anticipate an impact to the deferred tax liability and the income tax payable related to the provisions for 100% bonus depreciation for assets placed in service after January 19, 2025 and full expensing of domestic research and experimental expenditures. We do not expect any material change to our ongoing tax rate as a result of this legislation.
XML 27 R17.htm IDEA: XBRL DOCUMENT v3.25.2
Segment Reporting
6 Months Ended
Jun. 30, 2025
Segment Reporting [Abstract]  
Segment Reporting Segment Reporting
The Company’s reportable segments are based on the internal reporting used by the Company’s Chief Executive Officer, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Company’s reportable segments are based upon geographic region, consisting of the United States and Europe. The Corporate Unallocated category includes non-reportable segments, as well as research and development and general and administrative costs that the Company does not allocate directly to its operating segments.
Intercompany transactions primarily relate to intercontinental activity and have been eliminated and are excluded from the reported amounts. The difference between income from operations and pre-tax income relates to foreign currency-related gains and losses and interest income on cash balances and investments, which are not allocated to business segments.
The following table summarizes selected financial information by reportable segments:
Three Months Ended June 30, 2025
(in thousands)
United StatesEuropeCorporate UnallocatedTotal
Revenue$110,712 $24,351 $— $135,063 
Segment expenses1
83,025 29,170 17,750 129,945 
Exit, Disposal and Goodwill impairment costs— 149 — 149 
Income (Loss) from Operations$27,687 $(4,968)$(17,750)$4,969 
Three Months Ended June 30, 2024
(in thousands)
United StatesEuropeCorporate UnallocatedTotal
Revenue$98,541 $27,090 $— $125,631 
Segment expenses1
74,300 28,822 16,510 119,632 
Exit, Disposal and Goodwill impairment costs— — — — 
Income (Loss) from Operations$24,241 $(1,732)$(16,510)$5,999 
Six Months Ended June 30, 2025
(in thousands)
United StatesEuropeCorporate UnallocatedTotal
Revenue$210,979 $50,289 $— $261,268 
Segment expenses1
157,795 58,970 34,893 251,658 
Exit, Disposal and Goodwill impairment costs— 110 — 110 
Income (Loss) from Operations$53,184 $(8,791)$(34,893)$9,500 
Six Months Ended June 30, 2024
(in thousands)
United StatesEuropeCorporate UnallocatedTotal
Revenue$200,022 $53,499 $— $253,521 
Segment expenses1
149,449 57,675 33,571 240,695 
Exit, Disposal and Goodwill impairment costs— — — — 
Income (Loss) from Operations$50,573 $(4,176)$(33,571)$12,826 
1 Segment expenses consist primarily of raw materials, equipment depreciation, employee compensation including benefits, commissions and stock-based compensation, facilities costs and overhead allocations associated with the manufacturing process for molds and custom parts, marketing programs such as electronic, print and pay-per-click advertising and trade shows and other related costs for our United States and Europe reportable segments. Segment expenses for our Corporate Unallocated reportable segment consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements of existing product
lines, software developed for internal use, maintenance of internally developed software, quality assurance and testing, employee compensation including benefits and stock-based compensation, severance, professional service fees related to accounting, tax and legal, and other related overhead costs.
Total long-lived assets, expenditures for additions to long-lived assets, and depreciation and amortization expense were as follows:
(in thousands)June 30,
2025
December 31,
2024
Total long-lived assets:
United States$171,170 $181,291 
Europe44,607 45,972 
Total Long-lived Assets$215,777 $227,263 
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2025202420252024
Expenditures for additions to long-lived assets:
United States$1,125 $3,532 $2,293 $4,366 
Europe343 665 437 2,418 
Total expenditures for additions to long-lived assets$1,468 $4,197 $2,730 $6,784 
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2025202420252024
Depreciation and Amortization:
United States$7,003 $7,186 $14,012 $14,511 
Europe1,484 1,732 3,090 3,476 
Corporate Unallocated83 54 $162 $88 
Total depreciation and amortization$8,570 $8,972 $17,264 $18,075 
Revenue by product line the three and six months ended June 30, 2025 and 2024 were as follows:
Three Months Ended
June 30,
Six Months Ended
June 30,
(dollars in thousands)2025202420252024
Revenue:
Injection Molding$47,415 $49,080 $96,138 $101,743 
CNC Machining61,945 51,239 114,788 101,171 
3D Printing21,215 21,281 41,409 42,863 
Sheet Metal4,303 3,922 8,514 7,475 
Other Revenue185 109 419 269 
Total Revenue$135,063 $125,631 $261,268 $253,521 
XML 28 R18.htm IDEA: XBRL DOCUMENT v3.25.2
Pay vs Performance Disclosure - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2025
Mar. 31, 2025
Jun. 30, 2024
Mar. 31, 2024
Jun. 30, 2025
Jun. 30, 2024
Pay vs Performance Disclosure            
Net income $ 4,427 $ 3,599 $ 4,540 $ 5,268 $ 8,026 $ 9,808
XML 29 R19.htm IDEA: XBRL DOCUMENT v3.25.2
Insider Trading Arrangements
3 Months Ended
Jun. 30, 2025
Trading Arrangements, by Individual  
Rule 10b5-1 Arrangement Adopted false
Non-Rule 10b5-1 Arrangement Adopted false
Rule 10b5-1 Arrangement Terminated false
Non-Rule 10b5-1 Arrangement Terminated false
XML 30 R20.htm IDEA: XBRL DOCUMENT v3.25.2
Net Income per Common Share (Tables)
6 Months Ended
Jun. 30, 2025
Earnings Per Share [Abstract]  
Schedule of Earnings Per Share, Basic and Diluted
The table below sets forth the computation of basic and diluted net income per share:
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands, except share and per share amounts)2025202420252024
Net income$4,427 $4,540 $8,026 $9,808 
Basic - weighted-average shares outstanding:23,900,39025,313,03624,018,11925,473,937
Effect of dilutive securities:
Employee stock options and other201,20259,936273,12799,407
Diluted - weighted-average shares outstanding:24,101,59225,372,97224,291,24625,573,344
Net income per share:
Basic$0.19 $0.18 $0.33 $0.39 
Diluted$0.18 $0.18 $0.33 $0.38 
XML 31 R21.htm IDEA: XBRL DOCUMENT v3.25.2
Goodwill and Other Intangible Assets (Tables)
6 Months Ended
Jun. 30, 2025
Goodwill and Intangible Assets Disclosure [Abstract]  
Schedule of Finite-Lived Intangible Assets
Intangible assets other than goodwill at June 30, 2025 and December 31, 2024 were as follows:
June 30, 2025December 31, 2024Useful
Life (in years)
Weighted Average
Useful Life Remaining
(in years)
(in thousands)GrossAccumulated
Amortization
NetGrossAccumulated
Amortization
Net
Intangible assets with finite lives:
Non-compete agreement$851 $(786)$65 $819 $(703)$116 
2.0 - 5.0
0.4
Software technology13,229 (9,808)3,421 13,229 (9,123)4,106 10.02.5
Software platform27,135 (10,121)17,014 25,657 (8,457)17,200 12.07.6
Total intangible assets$41,215 $(20,715)$20,500 $39,705 $(18,283)$21,422 
Schedule of Finite-Lived Intangible Assets, Future Amortization Expense
Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets and current exchange rates is as follows:
(in thousands)Estimated Amortization Expense
Remaining 2025$1,862
20263,622
20273,613
20282,244
20292,244
Thereafter6,915
Total estimated amortization expense$20,500
XML 32 R22.htm IDEA: XBRL DOCUMENT v3.25.2
Fair Value Measurements (Tables)
6 Months Ended
Jun. 30, 2025
Fair Value Disclosures [Abstract]  
Schedule of Fair Value, Assets Measured on Recurring Basis
The following table summarizes financial assets as of June 30, 2025 and December 31, 2024 measured at fair value on a recurring basis:
June 30, 2025December 31, 2024
(in thousands)Level 1Level 2Level 3Level 1Level 2Level 3
Financial Assets:
Cash$82,748 $— $— $86,366 $— $— 
Money market mutual fund7,634 — — 2,705 — — 
Marketable securities16,270 16,571 — 17,261 14,531 — 
Total$106,652 $16,571 $— $106,332 $14,531 $— 
XML 33 R23.htm IDEA: XBRL DOCUMENT v3.25.2
Marketable Securities (Tables)
6 Months Ended
Jun. 30, 2025
Investments, Debt and Equity Securities [Abstract]  
Schedule of Debt Securities, Available-for-Sale The following table summarizes information regarding the Company’s short-term and long-term marketable securities as of June 30, 2025 and December 31, 2024:
June 30, 2025
(in thousands)CostUnrealized GainsUnrealized LossesFair Value
U.S. government agency securities$1,000 $$— $1,003 
Corporate debt securities15,914 (27)15,889 
U.S. municipal securities8,954 17 (8)8,963 
U.S. treasury bonds7,000 (15)6,986 
Total marketable securities$32,868 $23 $(50)$32,841 
December 31, 2024
(in thousands)CostUnrealized GainsUnrealized LossesFair Value
U.S. government agency securities$8,323 $— $(22)$8,301 
Corporate debt securities15,852 — (82)15,770 
U.S. municipal securities6,762 — (38)6,724 
U.S. treasury bonds1,000 — (3)997 
Total marketable securities$31,937 $— $(145)$31,792 
Schedule of Investments Classified by Contractual Maturity Date
The June 30, 2025 balance of available-for-sale debt securities by contractual maturity is shown in the following table at fair value. Actual maturities may differ from contractual maturities because the issuers of the securities may have the right to prepay obligations without prepayment penalties.
(in thousands)June 30,
2025
Due in one year or less$12,804 
Due after one year through five years20,037 
Total marketable securities$32,841 
XML 34 R24.htm IDEA: XBRL DOCUMENT v3.25.2
Inventory (Tables)
6 Months Ended
Jun. 30, 2025
Inventory Disclosure [Abstract]  
Schedule of Inventory, Current
The Company’s inventory consisted of the following as of the dates indicated:
(in thousands)June 30,
2025
December 31,
2024
Total inventory$13,886 $12,989 
Allowance for obsolescence(717)(684)
Inventory, net of allowance$13,169 $12,305 
XML 35 R25.htm IDEA: XBRL DOCUMENT v3.25.2
Stock-Based Compensation (Tables)
6 Months Ended
Jun. 30, 2025
Share-Based Payment Arrangement [Abstract]  
Schedule of Share-Based Payment Arrangement, Option, Activity
The following table summarizes stock option activity during the six months ended June 30, 2025:
Stock OptionsWeighted-
Average
Exercise Price
Options outstanding at December 31, 2024445,136$51.34 
Granted139,87239.32 
Exercised(8,762)33.77 
Forfeited(93,350)37.31 
Expired(16,354)87.74 
Options outstanding at June 30, 2025466,542$49.60 
Exercisable at June 30, 2025254,268$60.44 
Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions
The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the six months ended June 30, 2025 and 2024:
Six Months Ended
June 30,
20252024
Risk-free interest rate
4.13% - 4.17%
4.28% - 4.30%
Expected life (years)
6.25
6.25
Expected volatility
52.12% - 52.99%
50.62% - 50.72%
Expected dividend yield0%0%
Schedule of Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity
The following table summarizes restricted stock units activity during the six months ended June 30, 2025:
Restricted
Stock Units
Weighted-
Average
Grant Date
Fair Value
Per Share
Restricted stock units at December 31, 2024763,261$38.25 
Granted278,50039.95 
Restrictions lapsed(212,421)40.55 
Forfeited(85,562)36.57 
Restricted stock units at June 30, 2025743,778$38.42 
Schedule of Nonvested Performance-Based Units Activity
The following table summarizes performance stock units activity during the six months ended June 30, 2025:
Performance
Stock Units
Weighted-
Average
Grant Date
Fair Value
Per Share
Performance stock units at December 31, 2024180,173$60.75 
Granted1
153,50359.71 
Restrictions lapsed(32,977)96.41
Performance change— 
Forfeited(68,887)57
Performance stock units at June 30, 2025231,812$56.17 
1 Includes a target number of 54,320 PSUs granted as part of the May 23, 2025, Inducement Awards, 27,160 of which have the same market condition as the PSUs granted under the 2022 Plan as described above, and 27,160 of which also include a performance condition with anywhere between 0 percent and 100 percent of the target number capable of being achieved during two six-month performance periods and then anywhere between 0 percent and 200 percent of such achieved PSUs capable of being earned and vesting during a three-year performance period depending on the Company's performance in the final year of the performance period and the award recipient's continued employment.
Schedule of Share-based Payment Award, Awards Other Than Stock Options, Valuation Assumptions
The following table provides the assumptions used in the Monte Carlo pricing model valuation of PSUs during the six months ended June 30, 2025 and 2024:
Six Months Ended
June 30,
20252024
Risk-free interest rate
3.98% - 4.08%
4.37%
Expected life (years)
2.61 - 2.85
2.88
Expected volatility
52.40% - 53.20%
51.40%
Expected dividend yield0%0%
Schedule of Share-Based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions
The following table presents the assumptions used to estimate the fair value of the ESPP during the six months ended June 30, 2025 and 2024:
Six Months Ended
June 30,
20252024
Risk-free interest rate
4.29%
5.07% - 5.16%
Expected life (months)6.006.00
Expected volatility
65.60%
30.97% - 47.92%
Expected dividend yield0%0%
XML 36 R26.htm IDEA: XBRL DOCUMENT v3.25.2
Accumulated Other Comprehensive Income (Loss) (Tables)
6 Months Ended
Jun. 30, 2025
Regulated Operations [Abstract]  
Schedule of Comprehensive Income (Loss)
The following table presents the changes in accumulated other comprehensive income (loss) balances during the three and six months ended June 30, 2025 and 2024:
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2025202420252024
Balance at beginning of period$(26,891)$(28,845)$(27,984)$(28,013)
Foreign currency translation adjustments
Other comprehensive income (loss) before reclassifications2,300 (678)3,303 (1,603)
Amounts reclassified from accumulated other comprehensive loss— — — 
Net current-period other comprehensive income (loss)2,300 (678)3,303 (1,603)
Net unrealized gains on investments in securities
Other comprehensive income before reclassifications28 91 118 184 
Amounts reclassified from accumulated other comprehensive loss— — — — 
Net current-period other comprehensive income28 91 118 184 
Balance at end of period$(24,563)$(29,432)$(24,563)$(29,432)
XML 37 R27.htm IDEA: XBRL DOCUMENT v3.25.2
Segment Reporting (Tables)
6 Months Ended
Jun. 30, 2025
Segment Reporting [Abstract]  
Schedule of Segment Reporting Information, by Segment
The following table summarizes selected financial information by reportable segments:
Three Months Ended June 30, 2025
(in thousands)
United StatesEuropeCorporate UnallocatedTotal
Revenue$110,712 $24,351 $— $135,063 
Segment expenses1
83,025 29,170 17,750 129,945 
Exit, Disposal and Goodwill impairment costs— 149 — 149 
Income (Loss) from Operations$27,687 $(4,968)$(17,750)$4,969 
Three Months Ended June 30, 2024
(in thousands)
United StatesEuropeCorporate UnallocatedTotal
Revenue$98,541 $27,090 $— $125,631 
Segment expenses1
74,300 28,822 16,510 119,632 
Exit, Disposal and Goodwill impairment costs— — — — 
Income (Loss) from Operations$24,241 $(1,732)$(16,510)$5,999 
Six Months Ended June 30, 2025
(in thousands)
United StatesEuropeCorporate UnallocatedTotal
Revenue$210,979 $50,289 $— $261,268 
Segment expenses1
157,795 58,970 34,893 251,658 
Exit, Disposal and Goodwill impairment costs— 110 — 110 
Income (Loss) from Operations$53,184 $(8,791)$(34,893)$9,500 
Six Months Ended June 30, 2024
(in thousands)
United StatesEuropeCorporate UnallocatedTotal
Revenue$200,022 $53,499 $— $253,521 
Segment expenses1
149,449 57,675 33,571 240,695 
Exit, Disposal and Goodwill impairment costs— — — — 
Income (Loss) from Operations$50,573 $(4,176)$(33,571)$12,826 
1 Segment expenses consist primarily of raw materials, equipment depreciation, employee compensation including benefits, commissions and stock-based compensation, facilities costs and overhead allocations associated with the manufacturing process for molds and custom parts, marketing programs such as electronic, print and pay-per-click advertising and trade shows and other related costs for our United States and Europe reportable segments. Segment expenses for our Corporate Unallocated reportable segment consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements of existing product
lines, software developed for internal use, maintenance of internally developed software, quality assurance and testing, employee compensation including benefits and stock-based compensation, severance, professional service fees related to accounting, tax and legal, and other related overhead costs.
Schedule of Long-Lived Assets by Geographic Areas
Total long-lived assets, expenditures for additions to long-lived assets, and depreciation and amortization expense were as follows:
(in thousands)June 30,
2025
December 31,
2024
Total long-lived assets:
United States$171,170 $181,291 
Europe44,607 45,972 
Total Long-lived Assets$215,777 $227,263 
Schedule of Expenditures for Additions to Long-lived Assets by Geographic Region
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2025202420252024
Expenditures for additions to long-lived assets:
United States$1,125 $3,532 $2,293 $4,366 
Europe343 665 437 2,418 
Total expenditures for additions to long-lived assets$1,468 $4,197 $2,730 $6,784 
Schedule of Depreciation and Amortization by Geographic Region
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2025202420252024
Depreciation and Amortization:
United States$7,003 $7,186 $14,012 $14,511 
Europe1,484 1,732 3,090 3,476 
Corporate Unallocated83 54 $162 $88 
Total depreciation and amortization$8,570 $8,972 $17,264 $18,075 
Schedule of Disaggregation of Revenue
Revenue by product line the three and six months ended June 30, 2025 and 2024 were as follows:
Three Months Ended
June 30,
Six Months Ended
June 30,
(dollars in thousands)2025202420252024
Revenue:
Injection Molding$47,415 $49,080 $96,138 $101,743 
CNC Machining61,945 51,239 114,788 101,171 
3D Printing21,215 21,281 41,409 42,863 
Sheet Metal4,303 3,922 8,514 7,475 
Other Revenue185 109 419 269 
Total Revenue$135,063 $125,631 $261,268 $253,521 
XML 38 R28.htm IDEA: XBRL DOCUMENT v3.25.2
Net Income per Common Share - Narrative (Details) - shares
3 Months Ended 6 Months Ended
Jun. 30, 2025
Jun. 30, 2024
Jun. 30, 2025
Jun. 30, 2024
Earnings Per Share [Abstract]        
Anti-dilutive options excluded from calculation of diluted weighted average shares outstanding (in shares) 459,386 452,239 446,174 371,313
XML 39 R29.htm IDEA: XBRL DOCUMENT v3.25.2
Net Income per Common Share -Schedule of Computation Of Basic and Diluted Net Income Per Share (Details) - USD ($)
$ / shares in Units, $ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2025
Mar. 31, 2025
Jun. 30, 2024
Mar. 31, 2024
Jun. 30, 2025
Jun. 30, 2024
Earnings Per Share [Abstract]            
Net income $ 4,427 $ 3,599 $ 4,540 $ 5,268 $ 8,026 $ 9,808
Basic - weighted-average shares outstanding (in shares) 23,900,390   25,313,036   24,018,119 25,473,937
Effect of dilutive securities:            
Employee stock options and other (in shares) 201,202   59,936   273,127 99,407
Diluted - weighted-average shares outstanding (in shares) 24,101,592   25,372,972   24,291,246 25,573,344
Net income per share:            
Basic (in dollars per share) $ 0.19   $ 0.18   $ 0.33 $ 0.39
Diluted (in dollars per share) $ 0.18   $ 0.18   $ 0.33 $ 0.38
XML 40 R30.htm IDEA: XBRL DOCUMENT v3.25.2
Goodwill and Other Intangible Assets - Narrative (Details)
€ in Millions
3 Months Ended 6 Months Ended 12 Months Ended
Jan. 22, 2021
USD ($)
Jan. 22, 2021
EUR (€)
Jun. 30, 2025
USD ($)
Jun. 30, 2024
USD ($)
Jun. 30, 2025
USD ($)
Jun. 30, 2024
USD ($)
Dec. 31, 2024
USD ($)
Intangible Asset, Acquired, Finite-Lived [Line Items]              
Goodwill, period increase (decrease)     $ 0   $ 0    
Foreign currency losses         500,000   $ 2,200,000
Amortization expense for intangible assets     $ 900,000 $ 900,000 $ 1,800,000 $ 1,900,000  
Europe | 3D Hubs, Inc. (Hubs)              
Intangible Asset, Acquired, Finite-Lived [Line Items]              
Intangible assets acquired | €   € 11.6          
United States | 3D Hubs, Inc. (Hubs)              
Intangible Asset, Acquired, Finite-Lived [Line Items]              
Intangible assets acquired $ 16,600,000            
XML 41 R31.htm IDEA: XBRL DOCUMENT v3.25.2
Goodwill and Other Intangible Assets - Schedule of Intangible Assets Other Than Goodwill (Details) - USD ($)
$ in Thousands
Jun. 30, 2025
Dec. 31, 2024
Intangible Asset, Acquired, Finite-Lived [Line Items]    
Gross $ 41,215 $ 39,705
Accumulated Amortization (20,715) (18,283)
Net 20,500 21,422
Non-compete agreement    
Intangible Asset, Acquired, Finite-Lived [Line Items]    
Gross 851 819
Accumulated Amortization (786) (703)
Net $ 65 116
Weighted Average Useful Life Remaining (in years) 4 months 24 days  
Non-compete agreement | Minimum    
Intangible Asset, Acquired, Finite-Lived [Line Items]    
Useful Life (in years) 2 years  
Non-compete agreement | Maximum    
Intangible Asset, Acquired, Finite-Lived [Line Items]    
Useful Life (in years) 5 years  
Software technology    
Intangible Asset, Acquired, Finite-Lived [Line Items]    
Gross $ 13,229 13,229
Accumulated Amortization (9,808) (9,123)
Net $ 3,421 4,106
Useful Life (in years) 10 years  
Weighted Average Useful Life Remaining (in years) 2 years 6 months  
Software platform    
Intangible Asset, Acquired, Finite-Lived [Line Items]    
Gross $ 27,135 25,657
Accumulated Amortization (10,121) (8,457)
Net $ 17,014 $ 17,200
Useful Life (in years) 12 years  
Weighted Average Useful Life Remaining (in years) 7 years 7 months 6 days  
XML 42 R32.htm IDEA: XBRL DOCUMENT v3.25.2
Goodwill and Other Intangible Assets - Schedule of Finite-Lived Intangible Assets, Future Amortization Expense (Details) - USD ($)
$ in Thousands
Jun. 30, 2025
Dec. 31, 2024
Finite-Lived Intangible Assets, Net, Amortization Expense, Fiscal Year Maturity [Abstract]    
Remaining 2025 $ 1,862  
2026 3,622  
2027 3,613  
2028 2,244  
2029 2,244  
Thereafter 6,915  
Net $ 20,500 $ 21,422
XML 43 R33.htm IDEA: XBRL DOCUMENT v3.25.2
Fair Value Measurements (Details) - USD ($)
$ in Thousands
Jun. 30, 2025
Dec. 31, 2024
Financial Assets:    
Marketable securities $ 32,841 $ 31,792
Level 1 | Fair Value, Recurring    
Financial Assets:    
Marketable securities 16,270 17,261
Total 106,652 106,332
Level 2 | Fair Value, Recurring    
Financial Assets:    
Marketable securities 16,571 14,531
Total 16,571 14,531
Level 3 | Fair Value, Recurring    
Financial Assets:    
Marketable securities 0 0
Total 0 0
Cash | Level 1 | Fair Value, Recurring    
Financial Assets:    
Cash and cash equivalents 82,748 86,366
Cash | Level 2 | Fair Value, Recurring    
Financial Assets:    
Cash and cash equivalents 0 0
Cash | Level 3 | Fair Value, Recurring    
Financial Assets:    
Cash and cash equivalents 0 0
Money market mutual fund | Level 1 | Fair Value, Recurring    
Financial Assets:    
Cash and cash equivalents 7,634 2,705
Money market mutual fund | Level 2 | Fair Value, Recurring    
Financial Assets:    
Cash and cash equivalents 0 0
Money market mutual fund | Level 3 | Fair Value, Recurring    
Financial Assets:    
Cash and cash equivalents $ 0 $ 0
XML 44 R34.htm IDEA: XBRL DOCUMENT v3.25.2
Marketable Securities - Short-Term and Long-Term Marketable Securities (Details) - USD ($)
$ in Thousands
Jun. 30, 2025
Dec. 31, 2024
Debt Securities, Available-for-Sale [Line Items]    
Cost $ 32,868 $ 31,937
Unrealized Gains 23 0
Unrealized Losses (50) (145)
Fair Value 32,841 31,792
U.S. government agency securities    
Debt Securities, Available-for-Sale [Line Items]    
Cost 1,000 8,323
Unrealized Gains 3 0
Unrealized Losses 0 (22)
Fair Value 1,003 8,301
Corporate debt securities    
Debt Securities, Available-for-Sale [Line Items]    
Cost 15,914 15,852
Unrealized Gains 2 0
Unrealized Losses (27) (82)
Fair Value 15,889 15,770
U.S. municipal securities    
Debt Securities, Available-for-Sale [Line Items]    
Cost 8,954 6,762
Unrealized Gains 17 0
Unrealized Losses (8) (38)
Fair Value 8,963 6,724
U.S. treasury bonds    
Debt Securities, Available-for-Sale [Line Items]    
Cost 7,000 1,000
Unrealized Gains 1 0
Unrealized Losses (15) (3)
Fair Value $ 6,986 $ 997
XML 45 R35.htm IDEA: XBRL DOCUMENT v3.25.2
Marketable Securities - Maturities of Available-For-Sale Debt Securities (Details) - USD ($)
$ in Thousands
Jun. 30, 2025
Dec. 31, 2024
Debt Securities, Available-for-Sale, Fair Value, Fiscal Year Maturity [Abstract]    
Due in one year or less $ 12,804  
Due after one year through five years 20,037  
Total marketable securities $ 32,841 $ 31,792
XML 46 R36.htm IDEA: XBRL DOCUMENT v3.25.2
Inventory (Details) - USD ($)
$ in Thousands
Jun. 30, 2025
Dec. 31, 2024
Inventory Disclosure [Abstract]    
Total inventory $ 13,886 $ 12,989
Allowance for obsolescence (717) (684)
Inventory, net of allowance $ 13,169 $ 12,305
XML 47 R37.htm IDEA: XBRL DOCUMENT v3.25.2
Stock-Based Compensation - Narrative (Details) - USD ($)
$ / shares in Units, $ in Millions
3 Months Ended 6 Months Ended
May 20, 2025
May 23, 2024
Jun. 30, 2025
Jun. 30, 2024
Jun. 30, 2025
Jun. 30, 2024
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]            
Stock-based compensation expense     $ 4.3 $ 4.2 $ 8.3 $ 8.5
Stock-based award, weighted-average grant date fair value (in dollars per share)         $ 21.81  
ESPP            
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]            
Discount from market price (in percent)         15.00%  
Offering period (in months)         6 months  
Purchase price of common stock (in percent)         85.00%  
Stock Options            
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]            
Stock-based award, term (in years)         10 years  
Stock-based award, vesting period (in years)         4 years  
Stock based award, unrecognized compensation expense     3.9   $ 3.9  
Stock based award, unrecognized compensation expense, period for recognition (in years)         3 years 1 month 6 days  
Restricted Stock Units            
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]            
Stock based award, unrecognized compensation expense     21.7   $ 21.7  
Stock based award, unrecognized compensation expense, period for recognition (in years)         2 years 10 months 24 days  
Restricted Stock Units | Minimum            
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]            
Stock-based award, vesting period (in years)         3 years  
Restricted Stock Units | Maximum            
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]            
Stock-based award, vesting period (in years)         4 years  
Performance Stock Units            
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]            
Stock-based award, vesting period (in years)         3 years  
Stock based award, unrecognized compensation expense     $ 8.6   $ 8.6  
Stock based award, unrecognized compensation expense, period for recognition (in years)         2 years 3 months 18 days  
Percentage of target, capable of being earned and vesting, lower limit     0.00%   0.00%  
Percentage of target, capable of being earned and vesting, upper limit     200.00%   200.00%  
Long-Term Incentive Plan 2022            
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]            
Number of shares available for issuance pursuant to awards (in shares) 296,000 430,000        
Stock-based award, term (in years)         10 years  
XML 48 R38.htm IDEA: XBRL DOCUMENT v3.25.2
Stock-Based Compensation - Option Activity (Details)
6 Months Ended
Jun. 30, 2025
$ / shares
shares
Stock Options  
Options outstanding, beginning balance (in shares) | shares 445,136
Granted (in shares) | shares 139,872
Exercised (in shares) | shares (8,762)
Forfeited (in shares) | shares (93,350)
Expired (in shares) | shares (16,354)
Options outstanding, ending balance (in shares) | shares 466,542
Option exercisable (in shares) | shares 254,268
Weighted- Average Exercise Price  
Options outstanding, beginning balance (in dollars per share) | $ / shares $ 51.34
Granted (in dollars per share) | $ / shares 39.32
Exercised (in dollars per share) | $ / shares 33.77
Forfeited (in dollars per share) | $ / shares 37.31
Expired (in dollars per share) | $ / shares 87.74
Options outstanding, ending balance (in dollars per share) | $ / shares 49.60
Options exercisable, weighted-average exercise price (in dollars per share) | $ / shares $ 60.44
XML 49 R39.htm IDEA: XBRL DOCUMENT v3.25.2
Stock-Based Compensation - Weighted Average Assumptions (Details)
6 Months Ended
Jun. 30, 2025
Jun. 30, 2024
Employee Stock Purchase Plan    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Risk-free interest rate 4.29%  
Expected life (years) 6 years 6 years
Expected volatility 65.60%  
Expected dividend yield 0.00% 0.00%
Minimum | Employee Stock Purchase Plan    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Risk-free interest rate   5.07%
Expected volatility   30.97%
Maximum | Employee Stock Purchase Plan    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Risk-free interest rate   5.16%
Expected volatility   47.92%
Stock Options    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Expected life (years) 6 years 3 months 6 years 3 months
Expected dividend yield 0.00% 0.00%
Stock Options | Minimum    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Risk-free interest rate 4.13% 4.28%
Expected volatility 52.12% 50.62%
Stock Options | Maximum    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Risk-free interest rate 4.17% 4.30%
Expected volatility 52.99% 50.72%
Performance Stock Units    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Risk-free interest rate   4.37%
Expected life (years)   2 years 10 months 17 days
Expected volatility   51.40%
Expected dividend yield 0.00% 0.00%
Performance Stock Units | Minimum    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Risk-free interest rate 3.98%  
Expected life (years) 2 years 7 months 9 days  
Expected volatility 52.40%  
Performance Stock Units | Maximum    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Risk-free interest rate 4.08%  
Expected life (years) 2 years 10 months 6 days  
Expected volatility 53.20%  
XML 50 R40.htm IDEA: XBRL DOCUMENT v3.25.2
Stock-Based Compensation - Stock Activity (Details)
6 Months Ended
May 23, 2025
performancePeriod
shares
Jun. 30, 2025
$ / shares
shares
Performance Stock Units    
Performance Stock Units    
Beginning balance (in shares)   180,173
Granted (in shares)   153,503
Restrictions lapsed (in shares)   (32,977)
Performance change (in shares)   0
Forfeited (in shares)   (68,887)
Ending balance (in shares)   231,812
Weighted- Average Grant Date Fair Value Per Share    
Beginning balance (in dollars per share) | $ / shares   $ 60.75
Granted (in dollars per share) | $ / shares   59.71
Restrictions lapsed (in dollars per share) | $ / shares   96.41
Performance change (in dollars per share) | $ / shares   0
Forfeited (in dollars per share) | $ / shares   57
Ending balance (in dollars per share) | $ / shares   $ 56.17
Percentage of target, capable of being earned and vesting, lower limit   0.00%
Percentage of target, capable of being earned and vesting, upper limit   200.00%
Stock-based award, vesting period (in years)   3 years
Performance Stock Units | Inducement Awards    
Performance Stock Units    
Granted (in shares) 54,320  
Performance Stock Units | Inducement Awards, Market Conditions    
Performance Stock Units    
Granted (in shares) 27,160  
Performance Stock Units | Inducement Awards, Performance Condition    
Performance Stock Units    
Granted (in shares) 27,160  
Weighted- Average Grant Date Fair Value Per Share    
Percentage of target, capable of being achieved during performance periods, lower 0.00%  
Percentage of target, capable of being achieved during performance periods, upper limit 100.00%  
Number of performance periods | performancePeriod 2  
Award performance period (in years) 6 months  
Percentage of target, capable of being earned and vesting, lower limit 0.00%  
Percentage of target, capable of being earned and vesting, upper limit 200.00%  
Stock-based award, vesting period (in years) 3 years  
Restricted Stock Units    
Performance Stock Units    
Beginning balance (in shares)   763,261
Granted (in shares)   278,500
Restrictions lapsed (in shares)   (212,421)
Forfeited (in shares)   (85,562)
Ending balance (in shares)   743,778
Weighted- Average Grant Date Fair Value Per Share    
Beginning balance (in dollars per share) | $ / shares   $ 38.25
Granted (in dollars per share) | $ / shares   39.95
Restrictions lapsed (in dollars per share) | $ / shares   40.55
Forfeited (in dollars per share) | $ / shares   36.57
Ending balance (in dollars per share) | $ / shares   $ 38.42
XML 51 R41.htm IDEA: XBRL DOCUMENT v3.25.2
Accumulated Other Comprehensive Income (Loss) (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2025
Jun. 30, 2024
Jun. 30, 2025
Jun. 30, 2024
AOCI Attributable to Parent, Net of Tax [Roll Forward]        
Beginning balance $ 656,801 $ 687,310 $ 670,151 $ 695,295
Net unrealized gains on investments in securities        
Ending balance 664,707 685,236 664,707 685,236
Accumulated Other Comprehensive Loss        
AOCI Attributable to Parent, Net of Tax [Roll Forward]        
Beginning balance (26,891) (28,845) (27,984) (28,013)
Net unrealized gains on investments in securities        
Ending balance (24,563) (29,432) (24,563) (29,432)
Foreign currency translation adjustments        
Foreign currency translation adjustments        
Other comprehensive income (loss) before reclassifications 2,300 (678) 3,303 (1,603)
Amounts reclassified from accumulated other comprehensive loss 0 0 0 0
Net unrealized gains on investments in securities        
Other comprehensive income before reclassifications 2,300 (678) 3,303 (1,603)
Amounts reclassified from accumulated other comprehensive loss 0 0 0 0
Net current-period other comprehensive income (loss) 2,300 (678) 3,303 (1,603)
Net unrealized gains on investments in securities        
Foreign currency translation adjustments        
Other comprehensive income (loss) before reclassifications 28 91 118 184
Amounts reclassified from accumulated other comprehensive loss 0 0 0 0
Net unrealized gains on investments in securities        
Other comprehensive income before reclassifications 28 91 118 184
Amounts reclassified from accumulated other comprehensive loss 0 0 0 0
Net current-period other comprehensive income (loss) $ 28 $ 91 $ 118 $ 184
XML 52 R42.htm IDEA: XBRL DOCUMENT v3.25.2
Income Taxes (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2025
Jun. 30, 2024
Jun. 30, 2025
Jun. 30, 2024
Dec. 31, 2024
Income Tax Disclosure [Abstract]          
Provision for income taxes $ 2,247 $ 2,820 $ 4,633 $ 5,278  
Effective income tax rate (in percent) 33.70% 38.30% 36.60% 35.00%  
Effective income tax rate, (decrease) increase during period (in percent) (4.60%)   1.60%    
Federal statutory rate (in percent) 21.00%   21.00%    
Unrecognized tax benefits $ 3,700   $ 3,700   $ 3,400
XML 53 R43.htm IDEA: XBRL DOCUMENT v3.25.2
Segment Reporting - Schedule of Reportable Segments (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2025
Jun. 30, 2024
Jun. 30, 2025
Jun. 30, 2024
Segment Reporting Information [Line Items]        
Revenue $ 135,063 $ 125,631 $ 261,268 $ 253,521
Segment expenses 129,945 119,632 251,658 240,695
Exit, Disposal and Goodwill impairment cost (benefit) 149 0 110 0
Income from operations 4,969 5,999 9,500 12,826
United States        
Segment Reporting Information [Line Items]        
Revenue 110,712 98,541 210,979 200,022
Segment expenses 83,025 74,300 157,795 149,449
Exit, Disposal and Goodwill impairment cost (benefit) 0 0 0 0
Income from operations 27,687 24,241 53,184 50,573
Europe        
Segment Reporting Information [Line Items]        
Revenue 24,351 27,090 50,289 53,499
Segment expenses 29,170 28,822 58,970 57,675
Exit, Disposal and Goodwill impairment cost (benefit) 149 0 110 0
Income from operations (4,968) (1,732) (8,791) (4,176)
Corporate Unallocated        
Segment Reporting Information [Line Items]        
Revenue 0 0 0 0
Segment expenses 17,750 16,510 34,893 33,571
Exit, Disposal and Goodwill impairment cost (benefit) 0 0 0 0
Income from operations $ (17,750) $ (16,510) $ (34,893) $ (33,571)
XML 54 R44.htm IDEA: XBRL DOCUMENT v3.25.2
Segment Reporting - Schedule of Long-Lived Assets by Geographic Areas (Details) - USD ($)
$ in Thousands
Jun. 30, 2025
Dec. 31, 2024
Segment Reporting Information [Line Items]    
Total Long-lived Assets $ 215,777 $ 227,263
United States    
Segment Reporting Information [Line Items]    
Total Long-lived Assets 171,170 181,291
Europe    
Segment Reporting Information [Line Items]    
Total Long-lived Assets $ 44,607 $ 45,972
XML 55 R45.htm IDEA: XBRL DOCUMENT v3.25.2
Segment Reporting - Schedule of Expenditures For Additions To Long-Lived Assets (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2025
Jun. 30, 2024
Jun. 30, 2025
Jun. 30, 2024
Segment Reporting Information [Line Items]        
Total expenditures for additions to long-lived assets $ 1,468 $ 4,197 $ 2,730 $ 6,784
United States        
Segment Reporting Information [Line Items]        
Total expenditures for additions to long-lived assets 1,125 3,532 2,293 4,366
Europe        
Segment Reporting Information [Line Items]        
Total expenditures for additions to long-lived assets $ 343 $ 665 $ 437 $ 2,418
XML 56 R46.htm IDEA: XBRL DOCUMENT v3.25.2
Segment Reporting - Schedule of Depreciation and Amortization (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2025
Jun. 30, 2024
Jun. 30, 2025
Jun. 30, 2024
Segment Reporting Information [Line Items]        
Total depreciation and amortization $ 8,570 $ 8,972 $ 17,264 $ 18,075
United States        
Segment Reporting Information [Line Items]        
Total depreciation and amortization 7,003 7,186 14,012 14,511
Europe        
Segment Reporting Information [Line Items]        
Total depreciation and amortization 1,484 1,732 3,090 3,476
Corporate Unallocated        
Segment Reporting Information [Line Items]        
Total depreciation and amortization $ 83 $ 54 $ 162 $ 88
XML 57 R47.htm IDEA: XBRL DOCUMENT v3.25.2
Segment Reporting - Schedule of Disaggregation of Revenue (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2025
Jun. 30, 2024
Jun. 30, 2025
Jun. 30, 2024
Segment Reporting Information [Line Items]        
Total Revenue $ 135,063 $ 125,631 $ 261,268 $ 253,521
Injection Molding        
Segment Reporting Information [Line Items]        
Total Revenue 47,415 49,080 96,138 101,743
CNC Machining        
Segment Reporting Information [Line Items]        
Total Revenue 61,945 51,239 114,788 101,171
3D Printing        
Segment Reporting Information [Line Items]        
Total Revenue 21,215 21,281 41,409 42,863
Sheet Metal        
Segment Reporting Information [Line Items]        
Total Revenue 4,303 3,922 8,514 7,475
Other Revenue        
Segment Reporting Information [Line Items]        
Total Revenue $ 185 $ 109 $ 419 $ 269
XML 58 Show.js IDEA: XBRL DOCUMENT // Edgar(tm) Renderer was created by staff of the U.S. Securities and Exchange Commission. Data and content created by government employees within the scope of their employment are not subject to domestic copyright protection. 17 U.S.C. 105. var Show={};Show.LastAR=null,Show.showAR=function(a,r,w){if(Show.LastAR)Show.hideAR();var e=a;while(e&&e.nodeName!='TABLE')e=e.nextSibling;if(!e||e.nodeName!='TABLE'){var ref=((window)?w.document:document).getElementById(r);if(ref){e=ref.cloneNode(!0); e.removeAttribute('id');a.parentNode.appendChild(e)}} if(e)e.style.display='block';Show.LastAR=e};Show.hideAR=function(){Show.LastAR.style.display='none'};Show.toggleNext=function(a){var e=a;while(e.nodeName!='DIV')e=e.nextSibling;if(!e.style){}else if(!e.style.display){}else{var d,p_;if(e.style.display=='none'){d='block';p='-'}else{d='none';p='+'} e.style.display=d;if(a.textContent){a.textContent=p+a.textContent.substring(1)}else{a.innerText=p+a.innerText.substring(1)}}} XML 59 report.css IDEA: XBRL DOCUMENT /* Updated 2009-11-04 */ /* v2.2.0.24 */ /* DefRef Styles */ .report table.authRefData{ background-color: #def; border: 2px solid #2F4497; font-size: 1em; position: absolute; } .report table.authRefData a { display: block; font-weight: bold; } .report table.authRefData p { margin-top: 0px; } .report table.authRefData .hide { background-color: #2F4497; padding: 1px 3px 0px 0px; text-align: right; } .report table.authRefData .hide a:hover { background-color: #2F4497; } .report table.authRefData .body { height: 150px; overflow: auto; width: 400px; } .report table.authRefData table{ font-size: 1em; } /* Report Styles */ .pl a, .pl a:visited { color: black; text-decoration: none; } /* table */ .report { background-color: white; border: 2px solid #acf; clear: both; color: black; font: normal 8pt Helvetica, Arial, san-serif; margin-bottom: 2em; } .report hr { border: 1px solid #acf; } /* Top labels */ .report th { background-color: #acf; color: black; font-weight: bold; text-align: center; } .report th.void { background-color: transparent; color: #000000; font: bold 10pt Helvetica, Arial, san-serif; text-align: left; } .report .pl { text-align: left; vertical-align: top; white-space: normal; width: 200px; white-space: normal; /* word-wrap: break-word; */ } .report td.pl a.a { cursor: pointer; display: block; width: 200px; overflow: hidden; } .report td.pl div.a { width: 200px; } .report td.pl a:hover { background-color: #ffc; } /* Header rows... */ .report tr.rh { background-color: #acf; color: black; font-weight: bold; } /* Calendars... */ .report .rc { background-color: #f0f0f0; } /* Even rows... */ .report .re, .report .reu { background-color: #def; } .report .reu td { border-bottom: 1px solid black; } /* Odd rows... */ .report .ro, .report .rou { background-color: white; } .report .rou td { border-bottom: 1px solid black; } .report .rou table td, .report .reu table td { border-bottom: 0px solid black; } /* styles for footnote marker */ .report .fn { white-space: nowrap; } /* styles for numeric types */ .report .num, .report .nump { text-align: right; white-space: nowrap; } .report .nump { padding-left: 2em; } .report .nump { padding: 0px 0.4em 0px 2em; } /* styles for text types */ .report .text { text-align: left; white-space: normal; } .report .text .big { margin-bottom: 1em; width: 17em; } .report .text .more { display: none; } .report .text .note { font-style: italic; font-weight: bold; } .report .text .small { width: 10em; } .report sup { font-style: italic; } .report .outerFootnotes { font-size: 1em; } XML 61 FilingSummary.xml IDEA: XBRL DOCUMENT 3.25.2 html 172 237 1 false 41 0 false 6 false false R1.htm 0000001 - Document - Cover Sheet http://www.protolabs.com/role/Cover Cover Cover 1 false false R2.htm 9952151 - Statement - Consolidated Balance Sheets Sheet http://www.protolabs.com/role/ConsolidatedBalanceSheets Consolidated Balance Sheets Statements 2 false false R3.htm 9952152 - Statement - Consolidated Balance Sheets (Parenthetical) Sheet http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical Consolidated Balance Sheets (Parenthetical) Statements 3 false false R4.htm 9952153 - Statement - Consolidated Statements of Comprehensive Income Sheet http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome Consolidated Statements of Comprehensive Income Statements 4 false false R5.htm 9952154 - Statement - Consolidated Statements of Shareholders' Equity Sheet http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity Consolidated Statements of Shareholders' Equity Statements 5 false false R6.htm 9952155 - Statement - Consolidated Statements of Cash Flows Sheet http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows Consolidated Statements of Cash Flows Statements 6 false false R7.htm 9952156 - Disclosure - Basis of Presentation Sheet http://www.protolabs.com/role/BasisofPresentation Basis of Presentation Notes 7 false false R8.htm 9952157 - Disclosure - Recent Accounting Pronouncements Sheet http://www.protolabs.com/role/RecentAccountingPronouncements Recent Accounting Pronouncements Notes 8 false false R9.htm 9952158 - Disclosure - Net Income per Common Share Sheet http://www.protolabs.com/role/NetIncomeperCommonShare Net Income per Common Share Notes 9 false false R10.htm 9952159 - Disclosure - Goodwill and Other Intangible Assets Sheet http://www.protolabs.com/role/GoodwillandOtherIntangibleAssets Goodwill and Other Intangible Assets Notes 10 false false R11.htm 9952160 - Disclosure - Fair Value Measurements Sheet http://www.protolabs.com/role/FairValueMeasurements Fair Value Measurements Notes 11 false false R12.htm 9952161 - Disclosure - Marketable Securities Sheet http://www.protolabs.com/role/MarketableSecurities Marketable Securities Notes 12 false false R13.htm 9952162 - Disclosure - Inventory Sheet http://www.protolabs.com/role/Inventory Inventory Notes 13 false false R14.htm 9952163 - Disclosure - Stock-Based Compensation Sheet http://www.protolabs.com/role/StockBasedCompensation Stock-Based Compensation Notes 14 false false R15.htm 9952164 - Disclosure - Accumulated Other Comprehensive Income (Loss) Sheet http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLoss Accumulated Other Comprehensive Income (Loss) Notes 15 false false R16.htm 9952165 - Disclosure - Income Taxes Sheet http://www.protolabs.com/role/IncomeTaxes Income Taxes Notes 16 false false R17.htm 9952166 - Disclosure - Segment Reporting Sheet http://www.protolabs.com/role/SegmentReporting Segment Reporting Notes 17 false false R18.htm 995410 - Disclosure - Pay vs Performance Disclosure Sheet http://xbrl.sec.gov/ecd/role/PvpDisclosure Pay vs Performance Disclosure Notes 18 false false R19.htm 995445 - Disclosure - Insider Trading Arrangements Sheet http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements Insider Trading Arrangements Notes 19 false false R20.htm 9955511 - Disclosure - Net Income per Common Share (Tables) Sheet http://www.protolabs.com/role/NetIncomeperCommonShareTables Net Income per Common Share (Tables) Tables http://www.protolabs.com/role/NetIncomeperCommonShare 20 false false R21.htm 9955512 - Disclosure - Goodwill and Other Intangible Assets (Tables) Sheet http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsTables Goodwill and Other Intangible Assets (Tables) Tables http://www.protolabs.com/role/GoodwillandOtherIntangibleAssets 21 false false R22.htm 9955513 - Disclosure - Fair Value Measurements (Tables) Sheet http://www.protolabs.com/role/FairValueMeasurementsTables Fair Value Measurements (Tables) Tables http://www.protolabs.com/role/FairValueMeasurements 22 false false R23.htm 9955514 - Disclosure - Marketable Securities (Tables) Sheet http://www.protolabs.com/role/MarketableSecuritiesTables Marketable Securities (Tables) Tables http://www.protolabs.com/role/MarketableSecurities 23 false false R24.htm 9955515 - Disclosure - Inventory (Tables) Sheet http://www.protolabs.com/role/InventoryTables Inventory (Tables) Tables http://www.protolabs.com/role/Inventory 24 false false R25.htm 9955516 - Disclosure - Stock-Based Compensation (Tables) Sheet http://www.protolabs.com/role/StockBasedCompensationTables Stock-Based Compensation (Tables) Tables http://www.protolabs.com/role/StockBasedCompensation 25 false false R26.htm 9955517 - Disclosure - Accumulated Other Comprehensive Income (Loss) (Tables) Sheet http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossTables Accumulated Other Comprehensive Income (Loss) (Tables) Tables http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLoss 26 false false R27.htm 9955518 - Disclosure - Segment Reporting (Tables) Sheet http://www.protolabs.com/role/SegmentReportingTables Segment Reporting (Tables) Tables http://www.protolabs.com/role/SegmentReporting 27 false false R28.htm 9955519 - Disclosure - Net Income per Common Share - Narrative (Details) Sheet http://www.protolabs.com/role/NetIncomeperCommonShareNarrativeDetails Net Income per Common Share - Narrative (Details) Details 28 false false R29.htm 9955520 - Disclosure - Net Income per Common Share -Schedule of Computation Of Basic and Diluted Net Income Per Share (Details) Sheet http://www.protolabs.com/role/NetIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails Net Income per Common Share -Schedule of Computation Of Basic and Diluted Net Income Per Share (Details) Details 29 false false R30.htm 9955521 - Disclosure - Goodwill and Other Intangible Assets - Narrative (Details) Sheet http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails Goodwill and Other Intangible Assets - Narrative (Details) Details 30 false false R31.htm 9955522 - Disclosure - Goodwill and Other Intangible Assets - Schedule of Intangible Assets Other Than Goodwill (Details) Sheet http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails Goodwill and Other Intangible Assets - Schedule of Intangible Assets Other Than Goodwill (Details) Details 31 false false R32.htm 9955523 - Disclosure - Goodwill and Other Intangible Assets - Schedule of Finite-Lived Intangible Assets, Future Amortization Expense (Details) Sheet http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails Goodwill and Other Intangible Assets - Schedule of Finite-Lived Intangible Assets, Future Amortization Expense (Details) Details 32 false false R33.htm 9955524 - Disclosure - Fair Value Measurements (Details) Sheet http://www.protolabs.com/role/FairValueMeasurementsDetails Fair Value Measurements (Details) Details http://www.protolabs.com/role/FairValueMeasurementsTables 33 false false R34.htm 9955525 - Disclosure - Marketable Securities - Short-Term and Long-Term Marketable Securities (Details) Sheet http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails Marketable Securities - Short-Term and Long-Term Marketable Securities (Details) Details 34 false false R35.htm 9955526 - Disclosure - Marketable Securities - Maturities of Available-For-Sale Debt Securities (Details) Sheet http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails Marketable Securities - Maturities of Available-For-Sale Debt Securities (Details) Details 35 false false R36.htm 9955527 - Disclosure - Inventory (Details) Sheet http://www.protolabs.com/role/InventoryDetails Inventory (Details) Details http://www.protolabs.com/role/InventoryTables 36 false false R37.htm 9955528 - Disclosure - Stock-Based Compensation - Narrative (Details) Sheet http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails Stock-Based Compensation - Narrative (Details) Details 37 false false R38.htm 9955529 - Disclosure - Stock-Based Compensation - Option Activity (Details) Sheet http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails Stock-Based Compensation - Option Activity (Details) Details 38 false false R39.htm 9955530 - Disclosure - Stock-Based Compensation - Weighted Average Assumptions (Details) Sheet http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails Stock-Based Compensation - Weighted Average Assumptions (Details) Details 39 false false R40.htm 9955531 - Disclosure - Stock-Based Compensation - Stock Activity (Details) Sheet http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails Stock-Based Compensation - Stock Activity (Details) Details 40 false false R41.htm 9955532 - Disclosure - Accumulated Other Comprehensive Income (Loss) (Details) Sheet http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails Accumulated Other Comprehensive Income (Loss) (Details) Details http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossTables 41 false false R42.htm 9955533 - Disclosure - Income Taxes (Details) Sheet http://www.protolabs.com/role/IncomeTaxesDetails Income Taxes (Details) Details http://www.protolabs.com/role/IncomeTaxes 42 false false R43.htm 9955534 - Disclosure - Segment Reporting - Schedule of Reportable Segments (Details) Sheet http://www.protolabs.com/role/SegmentReportingScheduleofReportableSegmentsDetails Segment Reporting - Schedule of Reportable Segments (Details) Details 43 false false R44.htm 9955535 - Disclosure - Segment Reporting - Schedule of Long-Lived Assets by Geographic Areas (Details) Sheet http://www.protolabs.com/role/SegmentReportingScheduleofLongLivedAssetsbyGeographicAreasDetails Segment Reporting - Schedule of Long-Lived Assets by Geographic Areas (Details) Details 44 false false R45.htm 9955536 - Disclosure - Segment Reporting - Schedule of Expenditures For Additions To Long-Lived Assets (Details) Sheet http://www.protolabs.com/role/SegmentReportingScheduleofExpendituresForAdditionsToLongLivedAssetsDetails Segment Reporting - Schedule of Expenditures For Additions To Long-Lived Assets (Details) Details 45 false false R46.htm 9955537 - Disclosure - Segment Reporting - Schedule of Depreciation and Amortization (Details) Sheet http://www.protolabs.com/role/SegmentReportingScheduleofDepreciationandAmortizationDetails Segment Reporting - Schedule of Depreciation and Amortization (Details) Details 46 false false R47.htm 9955538 - Disclosure - Segment Reporting - Schedule of Disaggregation of Revenue (Details) Sheet http://www.protolabs.com/role/SegmentReportingScheduleofDisaggregationofRevenueDetails Segment Reporting - Schedule of Disaggregation of Revenue (Details) Details 47 false false All Reports Book All Reports prlb-20250630.htm prlb-20250630.xsd prlb-20250630_cal.xml prlb-20250630_def.xml prlb-20250630_lab.xml prlb-20250630_pre.xml http://fasb.org/us-gaap/2025 http://xbrl.sec.gov/dei/2025 http://xbrl.sec.gov/ecd/2025 true true JSON 64 MetaLinks.json IDEA: XBRL DOCUMENT { "version": "2.2", "instance": { "prlb-20250630.htm": { "nsprefix": "prlb", "nsuri": "http://www.protolabs.com/20250630", "dts": { "inline": { "local": [ "prlb-20250630.htm" ] }, "schema": { "local": [ "prlb-20250630.xsd" ], "remote": [ "http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd", "http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd", "http://www.xbrl.org/2003/xl-2003-12-31.xsd", "http://www.xbrl.org/2003/xlink-2003-12-31.xsd", "http://www.xbrl.org/2005/xbrldt-2005.xsd", "http://www.xbrl.org/2006/ref-2006-02-27.xsd", "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd", "http://www.xbrl.org/lrr/role/net-2009-12-16.xsd", "http://www.xbrl.org/lrr/role/reference-2009-12-16.xsd", "https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd", "https://www.xbrl.org/dtr/type/2020-01-21/types.xsd", "https://www.xbrl.org/dtr/type/2024-01-31/types.xsd", "https://xbrl.fasb.org/srt/2025/elts/srt-2025.xsd", "https://xbrl.fasb.org/srt/2025/elts/srt-roles-2025.xsd", "https://xbrl.fasb.org/srt/2025/elts/srt-types-2025.xsd", "https://xbrl.fasb.org/us-gaap/2025/elts/us-gaap-2025.xsd", "https://xbrl.fasb.org/us-gaap/2025/elts/us-roles-2025.xsd", "https://xbrl.fasb.org/us-gaap/2025/elts/us-types-2025.xsd", "https://xbrl.sec.gov/country/2025/country-2025.xsd", "https://xbrl.sec.gov/dei/2025/dei-2025.xsd", "https://xbrl.sec.gov/ecd/2025/ecd-2025.xsd", "https://xbrl.sec.gov/stpr/2025/stpr-2025.xsd" ] }, "calculationLink": { "local": [ "prlb-20250630_cal.xml" ] }, "definitionLink": { "local": [ "prlb-20250630_def.xml" ] }, "labelLink": { "local": [ "prlb-20250630_lab.xml" ] }, "presentationLink": { "local": [ "prlb-20250630_pre.xml" ] } }, "keyStandard": 222, "keyCustom": 15, "axisStandard": 13, "axisCustom": 0, "memberStandard": 26, "memberCustom": 15, "hidden": { "total": 8, "http://xbrl.sec.gov/dei/2025": 5, "http://www.protolabs.com/20250630": 1, "http://fasb.org/us-gaap/2025": 2 }, "contextCount": 172, "entityCount": 1, "segmentCount": 41, "elementCount": 464, "unitCount": 6, "baseTaxonomies": { "http://fasb.org/us-gaap/2025": 733, "http://xbrl.sec.gov/dei/2025": 29, "http://xbrl.sec.gov/ecd/2025": 4 }, "report": { "R1": { "role": "http://www.protolabs.com/role/Cover", "longName": "0000001 - Document - Cover", "shortName": "Cover", "isDefault": "true", "groupType": "document", "subGroupType": "", "menuCat": "Cover", "order": "1", "firstAnchor": { "contextRef": "c-1", "name": "dei:DocumentType", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "dei:DocumentType", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R2": { "role": "http://www.protolabs.com/role/ConsolidatedBalanceSheets", "longName": "9952151 - Statement - Consolidated Balance Sheets", "shortName": "Consolidated Balance Sheets", "isDefault": "false", "groupType": "statement", "subGroupType": "", "menuCat": "Statements", "order": "2", "firstAnchor": { "contextRef": "c-3", "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-3", "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R3": { "role": "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical", "longName": "9952152 - Statement - Consolidated Balance Sheets (Parenthetical)", "shortName": "Consolidated Balance Sheets (Parenthetical)", "isDefault": "false", "groupType": "statement", "subGroupType": "parenthetical", "menuCat": "Statements", "order": "3", "firstAnchor": { "contextRef": "c-3", "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "div", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-3", "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "div", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R4": { "role": "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome", "longName": "9952153 - Statement - Consolidated Statements of Comprehensive Income", "shortName": "Consolidated Statements of Comprehensive Income", "isDefault": "false", "groupType": "statement", "subGroupType": "", "menuCat": "Statements", "order": "4", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-5", "name": "us-gaap:CostOfGoodsAndServicesSold", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "unique": true } }, "R5": { "role": "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity", "longName": "9952154 - Statement - Consolidated Statements of Shareholders' Equity", "shortName": "Consolidated Statements of Shareholders' Equity", "isDefault": "false", "groupType": "statement", "subGroupType": "", "menuCat": "Statements", "order": "5", "firstAnchor": { "contextRef": "c-30", "name": "us-gaap:CommonStockSharesOutstanding", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-35", "name": "us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "unique": true } }, "R6": { "role": "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows", "longName": "9952155 - Statement - Consolidated Statements of Cash Flows", "shortName": "Consolidated Statements of Cash Flows", "isDefault": "false", "groupType": "statement", "subGroupType": "", "menuCat": "Statements", "order": "6", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:NetIncomeLoss", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ShareBasedCompensation", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "unique": true } }, "R7": { "role": "http://www.protolabs.com/role/BasisofPresentation", "longName": "9952156 - Disclosure - Basis of Presentation", "shortName": "Basis of Presentation", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "7", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R8": { "role": "http://www.protolabs.com/role/RecentAccountingPronouncements", "longName": "9952157 - Disclosure - Recent Accounting Pronouncements", "shortName": "Recent Accounting Pronouncements", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "8", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:SignificantAccountingPoliciesTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:SignificantAccountingPoliciesTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R9": { "role": "http://www.protolabs.com/role/NetIncomeperCommonShare", "longName": "9952158 - Disclosure - Net Income per Common Share", "shortName": "Net Income per Common Share", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "9", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:EarningsPerShareTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:EarningsPerShareTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R10": { "role": "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssets", "longName": "9952159 - Disclosure - Goodwill and Other Intangible Assets", "shortName": "Goodwill and Other Intangible Assets", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "10", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R11": { "role": "http://www.protolabs.com/role/FairValueMeasurements", "longName": "9952160 - Disclosure - Fair Value Measurements", "shortName": "Fair Value Measurements", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "11", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:FairValueDisclosuresTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:FairValueDisclosuresTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R12": { "role": "http://www.protolabs.com/role/MarketableSecurities", "longName": "9952161 - Disclosure - Marketable Securities", "shortName": "Marketable Securities", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "12", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:InvestmentTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:InvestmentTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R13": { "role": "http://www.protolabs.com/role/Inventory", "longName": "9952162 - Disclosure - Inventory", "shortName": "Inventory", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "13", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:InventoryDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:InventoryDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R14": { "role": "http://www.protolabs.com/role/StockBasedCompensation", "longName": "9952163 - Disclosure - Stock-Based Compensation", "shortName": "Stock-Based Compensation", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "14", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R15": { "role": "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLoss", "longName": "9952164 - Disclosure - Accumulated Other Comprehensive Income (Loss)", "shortName": "Accumulated Other Comprehensive Income (Loss)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "15", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:DisclosureOfReclassificationAmountTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:DisclosureOfReclassificationAmountTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R16": { "role": "http://www.protolabs.com/role/IncomeTaxes", "longName": "9952165 - Disclosure - Income Taxes", "shortName": "Income Taxes", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "16", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:IncomeTaxDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:IncomeTaxDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R17": { "role": "http://www.protolabs.com/role/SegmentReporting", "longName": "9952166 - Disclosure - Segment Reporting", "shortName": "Segment Reporting", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "17", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:SegmentReportingDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:SegmentReportingDisclosureTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R18": { "role": "http://xbrl.sec.gov/ecd/role/PvpDisclosure", "longName": "995410 - Disclosure - Pay vs Performance Disclosure", "shortName": "Pay vs Performance Disclosure", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "18", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:NetIncomeLoss", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true }, "uniqueAnchor": null }, "R19": { "role": "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements", "longName": "995445 - Disclosure - Insider Trading Arrangements", "shortName": "Insider Trading Arrangements", "isDefault": "false", "groupType": "disclosure", "subGroupType": "", "menuCat": "Notes", "order": "19", "firstAnchor": { "contextRef": "c-5", "name": "ecd:Rule10b51ArrAdoptedFlag", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-5", "name": "ecd:Rule10b51ArrAdoptedFlag", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R20": { "role": "http://www.protolabs.com/role/NetIncomeperCommonShareTables", "longName": "9955511 - Disclosure - Net Income per Common Share (Tables)", "shortName": "Net Income per Common Share (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "20", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R21": { "role": "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsTables", "longName": "9955512 - Disclosure - Goodwill and Other Intangible Assets (Tables)", "shortName": "Goodwill and Other Intangible Assets (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "21", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R22": { "role": "http://www.protolabs.com/role/FairValueMeasurementsTables", "longName": "9955513 - Disclosure - Fair Value Measurements (Tables)", "shortName": "Fair Value Measurements (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "22", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R23": { "role": "http://www.protolabs.com/role/MarketableSecuritiesTables", "longName": "9955514 - Disclosure - Marketable Securities (Tables)", "shortName": "Marketable Securities (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "23", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R24": { "role": "http://www.protolabs.com/role/InventoryTables", "longName": "9955515 - Disclosure - Inventory (Tables)", "shortName": "Inventory (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "24", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R25": { "role": "http://www.protolabs.com/role/StockBasedCompensationTables", "longName": "9955516 - Disclosure - Stock-Based Compensation (Tables)", "shortName": "Stock-Based Compensation (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "25", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R26": { "role": "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossTables", "longName": "9955517 - Disclosure - Accumulated Other Comprehensive Income (Loss) (Tables)", "shortName": "Accumulated Other Comprehensive Income (Loss) (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "26", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R27": { "role": "http://www.protolabs.com/role/SegmentReportingTables", "longName": "9955518 - Disclosure - Segment Reporting (Tables)", "shortName": "Segment Reporting (Tables)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "tables", "menuCat": "Tables", "order": "27", "firstAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-1", "name": "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock", "unitRef": null, "xsiNil": "false", "lang": "en-US", "decimals": null, "ancestors": [ "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R28": { "role": "http://www.protolabs.com/role/NetIncomeperCommonShareNarrativeDetails", "longName": "9955519 - Disclosure - Net Income per Common Share - Narrative (Details)", "shortName": "Net Income per Common Share - Narrative (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "28", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "0", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-5", "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "0", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R29": { "role": "http://www.protolabs.com/role/NetIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails", "longName": "9955520 - Disclosure - Net Income per Common Share -Schedule of Computation Of Basic and Diluted Net Income Per Share (Details)", "shortName": "Net Income per Common Share -Schedule of Computation Of Basic and Diluted Net Income Per Share (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "29", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:NetIncomeLoss", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-5", "name": "us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "0", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "unique": true } }, "R30": { "role": "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails", "longName": "9955521 - Disclosure - Goodwill and Other Intangible Assets - Narrative (Details)", "shortName": "Goodwill and Other Intangible Assets - Narrative (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "30", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:GoodwillPeriodIncreaseDecrease", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "us-gaap:GoodwillPeriodIncreaseDecrease", "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-5", "name": "us-gaap:GoodwillPeriodIncreaseDecrease", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "us-gaap:GoodwillPeriodIncreaseDecrease", "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R31": { "role": "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails", "longName": "9955522 - Disclosure - Goodwill and Other Intangible Assets - Schedule of Intangible Assets Other Than Goodwill (Details)", "shortName": "Goodwill and Other Intangible Assets - Schedule of Intangible Assets Other Than Goodwill (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "31", "firstAnchor": { "contextRef": "c-3", "name": "us-gaap:FiniteLivedIntangibleAssetsGross", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-3", "name": "us-gaap:FiniteLivedIntangibleAssetsGross", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R32": { "role": "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails", "longName": "9955523 - Disclosure - Goodwill and Other Intangible Assets - Schedule of Finite-Lived Intangible Assets, Future Amortization Expense (Details)", "shortName": "Goodwill and Other Intangible Assets - Schedule of Finite-Lived Intangible Assets, Future Amortization Expense (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "32", "firstAnchor": { "contextRef": "c-3", "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-3", "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R33": { "role": "http://www.protolabs.com/role/FairValueMeasurementsDetails", "longName": "9955524 - Disclosure - Fair Value Measurements (Details)", "shortName": "Fair Value Measurements (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "33", "firstAnchor": { "contextRef": "c-3", "name": "us-gaap:AvailableForSaleSecuritiesDebtSecurities", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-77", "name": "us-gaap:AvailableForSaleSecuritiesDebtSecurities", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "unique": true } }, "R34": { "role": "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails", "longName": "9955525 - Disclosure - Marketable Securities - Short-Term and Long-Term Marketable Securities (Details)", "shortName": "Marketable Securities - Short-Term and Long-Term Marketable Securities (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "34", "firstAnchor": { "contextRef": "c-3", "name": "us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-3", "name": "us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R35": { "role": "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails", "longName": "9955526 - Disclosure - Marketable Securities - Maturities of Available-For-Sale Debt Securities (Details)", "shortName": "Marketable Securities - Maturities of Available-For-Sale Debt Securities (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "35", "firstAnchor": { "contextRef": "c-3", "name": "us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-3", "name": "us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R36": { "role": "http://www.protolabs.com/role/InventoryDetails", "longName": "9955527 - Disclosure - Inventory (Details)", "shortName": "Inventory (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "36", "firstAnchor": { "contextRef": "c-3", "name": "us-gaap:InventoryGross", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "us-gaap:ScheduleOfInventoryCurrentTableTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-3", "name": "us-gaap:InventoryGross", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "us-gaap:ScheduleOfInventoryCurrentTableTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R37": { "role": "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "longName": "9955528 - Disclosure - Stock-Based Compensation - Narrative (Details)", "shortName": "Stock-Based Compensation - Narrative (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "37", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:AllocatedShareBasedCompensationExpense", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-5", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-5", "name": "us-gaap:AllocatedShareBasedCompensationExpense", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-5", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R38": { "role": "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails", "longName": "9955529 - Disclosure - Stock-Based Compensation - Option Activity (Details)", "shortName": "Stock-Based Compensation - Option Activity (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "38", "firstAnchor": { "contextRef": "c-4", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-4", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R39": { "role": "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails", "longName": "9955530 - Disclosure - Stock-Based Compensation - Weighted Average Assumptions (Details)", "shortName": "Stock-Based Compensation - Weighted Average Assumptions (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "39", "firstAnchor": { "contextRef": "c-117", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate", "unitRef": "number", "xsiNil": "false", "lang": "en-US", "decimals": "4", "ancestors": [ "span", "div", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-117", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate", "unitRef": "number", "xsiNil": "false", "lang": "en-US", "decimals": "4", "ancestors": [ "span", "div", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R40": { "role": "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails", "longName": "9955531 - Disclosure - Stock-Based Compensation - Stock Activity (Details)", "shortName": "Stock-Based Compensation - Stock Activity (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "40", "firstAnchor": { "contextRef": "c-109", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-109", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber", "unitRef": "shares", "xsiNil": "false", "lang": "en-US", "decimals": "INF", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R41": { "role": "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails", "longName": "9955532 - Disclosure - Accumulated Other Comprehensive Income (Loss) (Details)", "shortName": "Accumulated Other Comprehensive Income (Loss) (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "41", "firstAnchor": { "contextRef": "c-21", "name": "us-gaap:StockholdersEquity", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-121", "name": "us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "unique": true } }, "R42": { "role": "http://www.protolabs.com/role/IncomeTaxesDetails", "longName": "9955533 - Disclosure - Income Taxes (Details)", "shortName": "Income Taxes (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "42", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:IncomeTaxExpenseBenefit", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-5", "name": "us-gaap:EffectiveIncomeTaxRateContinuingOperations", "unitRef": "number", "xsiNil": "false", "lang": "en-US", "decimals": "3", "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "unique": true } }, "R43": { "role": "http://www.protolabs.com/role/SegmentReportingScheduleofReportableSegmentsDetails", "longName": "9955534 - Disclosure - Segment Reporting - Schedule of Reportable Segments (Details)", "shortName": "Segment Reporting - Schedule of Reportable Segments (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "43", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-5", "name": "us-gaap:SegmentReportingOtherItemAmount", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "unique": true } }, "R44": { "role": "http://www.protolabs.com/role/SegmentReportingScheduleofLongLivedAssetsbyGeographicAreasDetails", "longName": "9955535 - Disclosure - Segment Reporting - Schedule of Long-Lived Assets by Geographic Areas (Details)", "shortName": "Segment Reporting - Schedule of Long-Lived Assets by Geographic Areas (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "44", "firstAnchor": { "contextRef": "c-3", "name": "us-gaap:PropertyPlantAndEquipmentNet", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-141", "name": "us-gaap:PropertyPlantAndEquipmentNet", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "unique": true } }, "R45": { "role": "http://www.protolabs.com/role/SegmentReportingScheduleofExpendituresForAdditionsToLongLivedAssetsDetails", "longName": "9955536 - Disclosure - Segment Reporting - Schedule of Expenditures For Additions To Long-Lived Assets (Details)", "shortName": "Segment Reporting - Schedule of Expenditures For Additions To Long-Lived Assets (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "45", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:SegmentExpenditureAdditionToLongLivedAssets", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "prlb:ExpendituresForAdditionsToLongLivedAssetsByGeographicRegionTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true }, "uniqueAnchor": { "contextRef": "c-5", "name": "us-gaap:SegmentExpenditureAdditionToLongLivedAssets", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "prlb:ExpendituresForAdditionsToLongLivedAssetsByGeographicRegionTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true, "unique": true } }, "R46": { "role": "http://www.protolabs.com/role/SegmentReportingScheduleofDepreciationandAmortizationDetails", "longName": "9955537 - Disclosure - Segment Reporting - Schedule of Depreciation and Amortization (Details)", "shortName": "Segment Reporting - Schedule of Depreciation and Amortization (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "46", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:DepreciationDepletionAndAmortization", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "prlb:DepreciationAndAmortizationByGeographicRegionTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-129", "name": "us-gaap:DepreciationDepletionAndAmortization", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "prlb:DepreciationAndAmortizationByGeographicRegionTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "unique": true } }, "R47": { "role": "http://www.protolabs.com/role/SegmentReportingScheduleofDisaggregationofRevenueDetails", "longName": "9955538 - Disclosure - Segment Reporting - Schedule of Disaggregation of Revenue (Details)", "shortName": "Segment Reporting - Schedule of Disaggregation of Revenue (Details)", "isDefault": "false", "groupType": "disclosure", "subGroupType": "details", "menuCat": "Details", "order": "47", "firstAnchor": { "contextRef": "c-5", "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "first": true }, "uniqueAnchor": { "contextRef": "c-153", "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax", "unitRef": "usd", "xsiNil": "false", "lang": "en-US", "decimals": "-3", "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:DisaggregationOfRevenueTableTextBlock", "ix:continuation", "body", "html" ], "reportCount": 1, "baseRef": "prlb-20250630.htm", "unique": true } } }, "tag": { "prlb_A3DHubsInc.HubsMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "A3DHubsInc.HubsMember", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "3D Hubs, Inc. (Hubs)", "label": "3D Hubs, Inc. (Hubs) [Member]", "documentation": "" } } }, "auth_ref": [] }, "us-gaap_AOCIAttributableToParentNetOfTaxRollForward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AOCIAttributableToParentNetOfTaxRollForward", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails" ], "lang": { "en-us": { "role": { "terseLabel": "AOCI Attributable to Parent, Net of Tax [Roll Forward]", "label": "AOCI Attributable to Parent, Net of Tax [Roll Forward]", "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period." } } }, "auth_ref": [] }, "us-gaap_AccountingPoliciesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AccountingPoliciesAbstract", "lang": { "en-us": { "role": { "terseLabel": "Accounting Policies [Abstract]", "label": "Accounting Policies [Abstract]" } } }, "auth_ref": [] }, "us-gaap_AccountsPayableCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AccountsPayableCurrent", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Accounts payable", "label": "Accounts Payable, Current", "documentation": "Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)." } } }, "auth_ref": [ "r26", "r819" ] }, "us-gaap_AccountsReceivableNetCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AccountsReceivableNetCurrent", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Accounts receivable, net of allowance for doubtful accounts of $2,272 and $1,975 as of June\u00a030, 2025, and December\u00a031, 2024, respectively", "label": "Accounts Receivable, after Allowance for Credit Loss, Current", "documentation": "Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current." } } }, "auth_ref": [ "r1011" ] }, "us-gaap_AccretionExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AccretionExpense", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 9.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Interest on finance lease obligations", "label": "Accretion Expense", "documentation": "Amount recognized for the passage of time, typically for liabilities, that have been discounted to their net present values. Excludes accretion associated with asset retirement obligations." } } }, "auth_ref": [ "r754", "r1047" ] }, "us-gaap_AccruedLiabilitiesAndOtherLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AccruedLiabilitiesAndOtherLiabilities", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Accrued liabilities and other", "label": "Accrued Liabilities and Other Liabilities", "documentation": "Amount of expenses incurred but not yet paid nor invoiced, and liabilities classified as other." } } }, "auth_ref": [] }, "us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AccumulatedNetUnrealizedInvestmentGainLossMember", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Net unrealized gains on investments in securities", "label": "AOCI, Accumulated Gain (Loss), Debt Securities, Available-for-Sale, Parent [Member]", "documentation": "Accumulated unrealized gain (loss) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), attributable to parent." } } }, "auth_ref": [ "r104", "r105", "r107", "r114", "r115", "r949" ] }, "us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AccumulatedOtherComprehensiveIncomeLossLineItems", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Accumulated Other Comprehensive Income (Loss) [Line Items]", "label": "Accumulated Other Comprehensive Income (Loss) [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r113", "r114", "r457", "r458", "r459", "r460", "r495", "r496", "r497", "r498", "r499", "r500" ] }, "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AccumulatedOtherComprehensiveIncomeLossNetOfTax", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Accumulated other comprehensive loss", "label": "Accumulated Other Comprehensive Income (Loss), Net of Tax", "documentation": "Amount, after tax, of accumulated increase (decrease) in equity from transaction and other event and circumstance from nonowner source." } } }, "auth_ref": [ "r17", "r18", "r48", "r100", "r597", "r633", "r634", "r1089" ] }, "us-gaap_AccumulatedOtherComprehensiveIncomeLossTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AccumulatedOtherComprehensiveIncomeLossTable", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Accumulated Other Comprehensive Income (Loss) [Table]", "label": "Accumulated Other Comprehensive Income (Loss) [Table]", "documentation": "Disclosure of information about components of accumulated other comprehensive income (loss)." } } }, "auth_ref": [ "r113", "r114", "r457", "r458", "r459", "r460", "r495", "r496", "r497", "r498", "r499", "r500" ] }, "us-gaap_AccumulatedOtherComprehensiveIncomeMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AccumulatedOtherComprehensiveIncomeMember", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Accumulated Other Comprehensive Loss", "label": "AOCI Attributable to Parent [Member]", "documentation": "Accumulated increase (decrease) in equity from transactions and other events and circumstances from non-owner sources, attributable to the parent. Excludes net income (loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners." } } }, "auth_ref": [ "r1", "r10", "r18", "r452", "r455", "r508", "r629", "r630", "r949", "r950", "r951", "r1000", "r1001", "r1002", "r1003" ] }, "us-gaap_AccumulatedTranslationAdjustmentMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AccumulatedTranslationAdjustmentMember", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Foreign currency translation adjustments", "label": "Accumulated Foreign Currency Adjustment Attributable to Parent [Member]", "documentation": "Accumulated other comprehensive income (loss) resulting from foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature, attributable to the parent." } } }, "auth_ref": [ "r2", "r10", "r18", "r46", "r47", "r114", "r115", "r496", "r497", "r498", "r499", "r500", "r949" ] }, "us-gaap_AcquiredFiniteLivedIntangibleAssetsLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AcquiredFiniteLivedIntangibleAssetsLineItems", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails", "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Intangible Asset, Acquired, Finite-Lived [Line Items]", "label": "Intangible Asset, Acquired, Finite-Lived [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r264", "r265", "r266", "r268", "r637", "r722" ] }, "ecd_Additional402vDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "Additional402vDisclosureTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Additional 402(v) Disclosure", "label": "Additional 402(v) Disclosure [Text Block]" } } }, "auth_ref": [ "r885" ] }, "us-gaap_AdditionalPaidInCapitalCommonStock": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AdditionalPaidInCapitalCommonStock", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Additional paid-in capital", "label": "Additional Paid in Capital, Common Stock", "documentation": "Value received from shareholders in common stock-related transactions that are in excess of par value or stated value and amounts received from other stock-related transactions. Includes only common stock transactions (excludes preferred stock transactions). May be called contributed capital, capital in excess of par, capital surplus, or paid-in capital." } } }, "auth_ref": [ "r36" ] }, "us-gaap_AdditionalPaidInCapitalMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AdditionalPaidInCapitalMember", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Additional Paid-In Capital", "label": "Additional Paid-in Capital [Member]", "documentation": "Excess of issue price over par or stated value of the entity's capital stock and amounts received from other transactions involving the entity's stock or stockholders." } } }, "auth_ref": [ "r643", "r1000", "r1001", "r1002", "r1003", "r1090", "r1145" ] }, "ecd_AdjToCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AdjToCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Adjustment to Compensation, Amount", "label": "Adjustment to Compensation Amount" } } }, "auth_ref": [ "r898" ] }, "ecd_AdjToCompAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AdjToCompAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Adjustment to Compensation:", "label": "Adjustment to Compensation [Axis]" } } }, "auth_ref": [ "r898" ] }, "ecd_AdjToNonPeoNeoCompFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AdjToNonPeoNeoCompFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Adjustment to Non-PEO NEO Compensation Footnote", "label": "Adjustment to Non-PEO NEO Compensation Footnote [Text Block]" } } }, "auth_ref": [ "r898" ] }, "ecd_AdjToPeoCompFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AdjToPeoCompFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Adjustment To PEO Compensation, Footnote", "label": "Adjustment To PEO Compensation, Footnote [Text Block]" } } }, "auth_ref": [ "r898" ] }, "us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue", "crdr": "credit", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-based compensation expense", "label": "APIC, Share-Based Payment Arrangement, Increase for Cost Recognition", "documentation": "Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement." } } }, "auth_ref": [ "r324" ] }, "us-gaap_AdjustmentsToAdditionalPaidInCapitalStockIssuedIssuanceCosts": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AdjustmentsToAdditionalPaidInCapitalStockIssuedIssuanceCosts", "crdr": "debit", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Common shares issued on exercise of options and other, net of shares withheld for tax obligations", "label": "Adjustments to Additional Paid in Capital, Stock Issued, Issuance Costs", "documentation": "Amount of decrease in additional paid in capital (APIC) resulting from direct costs associated with issuing stock. Includes, but is not limited to, legal and accounting fees and direct costs associated with stock issues under a shelf registration." } } }, "auth_ref": [ "r11", "r67" ] }, "us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Adjustments to reconcile net income to net cash provided by operating activities:", "label": "Adjustment to Reconcile Net Income to Cash Provided by (Used in) Operating Activity [Abstract]" } } }, "auth_ref": [] }, "ecd_AggtChngPnsnValInSummryCompstnTblForAplblYrMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AggtChngPnsnValInSummryCompstnTblForAplblYrMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Aggregate Change in Present Value of Accumulated Benefit for All Pension Plans Reported in Summary Compensation Table", "label": "Aggregate Change in Present Value of Accumulated Benefit for All Pension Plans Reported in Summary Compensation Table [Member]" } } }, "auth_ref": [ "r931" ] }, "ecd_AggtErrCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AggtErrCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Aggregate Erroneous Compensation Amount", "label": "Aggregate Erroneous Compensation Amount" } } }, "auth_ref": [ "r857", "r867", "r877", "r909" ] }, "ecd_AggtErrCompNotYetDeterminedTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AggtErrCompNotYetDeterminedTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Aggregate Erroneous Compensation Not Yet Determined", "label": "Aggregate Erroneous Compensation Not Yet Determined [Text Block]" } } }, "auth_ref": [ "r860", "r870", "r880", "r912" ] }, "ecd_AggtPnsnAdjsSvcCstMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AggtPnsnAdjsSvcCstMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Aggregate Pension Adjustments Service Cost", "label": "Aggregate Pension Adjustments Service Cost [Member]" } } }, "auth_ref": [ "r932" ] }, "ecd_AllAdjToCompMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AllAdjToCompMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "All Adjustments to Compensation", "label": "All Adjustments to Compensation [Member]" } } }, "auth_ref": [ "r898" ] }, "ecd_AllExecutiveCategoriesMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AllExecutiveCategoriesMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "All Executive Categories", "label": "All Executive Categories [Member]" } } }, "auth_ref": [ "r905" ] }, "ecd_AllIndividualsMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AllIndividualsMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure", "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure", "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements", "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "All Individuals", "label": "All Individuals [Member]" } } }, "auth_ref": [ "r861", "r871", "r881", "r905", "r913", "r917", "r925" ] }, "ecd_AllTradingArrangementsMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AllTradingArrangementsMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "All Trading Arrangements", "label": "All Trading Arrangements [Member]" } } }, "auth_ref": [ "r923" ] }, "us-gaap_AllocatedShareBasedCompensationExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AllocatedShareBasedCompensationExpense", "crdr": "debit", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-based compensation expense", "label": "Share-Based Payment Arrangement, Expense", "documentation": "Amount of expense for award under share-based payment arrangement. Excludes amount capitalized." } } }, "auth_ref": [ "r355", "r361", "r362" ] }, "us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AllowanceForDoubtfulAccountsReceivableCurrent", "crdr": "credit", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Allowance for credit loss, current", "label": "Accounts Receivable, Allowance for Credit Loss, Current", "documentation": "Amount of allowance for credit loss on accounts receivable, classified as current." } } }, "auth_ref": [ "r101", "r203", "r239" ] }, "dei_AmendmentFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "AmendmentFlag", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Amendment Flag", "label": "Amendment Flag", "documentation": "Boolean flag that is true when the XBRL content amends previously-filed or accepted submission." } } }, "auth_ref": [] }, "us-gaap_AmortizationOfIntangibleAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AmortizationOfIntangibleAssets", "crdr": "debit", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Amortization expense for intangible assets", "label": "Amortization of Intangible Assets", "documentation": "The aggregate expense charged against earnings to allocate the cost of intangible assets (nonphysical assets not used in production) in a systematic and rational manner to the periods expected to benefit from such assets." } } }, "auth_ref": [ "r6", "r119", "r263", "r270", "r726", "r729", "r730", "r732", "r734" ] }, "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount", "presentation": [ "http://www.protolabs.com/role/NetIncomeperCommonShareNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Anti-dilutive options excluded from calculation of diluted weighted average shares outstanding (in shares)", "label": "Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount", "documentation": "Securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) or earnings per unit (EPU) in the future that were not included in the computation of diluted EPS or EPU because to do so would increase EPS or EPU amounts or decrease loss per share or unit amounts for the period presented." } } }, "auth_ref": [ "r160" ] }, "us-gaap_Assets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "Assets", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "totalLabel": "Total assets", "label": "Assets", "documentation": "Amount of asset recognized for present right to economic benefit." } } }, "auth_ref": [ "r74", "r81", "r99", "r128", "r129", "r130", "r164", "r172", "r190", "r194", "r236", "r283", "r284", "r285", "r286", "r287", "r288", "r289", "r290", "r291", "r445", "r448", "r493", "r583", "r584", "r593", "r670", "r746", "r747", "r757", "r819", "r835", "r836", "r848", "r1050", "r1051", "r1103" ] }, "us-gaap_AssetsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AssetsAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Assets", "label": "Assets [Abstract]" } } }, "auth_ref": [] }, "us-gaap_AssetsCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AssetsCurrent", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "totalLabel": "Total current assets", "label": "Assets, Current", "documentation": "Amount of asset recognized for present right to economic benefit, classified as current." } } }, "auth_ref": [ "r93", "r103", "r128", "r129", "r130", "r236", "r283", "r284", "r285", "r286", "r287", "r288", "r289", "r290", "r291", "r445", "r448", "r493", "r819", "r1050", "r1051", "r1103" ] }, "us-gaap_AssetsCurrentAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AssetsCurrentAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Current assets", "label": "Assets, Current [Abstract]" } } }, "auth_ref": [] }, "us-gaap_AssetsFairValueDisclosure": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AssetsFairValueDisclosure", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/FairValueMeasurementsDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Total", "label": "Assets, Fair Value Disclosure", "documentation": "Fair value portion of asset recognized for present right to economic benefit." } } }, "auth_ref": [ "r466", "r467", "r808" ] }, "us-gaap_AssetsFairValueDisclosureAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AssetsFairValueDisclosureAbstract", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Financial Assets:", "label": "Assets, Fair Value Disclosure [Abstract]" } } }, "auth_ref": [] }, "us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails": { "parentTag": "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis", "weight": -1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Unrealized Gains", "label": "Debt Securities, Available-for-Sale, Accumulated Gross Unrealized Gain, before Tax", "documentation": "Amount, before tax, of unrealized gain in accumulated other comprehensive income (AOCI) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)." } } }, "auth_ref": [ "r209" ] }, "us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails": { "parentTag": "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Unrealized Losses", "label": "Debt Securities, Available-for-Sale, Accumulated Gross Unrealized Loss, before Tax", "documentation": "Amount, before tax, of unrealized loss in accumulated other comprehensive income (AOCI) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)." } } }, "auth_ref": [ "r210" ] }, "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AvailableForSaleDebtSecuritiesAmortizedCostBasis", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Cost", "label": "Debt Securities, Available-for-Sale, Amortized Cost", "documentation": "Amortized cost of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)." } } }, "auth_ref": [ "r206", "r245", "r592" ] }, "us-gaap_AvailableForSaleSecuritiesDebtMaturitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AvailableForSaleSecuritiesDebtMaturitiesAbstract", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Available-for-Sale Securities, Debt Maturities [Abstract]", "label": "Available-for-Sale Securities, Debt Maturities [Abstract]" } } }, "auth_ref": [] }, "us-gaap_AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsFairValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsFairValue", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails": { "parentTag": "us-gaap_AvailableForSaleSecuritiesDebtSecurities", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Due after one year through five years", "label": "Debt Securities, Available-for-Sale, Fair Value, Maturity, Allocated and Single Maturity Date, after Year One Through Five", "documentation": "Fair value of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), with single maturity date and allocated without single maturity date, maturing in second through fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r214", "r588" ] }, "us-gaap_AvailableForSaleSecuritiesDebtMaturitiesFairValueAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AvailableForSaleSecuritiesDebtMaturitiesFairValueAbstract", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Debt Securities, Available-for-Sale, Fair Value, Fiscal Year Maturity [Abstract]", "label": "Debt Securities, Available-for-Sale, Fair Value, Fiscal Year Maturity [Abstract]" } } }, "auth_ref": [] }, "us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails": { "parentTag": "us-gaap_AvailableForSaleSecuritiesDebtSecurities", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Due in one year or less", "label": "Debt Securities, Available-for-Sale, Fair Value, Maturity, Allocated and Single Maturity Date, Year One", "documentation": "Fair value of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), with single maturity date and allocated without single maturity date, maturing in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r213", "r587" ] }, "us-gaap_AvailableForSaleSecuritiesDebtSecurities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AvailableForSaleSecuritiesDebtSecurities", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/FairValueMeasurementsDetails": { "parentTag": "us-gaap_AssetsFairValueDisclosure", "weight": 1.0, "order": 2.0 }, "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails": { "parentTag": "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis", "weight": 1.0, "order": 3.0 }, "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails", "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails", "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "lang": { "en-us": { "role": { "verboseLabel": "Marketable securities", "terseLabel": "Fair Value", "totalLabel": "Total marketable securities", "label": "Debt Securities, Available-for-Sale", "documentation": "Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)." } } }, "auth_ref": [ "r207", "r245", "r466", "r488", "r489", "r490", "r491", "r580", "r723", "r808", "r811", "r818", "r1013", "r1094", "r1095", "r1096" ] }, "ecd_AwardExrcPrice": { "xbrltype": "perShareItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AwardExrcPrice", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Exercise Price", "label": "Award Exercise Price" } } }, "auth_ref": [ "r920" ] }, "ecd_AwardGrantDateFairValue": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AwardGrantDateFairValue", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Fair Value as of Grant Date", "label": "Award Grant Date Fair Value" } } }, "auth_ref": [ "r921" ] }, "ecd_AwardTmgDiscLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AwardTmgDiscLineItems", "lang": { "en-us": { "role": { "label": "Award Timing Disclosures [Line Items]" } } }, "auth_ref": [ "r916" ] }, "ecd_AwardTmgHowMnpiCnsdrdTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AwardTmgHowMnpiCnsdrdTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Timing, How MNPI Considered", "label": "Award Timing, How MNPI Considered [Text Block]" } } }, "auth_ref": [ "r916" ] }, "ecd_AwardTmgMethodTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AwardTmgMethodTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Timing Method", "label": "Award Timing Method [Text Block]" } } }, "auth_ref": [ "r916" ] }, "ecd_AwardTmgMnpiCnsdrdFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AwardTmgMnpiCnsdrdFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Timing MNPI Considered", "label": "Award Timing MNPI Considered [Flag]" } } }, "auth_ref": [ "r916" ] }, "ecd_AwardTmgMnpiDiscTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AwardTmgMnpiDiscTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Timing MNPI Disclosure", "label": "Award Timing MNPI Disclosure [Text Block]" } } }, "auth_ref": [ "r916" ] }, "ecd_AwardTmgPredtrmndFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AwardTmgPredtrmndFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Timing Predetermined", "label": "Award Timing Predetermined [Flag]" } } }, "auth_ref": [ "r916" ] }, "us-gaap_AwardTypeAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "AwardTypeAxis", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Type [Axis]", "label": "Award Type [Axis]", "documentation": "Information by type of award under share-based payment arrangement." } } }, "auth_ref": [ "r328", "r329", "r330", "r331", "r332", "r333", "r334", "r335", "r336", "r337", "r338", "r339", "r340", "r341", "r342", "r343", "r344", "r345", "r346", "r347", "r348", "r350", "r351", "r352", "r353", "r354" ] }, "ecd_AwardUndrlygSecuritiesAmt": { "xbrltype": "decimalItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AwardUndrlygSecuritiesAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Underlying Securities", "label": "Award Underlying Securities Amount" } } }, "auth_ref": [ "r919" ] }, "ecd_AwardsCloseToMnpiDiscIndName": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AwardsCloseToMnpiDiscIndName", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Name", "label": "Awards Close in Time to MNPI Disclosures, Individual Name" } } }, "auth_ref": [ "r918" ] }, "ecd_AwardsCloseToMnpiDiscTable": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AwardsCloseToMnpiDiscTable", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Awards Close in Time to MNPI Disclosures", "label": "Awards Close in Time to MNPI Disclosures [Table]" } } }, "auth_ref": [ "r917" ] }, "ecd_AwardsCloseToMnpiDiscTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "AwardsCloseToMnpiDiscTableTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Awards Close in Time to MNPI Disclosures, Table", "label": "Awards Close in Time to MNPI Disclosures [Table Text Block]" } } }, "auth_ref": [ "r917" ] }, "us-gaap_BusinessAcquisitionAcquireeDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "BusinessAcquisitionAcquireeDomain", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Business Combination [Domain]", "label": "Business Combination [Domain]", "documentation": "Business combination or series of individually immaterial business combinations." } } }, "auth_ref": [ "r261", "r264", "r265", "r266", "r267", "r268", "r390", "r391", "r392", "r393", "r394", "r395", "r396", "r397", "r398", "r399", "r400", "r401", "r402", "r403", "r404", "r405", "r406", "r407", "r408", "r409", "r410", "r411", "r412", "r413", "r414", "r415", "r416", "r417", "r418", "r419", "r420", "r421", "r422", "r423", "r424", "r425", "r426", "r427", "r428", "r429", "r430", "r431", "r432", "r433", "r434", "r435", "r436", "r437", "r438", "r439", "r440", "r441", "r442", "r637", "r767", "r768", "r1085", "r1086", "r1087" ] }, "us-gaap_BusinessAcquisitionAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "BusinessAcquisitionAxis", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Business Combination [Axis]", "label": "Business Combination [Axis]", "documentation": "Information by business combination or series of individually immaterial business combinations." } } }, "auth_ref": [ "r261", "r264", "r265", "r266", "r267", "r268", "r390", "r391", "r392", "r393", "r394", "r395", "r396", "r397", "r398", "r399", "r400", "r401", "r402", "r403", "r404", "r405", "r406", "r407", "r408", "r409", "r410", "r411", "r412", "r413", "r414", "r415", "r416", "r417", "r418", "r419", "r420", "r421", "r422", "r423", "r424", "r425", "r426", "r427", "r428", "r429", "r430", "r431", "r432", "r433", "r434", "r435", "r436", "r437", "r438", "r439", "r440", "r441", "r442", "r637", "r767", "r768", "r1085", "r1086", "r1087" ] }, "prlb_CNCMachiningFirstcutMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "CNCMachiningFirstcutMember", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDisaggregationofRevenueDetails" ], "lang": { "en-us": { "role": { "terseLabel": "CNC Machining", "label": "CNC Machining (Firstcut) [Member]", "documentation": "Represents the CNC Machining (Firstcut) product." } } }, "auth_ref": [] }, "us-gaap_CashAndCashEquivalentsAtCarryingValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CashAndCashEquivalentsAtCarryingValue", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Cash and cash equivalents", "label": "Cash and Cash Equivalent", "documentation": "Amount of cash and cash equivalent. Cash includes, but is not limited to, currency on hand, demand deposit with financial institution, and account with general characteristic of demand deposit. Cash equivalent includes, but is not limited to, short-term, highly liquid investment that is both readily convertible to known amount of cash and so near maturity that it presents insignificant risk of change in value because of change in interest rate." } } }, "auth_ref": [ "r21", "r95", "r727" ] }, "us-gaap_CashAndCashEquivalentsFairValueDisclosure": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CashAndCashEquivalentsFairValueDisclosure", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/FairValueMeasurementsDetails": { "parentTag": "us-gaap_AssetsFairValueDisclosure", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Cash and cash equivalents", "label": "Cash and Cash Equivalents, Fair Value Disclosure", "documentation": "Fair value portion of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates." } } }, "auth_ref": [ "r489", "r490", "r491", "r1092", "r1093" ] }, "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations", "crdr": "debit", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "periodStartLabel": "Cash and cash equivalents, beginning of period", "periodEndLabel": "Cash and cash equivalents, end of period", "label": "Cash, Cash Equivalent, Restricted Cash, and Restricted Cash Equivalent, Including Discontinued Operation", "documentation": "Amount of cash and cash equivalent, and cash and cash equivalent restricted to withdrawal or usage; including, but not limited to, discontinued operation. Cash includes, but is not limited to, currency on hand, demand deposit with financial institution, and account with general characteristic of demand deposit. Cash equivalent includes, but is not limited to, short-term, highly liquid investment that is both readily convertible to known amount of cash and so near maturity that it presents insignificant risk of change in value because of change in interest rate." } } }, "auth_ref": [ "r21", "r60", "r125" ] }, "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "totalLabel": "Net increase in cash and cash equivalents", "label": "Cash, Cash Equivalent, Restricted Cash, and Restricted Cash Equivalent, Period Increase (Decrease), Including Exchange Rate Effect and Discontinued Operation", "documentation": "Amount of increase (decrease) in cash and cash equivalent, and cash and cash equivalent restricted to withdrawal or usage; including effect from exchange rate change and including, but not limited to, discontinued operation. Cash includes, but is not limited to, currency on hand, demand deposit with financial institution, and account with general characteristic of demand deposit. Cash equivalent includes, but is not limited to, short-term, highly liquid investment that is both readily convertible to known amount of cash and so near maturity that it presents insignificant risk of change in value because of change in interest rate." } } }, "auth_ref": [ "r0", "r60" ] }, "us-gaap_CashMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CashMember", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Cash", "label": "Cash [Member]", "documentation": "Currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits." } } }, "auth_ref": [ "r95" ] }, "ecd_ChangedPeerGroupFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "ChangedPeerGroupFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Changed Peer Group, Footnote", "label": "Changed Peer Group, Footnote [Text Block]" } } }, "auth_ref": [ "r896" ] }, "ecd_ChngInFrValAsOfVstngDtOfPrrYrEqtyAwrdsVstdInCvrdYrMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "ChngInFrValAsOfVstngDtOfPrrYrEqtyAwrdsVstdInCvrdYrMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Change in Fair Value as of Vesting Date of Prior Year Equity Awards Vested in Covered Year", "label": "Change in Fair Value as of Vesting Date of Prior Year Equity Awards Vested in Covered Year [Member]" } } }, "auth_ref": [ "r893" ] }, "ecd_ChngInFrValOfOutsdngAndUnvstdEqtyAwrdsGrntdInPrrYrsMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "ChngInFrValOfOutsdngAndUnvstdEqtyAwrdsGrntdInPrrYrsMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Year-over-Year Change in Fair Value of Equity Awards Granted in Prior Years That are Outstanding and Unvested", "label": "Year-over-Year Change in Fair Value of Equity Awards Granted in Prior Years That are Outstanding and Unvested [Member]" } } }, "auth_ref": [ "r891" ] }, "dei_CityAreaCode": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "CityAreaCode", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "City Area Code", "label": "City Area Code", "documentation": "Area code of city" } } }, "auth_ref": [] }, "ecd_CoSelectedMeasureAmt": { "xbrltype": "decimalItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "CoSelectedMeasureAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Company Selected Measure Amount", "label": "Company Selected Measure Amount" } } }, "auth_ref": [ "r897" ] }, "ecd_CoSelectedMeasureName": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "CoSelectedMeasureName", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Company Selected Measure Name", "label": "Company Selected Measure Name" } } }, "auth_ref": [ "r897" ] }, "us-gaap_CommonStockMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CommonStockMember", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Common Stock", "label": "Common Stock [Member]", "documentation": "Stock that is subordinate to all other stock of the issuer." } } }, "auth_ref": [ "r839", "r840", "r841", "r843", "r844", "r845", "r846", "r1000", "r1001", "r1003", "r1090", "r1143", "r1145" ] }, "us-gaap_CommonStockParOrStatedValuePerShare": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CommonStockParOrStatedValuePerShare", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Common stock, par value (in dollars per share)", "label": "Common Stock, Par or Stated Value Per Share", "documentation": "Face amount or stated value per share of common stock." } } }, "auth_ref": [ "r35" ] }, "us-gaap_CommonStockSharesAuthorized": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CommonStockSharesAuthorized", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Common stock, authorized (in shares)", "label": "Common Stock, Shares Authorized", "documentation": "The maximum number of common shares permitted to be issued by an entity's charter and bylaws." } } }, "auth_ref": [ "r35", "r658" ] }, "us-gaap_CommonStockSharesIssued": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CommonStockSharesIssued", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Common stock, issued (in shares)", "label": "Common Stock, Shares, Issued", "documentation": "Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury." } } }, "auth_ref": [ "r35" ] }, "us-gaap_CommonStockSharesOutstanding": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CommonStockSharesOutstanding", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Common stock, outstanding (in shares)", "periodStartLabel": "Beginning balance (in shares)", "periodEndLabel": "Ending balance (in shares)", "label": "Common Stock, Shares, Outstanding", "documentation": "Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation." } } }, "auth_ref": [ "r11", "r35", "r658", "r676", "r1145", "r1146" ] }, "us-gaap_CommonStockValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CommonStockValue", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 23,874,601 and 24,226,088 shares as of June\u00a030, 2025, and December\u00a031, 2024, respectively", "label": "Common Stock, Value, Issued", "documentation": "Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity." } } }, "auth_ref": [ "r35", "r297", "r303", "r596", "r819" ] }, "ecd_CompActuallyPaidVsCoSelectedMeasureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "CompActuallyPaidVsCoSelectedMeasureTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Compensation Actually Paid vs. Company Selected Measure", "label": "Compensation Actually Paid vs. Company Selected Measure [Text Block]" } } }, "auth_ref": [ "r902" ] }, "ecd_CompActuallyPaidVsNetIncomeTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "CompActuallyPaidVsNetIncomeTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Compensation Actually Paid vs. Net Income", "label": "Compensation Actually Paid vs. Net Income [Text Block]" } } }, "auth_ref": [ "r901" ] }, "ecd_CompActuallyPaidVsOtherMeasureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "CompActuallyPaidVsOtherMeasureTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Compensation Actually Paid vs. Other Measure", "label": "Compensation Actually Paid vs. Other Measure [Text Block]" } } }, "auth_ref": [ "r903" ] }, "ecd_CompActuallyPaidVsTotalShareholderRtnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "CompActuallyPaidVsTotalShareholderRtnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Compensation Actually Paid vs. Total Shareholder Return", "label": "Compensation Actually Paid vs. Total Shareholder Return [Text Block]" } } }, "auth_ref": [ "r900" ] }, "us-gaap_ComprehensiveIncomeNetOfTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ComprehensiveIncomeNetOfTax", "crdr": "credit", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Comprehensive income", "verboseLabel": "Comprehensive income", "label": "Comprehensive Income (Loss), Net of Tax, Attributable to Parent", "documentation": "Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners." } } }, "auth_ref": [ "r19", "r110", "r112", "r116", "r581", "r605", "r606" ] }, "us-gaap_ComprehensiveIncomeNetOfTaxAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ComprehensiveIncomeNetOfTaxAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Comprehensive Income (net of tax)", "label": "Comprehensive Income (Loss), Net of Tax, Attributable to Parent [Abstract]" } } }, "auth_ref": [] }, "us-gaap_ComputerSoftwareIntangibleAssetMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ComputerSoftwareIntangibleAssetMember", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Software technology", "label": "Computer Software, Intangible Asset [Member]", "documentation": "Collection of computer programs and related data that provide instructions to a computer, for example, but not limited to, application program, control module or operating system, that perform one or more particular functions or tasks." } } }, "auth_ref": [ "r722", "r802", "r1036", "r1037", "r1038", "r1039", "r1040", "r1042", "r1044", "r1045" ] }, "us-gaap_CorporateAndOtherMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CorporateAndOtherMember", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDepreciationandAmortizationDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofReportableSegmentsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Corporate Unallocated", "label": "Corporate Segment and Other Operating Segment [Member]", "documentation": "Component of entity providing financial and operational oversight and administrative support considered to be operating segment and operating segment, classified as other. Excludes intersegment elimination and reconciling item." } } }, "auth_ref": [ "r1006" ] }, "us-gaap_CorporateDebtSecuritiesMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CorporateDebtSecuritiesMember", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Corporate debt securities", "label": "Corporate Debt Securities [Member]", "documentation": "Debt securities issued by domestic or foreign corporate business, banks and other entities with a promise of repayment." } } }, "auth_ref": [ "r762", "r764", "r766", "r808", "r820", "r837", "r1140" ] }, "us-gaap_CostOfGoodsAndServicesSold": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "CostOfGoodsAndServicesSold", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_GrossProfit", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Cost of revenue", "label": "Cost of Product and Service Sold", "documentation": "The aggregate costs related to goods produced and sold and services rendered by an entity during the reporting period. This excludes costs incurred during the reporting period related to financial services rendered and other revenue generating activities." } } }, "auth_ref": [ "r51", "r52", "r541", "r730", "r735", "r807", "r989" ] }, "dei_CoverAbstract": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "CoverAbstract", "lang": { "en-us": { "role": { "terseLabel": "Cover [Abstract]", "label": "Cover [Abstract]", "documentation": "Cover page." } } }, "auth_ref": [] }, "dei_CurrentFiscalYearEndDate": { "xbrltype": "gMonthDayItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "CurrentFiscalYearEndDate", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Current Fiscal Year End Date", "label": "Current Fiscal Year End Date", "documentation": "End date of current fiscal year in the format --MM-DD." } } }, "auth_ref": [] }, "us-gaap_DebtSecuritiesAvailableForSaleTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "DebtSecuritiesAvailableForSaleTable", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Debt Securities, Available-for-Sale [Table]", "label": "Debt Securities, Available-for-Sale [Table]", "documentation": "Disclosure of information about investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)." } } }, "auth_ref": [ "r205", "r206", "r207", "r208", "r209", "r210", "r211", "r212", "r213", "r214", "r215", "r216" ] }, "us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "DebtSecuritiesAvailableForSaleTableTextBlock", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Debt Securities, Available-for-Sale", "label": "Debt Securities, Available-for-Sale [Table Text Block]", "documentation": "Tabular disclosure of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)." } } }, "auth_ref": [ "r1015", "r1016", "r1017", "r1018", "r1019", "r1020", "r1021", "r1022", "r1023", "r1024", "r1025", "r1026" ] }, "us-gaap_DeferredIncomeTaxExpenseBenefit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "DeferredIncomeTaxExpenseBenefit", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Deferred taxes", "label": "Deferred Income Tax Expense (Benefit)", "documentation": "Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations." } } }, "auth_ref": [ "r6", "r83", "r996", "r999" ] }, "us-gaap_DeferredIncomeTaxLiabilitiesNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "DeferredIncomeTaxLiabilitiesNet", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Long-term deferred tax liabilities", "label": "Deferred Income Tax Liabilities, Net", "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting." } } }, "auth_ref": [ "r367", "r368", "r594" ] }, "prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "DepreciationAndAmortizationByGeographicRegionTableTextBlock", "presentation": [ "http://www.protolabs.com/role/SegmentReportingTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Depreciation and Amortization by Geographic Region", "label": "Depreciation And Amortization By Geographic Region [Table Text Block]", "documentation": "Depreciation And Amortization By Geographic Region" } } }, "auth_ref": [] }, "us-gaap_DepreciationDepletionAndAmortization": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "DepreciationDepletionAndAmortization", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows", "http://www.protolabs.com/role/SegmentReportingScheduleofDepreciationandAmortizationDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Depreciation and amortization", "verboseLabel": "Total depreciation and amortization", "label": "Depreciation, Depletion and Amortization", "documentation": "The aggregate expense recognized in the current period that allocates the cost of tangible assets, intangible assets, or depleting assets to periods that benefit from use of the assets." } } }, "auth_ref": [ "r6", "r120", "r164", "r177", "r194", "r729", "r746", "r747" ] }, "us-gaap_DilutiveSecuritiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "DilutiveSecuritiesAbstract", "presentation": [ "http://www.protolabs.com/role/NetIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Effect of dilutive securities:", "label": "Dilutive Securities, Effect on Basic Earnings Per Share [Abstract]" } } }, "auth_ref": [] }, "us-gaap_DisaggregationOfRevenueTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "DisaggregationOfRevenueTableTextBlock", "presentation": [ "http://www.protolabs.com/role/SegmentReportingTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Disaggregation of Revenue", "label": "Disaggregation of Revenue [Table Text Block]", "documentation": "Tabular disclosure of disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor." } } }, "auth_ref": [ "r1053" ] }, "us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensation" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-Based Compensation", "label": "Share-Based Payment Arrangement [Text Block]", "documentation": "The entire disclosure for share-based payment arrangement." } } }, "auth_ref": [ "r322", "r327", "r356", "r357", "r359", "r770" ] }, "us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract", "lang": { "en-us": { "role": { "label": "Share-Based Payment Arrangement [Abstract]" } } }, "auth_ref": [] }, "us-gaap_DisclosureOfReclassificationAmountTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "DisclosureOfReclassificationAmountTextBlock", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLoss" ], "lang": { "en-us": { "role": { "terseLabel": "Accumulated Other Comprehensive Income (Loss)", "label": "Disclosure of Reclassification Amount [Text Block]", "documentation": "The entire disclosure for any adjustments made during the period to avoid double counting in comprehensive income items displayed as part of net income that also had been displayed as part of other comprehensive income in that period or earlier periods. These adjustments include reclassifications to net income of items in accumulated comprehensive income, such as deferred gains or losses on qualifying hedges when hedged item reported in net income, holding gains or losses on available-for-sale securities transferred into trading category, unrealized holding gains or losses on debt securities transferred from held-to-maturity category into available-for-sale category and accumulated translation adjustment attributable to foreign subsidiary or investment in foreign entity upon sale or liquidation." } } }, "auth_ref": [ "r44" ] }, "us-gaap_DisposalGroupNotDiscontinuedOperationLossGainOnWriteDown": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "DisposalGroupNotDiscontinuedOperationLossGainOnWriteDown", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Impairments related to exit and closure of facilities", "label": "Disposal Group, Not Discontinued Operation, Loss (Gain) on Write-down", "documentation": "Amount, before tax, of (gain) loss recognized for the (reversal of write-down) write-down to fair value, less cost to sell, of a disposal group. Excludes discontinued operations." } } }, "auth_ref": [ "r6", "r7", "r66", "r118" ] }, "prlb_DisposalGroupNotDiscontinuedOperationLossGainOnWriteDownAndGoodwillImpairmentLoss": { "xbrltype": "monetaryItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "DisposalGroupNotDiscontinuedOperationLossGainOnWriteDownAndGoodwillImpairmentLoss", "crdr": "debit", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofReportableSegmentsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Exit, Disposal and Goodwill impairment cost (benefit)", "label": "Disposal Group, Not Discontinued Operation, Loss (Gain) on Write-down And Goodwill, Impairment Loss", "documentation": "Disposal Group, Not Discontinued Operation, Loss (Gain) on Write-down And Goodwill, Impairment Loss" } } }, "auth_ref": [] }, "dei_DocumentFiscalPeriodFocus": { "xbrltype": "fiscalPeriodItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "DocumentFiscalPeriodFocus", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Document Fiscal Period Focus", "label": "Document Fiscal Period Focus", "documentation": "Fiscal period values are FY, Q1, Q2, and Q3. 1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY." } } }, "auth_ref": [] }, "dei_DocumentFiscalYearFocus": { "xbrltype": "gYearItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "DocumentFiscalYearFocus", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Document Fiscal Year Focus", "label": "Document Fiscal Year Focus", "documentation": "This is focus fiscal year of the document report in YYYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006." } } }, "auth_ref": [] }, "dei_DocumentPeriodEndDate": { "xbrltype": "dateItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "DocumentPeriodEndDate", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Document Period End Date", "label": "Document Period End Date", "documentation": "For the EDGAR submission types of Form 8-K: the date of the report, the date of the earliest event reported; for the EDGAR submission types of Form N-1A: the filing date; for all other submission types: the end of the reporting or transition period. The format of the date is YYYY-MM-DD." } } }, "auth_ref": [] }, "dei_DocumentQuarterlyReport": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "DocumentQuarterlyReport", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Document Quarterly Report", "label": "Document Quarterly Report", "documentation": "Boolean flag that is true only for a form used as an quarterly report." } } }, "auth_ref": [ "r852" ] }, "dei_DocumentTransitionReport": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "DocumentTransitionReport", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Document Transition Report", "label": "Document Transition Report", "documentation": "Boolean flag that is true only for a form used as a transition report." } } }, "auth_ref": [ "r884" ] }, "dei_DocumentType": { "xbrltype": "submissionTypeItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "DocumentType", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Document Type", "label": "Document Type", "documentation": "The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'." } } }, "auth_ref": [] }, "ecd_DvddsOrOthrErngsPdOnEqtyAwrdsNtOthrwsRflctdInTtlCompForCvrdYrMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "DvddsOrOthrErngsPdOnEqtyAwrdsNtOthrwsRflctdInTtlCompForCvrdYrMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Dividends or Other Earnings Paid on Equity Awards not Otherwise Reflected in Total Compensation for Covered Year", "label": "Dividends or Other Earnings Paid on Equity Awards not Otherwise Reflected in Total Compensation for Covered Year [Member]" } } }, "auth_ref": [ "r895" ] }, "prlb_ESPPMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "ESPPMember", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "ESPP", "label": "ESPP [Member]", "documentation": "ESPP [member" } } }, "auth_ref": [] }, "us-gaap_EarningsPerShareAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "EarningsPerShareAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Net income per share:", "label": "Earnings Per Share [Abstract]" } } }, "auth_ref": [] }, "us-gaap_EarningsPerShareBasic": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "EarningsPerShareBasic", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.protolabs.com/role/NetIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Basic (in dollars per share)", "label": "Earnings Per Share, Basic", "documentation": "The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period." } } }, "auth_ref": [ "r87", "r117", "r138", "r139", "r140", "r141", "r142", "r143", "r144", "r145", "r150", "r152", "r157", "r158", "r159", "r163", "r295", "r360", "r388", "r444", "r463", "r464", "r582", "r607", "r738" ] }, "prlb_EarningsPerShareBasicAndDilutedEPSAbstract": { "xbrltype": "stringItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "EarningsPerShareBasicAndDilutedEPSAbstract", "presentation": [ "http://www.protolabs.com/role/NetIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Net income per share:", "label": "Earnings Per Share, Basic and Diluted EPS [Abstract]", "documentation": "Earnings Per Share, Basic and Diluted EPS" } } }, "auth_ref": [] }, "us-gaap_EarningsPerShareDiluted": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "EarningsPerShareDiluted", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.protolabs.com/role/NetIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Diluted (in dollars per share)", "label": "Earnings Per Share, Diluted", "documentation": "The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period." } } }, "auth_ref": [ "r87", "r117", "r138", "r139", "r140", "r141", "r142", "r143", "r144", "r145", "r152", "r157", "r158", "r159", "r163", "r295", "r360", "r388", "r444", "r463", "r464", "r582", "r607", "r738" ] }, "us-gaap_EarningsPerShareTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "EarningsPerShareTextBlock", "presentation": [ "http://www.protolabs.com/role/NetIncomeperCommonShare" ], "lang": { "en-us": { "role": { "terseLabel": "Net Income per Common Share", "label": "Earnings Per Share [Text Block]", "documentation": "The entire disclosure for earnings per share." } } }, "auth_ref": [ "r149", "r160", "r161", "r162" ] }, "us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Effect of exchange rate changes on cash and cash equivalents", "label": "Effect of Exchange Rate on Cash, Cash Equivalent, Restricted Cash, and Restricted Cash Equivalent, Including Discontinued Operation", "documentation": "Amount of increase (decrease) from effect of exchange rate change on cash and cash equivalent, and cash and cash equivalent restricted to withdrawal or usage; held in foreign currency; including, but not limited to, discontinued operation. Cash includes, but is not limited to, currency on hand, demand deposit with financial institution, and account with general characteristic of demand deposit. Cash equivalent includes, but is not limited to, short-term, highly liquid investment that is both readily convertible to known amount of cash and so near maturity that it presents insignificant risk of change in value because of change in interest rate." } } }, "auth_ref": [ "r1102" ] }, "us-gaap_EffectiveIncomeTaxRateContinuingOperations": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "EffectiveIncomeTaxRateContinuingOperations", "presentation": [ "http://www.protolabs.com/role/IncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Effective income tax rate (in percent)", "label": "Effective Income Tax Rate Reconciliation, Percent", "documentation": "Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations." } } }, "auth_ref": [ "r370", "r773" ] }, "prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod": { "xbrltype": "percentItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod", "presentation": [ "http://www.protolabs.com/role/IncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Effective income tax rate, (decrease) increase during period (in percent)", "label": "Effective Income Tax Rate, Continuing Operations, Increase (Decrease) During The Period", "documentation": "The increase (decrease) during the period in percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations." } } }, "auth_ref": [] }, "us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate", "presentation": [ "http://www.protolabs.com/role/IncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Federal statutory rate (in percent)", "label": "Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent", "documentation": "Percentage of domestic federal statutory tax rate applicable to pretax income (loss)." } } }, "auth_ref": [ "r128", "r131", "r370", "r379", "r773" ] }, "us-gaap_EmployeeRelatedLiabilitiesCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "EmployeeRelatedLiabilitiesCurrent", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Accrued compensation", "label": "Employee-related Liabilities, Current", "documentation": "Total of the carrying values as of the balance sheet date of obligations incurred through that date and payable for obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)." } } }, "auth_ref": [ "r28" ] }, "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized", "crdr": "debit", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Stock based award, unrecognized compensation expense", "label": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount", "documentation": "Amount of cost not yet recognized for nonvested award under share-based payment arrangement." } } }, "auth_ref": [ "r358" ] }, "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Stock based award, unrecognized compensation expense, period for recognition (in years)", "label": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition", "documentation": "Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r358" ] }, "us-gaap_EmployeeStockOptionMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "EmployeeStockOptionMember", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Stock Options", "label": "Share-Based Payment Arrangement, Option [Member]", "documentation": "Share-based payment arrangement granting right, subject to vesting and other restrictions, to purchase or sell certain number of shares at predetermined price for specified period of time." } } }, "auth_ref": [ "r1056", "r1057", "r1058", "r1059", "r1060", "r1061", "r1062", "r1063", "r1064", "r1065", "r1066", "r1068", "r1069", "r1070", "r1071", "r1072", "r1073", "r1074", "r1075", "r1076", "r1077", "r1078", "r1079", "r1080", "r1081", "r1082" ] }, "prlb_EmployeeStockPurchasePlanMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "EmployeeStockPurchasePlanMember", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Employee Stock Purchase Plan", "label": "Employee Stock Purchase Plan [Member]", "documentation": "Information pertaining to the Employee Stock Purchase Plan." } } }, "auth_ref": [] }, "prlb_EmployeeStockPurchasePlanOfferingPeriod": { "xbrltype": "durationItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "EmployeeStockPurchasePlanOfferingPeriod", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Offering period (in months)", "label": "Employee Stock Purchase Plan, Offering Period", "documentation": "The offering period during which employees may purchase stock through the Employee Stock Purchase Plan." } } }, "auth_ref": [] }, "dei_EntityAddressAddressLine1": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityAddressAddressLine1", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Address, Address Line One", "label": "Entity Address, Address Line One", "documentation": "Address Line 1 such as Attn, Building Name, Street Name" } } }, "auth_ref": [] }, "dei_EntityAddressCityOrTown": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityAddressCityOrTown", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Address, City or Town", "label": "Entity Address, City or Town", "documentation": "Name of the City or Town" } } }, "auth_ref": [] }, "dei_EntityAddressPostalZipCode": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityAddressPostalZipCode", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Address, Postal Zip Code", "label": "Entity Address, Postal Zip Code", "documentation": "Code for the postal or zip code" } } }, "auth_ref": [] }, "dei_EntityAddressStateOrProvince": { "xbrltype": "stateOrProvinceItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityAddressStateOrProvince", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Address, State or Province", "label": "Entity Address, State or Province", "documentation": "Name of the state or province." } } }, "auth_ref": [] }, "dei_EntityCentralIndexKey": { "xbrltype": "centralIndexKeyItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityCentralIndexKey", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Central Index Key", "label": "Entity Central Index Key", "documentation": "A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK." } } }, "auth_ref": [ "r850" ] }, "dei_EntityCommonStockSharesOutstanding": { "xbrltype": "sharesItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityCommonStockSharesOutstanding", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Common Stock, Shares Outstanding", "label": "Entity Common Stock, Shares Outstanding", "documentation": "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument." } } }, "auth_ref": [] }, "dei_EntityCurrentReportingStatus": { "xbrltype": "yesNoItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityCurrentReportingStatus", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Current Reporting Status", "label": "Entity Current Reporting Status", "documentation": "Indicate 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure." } } }, "auth_ref": [] }, "dei_EntityEmergingGrowthCompany": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityEmergingGrowthCompany", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Emerging Growth Company", "label": "Entity Emerging Growth Company", "documentation": "Indicate if registrant meets the emerging growth company criteria." } } }, "auth_ref": [ "r850" ] }, "dei_EntityFileNumber": { "xbrltype": "fileNumberItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityFileNumber", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity File Number", "label": "Entity File Number", "documentation": "Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen." } } }, "auth_ref": [] }, "dei_EntityFilerCategory": { "xbrltype": "filerCategoryItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityFilerCategory", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Filer Category", "label": "Entity Filer Category", "documentation": "Indicate whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure." } } }, "auth_ref": [ "r850" ] }, "dei_EntityIncorporationStateCountryCode": { "xbrltype": "edgarStateCountryItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityIncorporationStateCountryCode", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Incorporation, State or Country Code", "label": "Entity Incorporation, State or Country Code", "documentation": "Two-character EDGAR code representing the state or country of incorporation." } } }, "auth_ref": [] }, "dei_EntityInteractiveDataCurrent": { "xbrltype": "yesNoItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityInteractiveDataCurrent", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Interactive Data Current", "label": "Entity Interactive Data Current", "documentation": "Boolean flag that is true when the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files)." } } }, "auth_ref": [ "r934" ] }, "dei_EntityRegistrantName": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityRegistrantName", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Registrant Name", "label": "Entity Registrant Name", "documentation": "The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC." } } }, "auth_ref": [ "r850" ] }, "dei_EntityShellCompany": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityShellCompany", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Shell Company", "label": "Entity Shell Company", "documentation": "Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act." } } }, "auth_ref": [ "r850" ] }, "dei_EntitySmallBusiness": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntitySmallBusiness", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Small Business", "label": "Entity Small Business", "documentation": "Indicates that the company is a Smaller Reporting Company (SRC)." } } }, "auth_ref": [ "r850" ] }, "dei_EntityTaxIdentificationNumber": { "xbrltype": "employerIdItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "EntityTaxIdentificationNumber", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Entity Tax Identification Number", "label": "Entity Tax Identification Number", "documentation": "The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS." } } }, "auth_ref": [ "r850" ] }, "ecd_EqtyAwrdsAdjFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "EqtyAwrdsAdjFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Equity Awards Adjustments, Footnote", "label": "Equity Awards Adjustments, Footnote [Text Block]" } } }, "auth_ref": [ "r889" ] }, "ecd_EqtyAwrdsAdjsExclgValRprtdInSummryCompstnTblMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "EqtyAwrdsAdjsExclgValRprtdInSummryCompstnTblMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Equity Awards Adjustments, Excluding Value Reported in Compensation Table", "label": "Equity Awards Adjustments, Excluding Value Reported in the Compensation Table [Member]" } } }, "auth_ref": [ "r930" ] }, "ecd_EqtyAwrdsAdjsMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "EqtyAwrdsAdjsMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Equity Awards Adjustments", "label": "Equity Awards Adjustments [Member]" } } }, "auth_ref": [ "r930" ] }, "ecd_EqtyAwrdsInSummryCompstnTblForAplblYrMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "EqtyAwrdsInSummryCompstnTblForAplblYrMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Aggregate Grant Date Fair Value of Equity Award Amounts Reported in Summary Compensation Table", "label": "Aggregate Grant Date Fair Value of Equity Award Amounts Reported in Summary Compensation Table [Member]" } } }, "auth_ref": [ "r930" ] }, "us-gaap_EquityComponentDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "EquityComponentDomain", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Equity Component [Domain]", "label": "Equity Component [Domain]", "documentation": "Components of equity are the parts of the total Equity balance including that which is allocated to common, preferred, treasury stock, retained earnings, etc." } } }, "auth_ref": [ "r11", "r85", "r86", "r87", "r113", "r114", "r115", "r133", "r134", "r135", "r137", "r144", "r146", "r148", "r165", "r237", "r238", "r275", "r294", "r307", "r360", "r377", "r378", "r385", "r386", "r387", "r389", "r443", "r444", "r451", "r452", "r453", "r454", "r455", "r456", "r457", "r458", "r459", "r460", "r462", "r495", "r496", "r497", "r498", "r499", "r500", "r501", "r502", "r508", "r603", "r629", "r630", "r631", "r643", "r694" ] }, "ecd_EquityValuationAssumptionDifferenceFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "EquityValuationAssumptionDifferenceFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Equity Valuation Assumption Difference, Footnote", "label": "Equity Valuation Assumption Difference, Footnote [Text Block]" } } }, "auth_ref": [ "r899" ] }, "ecd_ErrCompAnalysisTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "ErrCompAnalysisTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Erroneous Compensation Analysis", "label": "Erroneous Compensation Analysis [Text Block]" } } }, "auth_ref": [ "r857", "r867", "r877", "r909" ] }, "ecd_ErrCompRecoveryTable": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "ErrCompRecoveryTable", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Erroneously Awarded Compensation Recovery", "label": "Erroneously Awarded Compensation Recovery [Table]" } } }, "auth_ref": [ "r854", "r864", "r874", "r906" ] }, "srt_EuropeMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2025", "localname": "EuropeMember", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofExpendituresForAdditionsToLongLivedAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Europe", "label": "Europe [Member]" } } }, "auth_ref": [ "r1147", "r1148", "r1149", "r1150" ] }, "prlb_EuropeSegmentMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "EuropeSegmentMember", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDepreciationandAmortizationDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofReportableSegmentsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Europe", "verboseLabel": "Europe", "label": "Europe Segment [Member]", "documentation": "Operating segment for Europe" } } }, "auth_ref": [] }, "ecd_ExecutiveCategoryAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "ExecutiveCategoryAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Executive Category:", "label": "Executive Category [Axis]" } } }, "auth_ref": [ "r905" ] }, "prlb_ExpendituresForAdditionsToLongLivedAssetsByGeographicRegionTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "ExpendituresForAdditionsToLongLivedAssetsByGeographicRegionTableTextBlock", "presentation": [ "http://www.protolabs.com/role/SegmentReportingTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Expenditures for Additions to Long-lived Assets by Geographic Region", "label": "Expenditures For Additions To Long-lived Assets By Geographic Region [Table Text Block]", "documentation": "Expenditures For Additions To Long-lived Assets By Geographic Region" } } }, "auth_ref": [] }, "us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]", "label": "Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r466", "r467", "r480", "r808" ] }, "us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Fair Value, Recurring and Nonrecurring [Table]", "label": "Fair Value, Recurring and Nonrecurring [Table]", "documentation": "Disclosure of information about asset and liability measured at fair value on recurring and nonrecurring basis." } } }, "auth_ref": [ "r466", "r467", "r480", "r808" ] }, "us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueAssetsMeasuredOnRecurringBasisTextBlock", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Fair Value, Assets Measured on Recurring Basis", "label": "Fair Value, Assets Measured on Recurring Basis [Table Text Block]", "documentation": "Tabular disclosure of assets, including [financial] instruments measured at fair value that are classified in stockholders' equity, if any, by class that are measured at fair value on a recurring basis. The disclosures contemplated herein include the fair value measurements at the reporting date by the level within the fair value hierarchy in which the fair value measurements in their entirety fall, segregating fair value measurements using quoted prices in active markets for identical assets (Level 1), significant other observable inputs (Level 2), and significant unobservable inputs (Level 3)." } } }, "auth_ref": [ "r1092", "r1093" ] }, "us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Asset Class [Domain]", "label": "Asset Class [Domain]", "documentation": "Class of asset." } } }, "auth_ref": [ "r471", "r472", "r473", "r474", "r475", "r476", "r481", "r723", "r810", "r818" ] }, "us-gaap_FairValueByAssetClassAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueByAssetClassAxis", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Asset Class [Axis]", "label": "Asset Class [Axis]", "documentation": "Information by class of asset." } } }, "auth_ref": [ "r471", "r472", "r473", "r474", "r475", "r476", "r481", "r723", "r810", "r818" ] }, "us-gaap_FairValueByFairValueHierarchyLevelAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueByFairValueHierarchyLevelAxis", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Fair Value Hierarchy and NAV [Axis]", "label": "Fair Value Hierarchy and NAV [Axis]", "documentation": "Information by level within fair value hierarchy and fair value measured at net asset value per share as practical expedient." } } }, "auth_ref": [ "r292", "r312", "r313", "r314", "r315", "r316", "r317", "r318", "r319", "r465", "r467", "r468", "r469", "r470", "r479", "r480", "r482", "r489", "r512", "r513", "r514", "r723", "r755", "r756", "r762", "r763", "r764", "r765", "r766", "r808", "r811", "r818" ] }, "us-gaap_FairValueByMeasurementFrequencyAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueByMeasurementFrequencyAxis", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Measurement Frequency [Axis]", "label": "Measurement Frequency [Axis]", "documentation": "Information by measurement frequency." } } }, "auth_ref": [ "r466", "r467", "r468", "r470", "r808", "r1095", "r1098" ] }, "us-gaap_FairValueDisclosuresAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueDisclosuresAbstract", "lang": { "en-us": { "role": { "label": "Fair Value Disclosures [Abstract]" } } }, "auth_ref": [] }, "us-gaap_FairValueDisclosuresTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueDisclosuresTextBlock", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurements" ], "lang": { "en-us": { "role": { "terseLabel": "Fair Value Measurements", "label": "Fair Value Disclosures [Text Block]", "documentation": "The entire disclosure for the fair value of financial instruments (as defined), including financial assets and financial liabilities (collectively, as defined), and the measurements of those instruments as well as disclosures related to the fair value of non-financial assets and liabilities. Such disclosures about the financial instruments, assets, and liabilities would include: (1) the fair value of the required items together with their carrying amounts (as appropriate); (2) for items for which it is not practicable to estimate fair value, disclosure would include: (a) information pertinent to estimating fair value (including, carrying amount, effective interest rate, and maturity, and (b) the reasons why it is not practicable to estimate fair value; (3) significant concentrations of credit risk including: (a) information about the activity, region, or economic characteristics identifying a concentration, (b) the maximum amount of loss the entity is exposed to based on the gross fair value of the related item, (c) policy for requiring collateral or other security and information as to accessing such collateral or security, and (d) the nature and brief description of such collateral or security; (4) quantitative information about market risks and how such risks are managed; (5) for items measured on both a recurring and nonrecurring basis information regarding the inputs used to develop the fair value measurement; and (6) for items presented in the financial statement for which fair value measurement is elected: (a) information necessary to understand the reasons for the election, (b) discussion of the effect of fair value changes on earnings, (c) a description of [similar groups] items for which the election is made and the relation thereof to the balance sheet, the aggregate carrying value of items included in the balance sheet that are not eligible for the election; (7) all other required (as defined) and desired information." } } }, "auth_ref": [ "r468", "r475", "r477", "r478", "r479", "r482", "r483", "r484", "r485", "r486", "r578", "r808", "r812" ] }, "us-gaap_FairValueInputsLevel1Member": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueInputsLevel1Member", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Level 1", "label": "Fair Value, Inputs, Level 1 [Member]", "documentation": "Quoted prices in active markets for identical assets or liabilities that the reporting entity can access at the measurement date." } } }, "auth_ref": [ "r292", "r312", "r317", "r318", "r467", "r480", "r489", "r512", "r723", "r762", "r763", "r764", "r765", "r766", "r808", "r818" ] }, "us-gaap_FairValueInputsLevel2Member": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueInputsLevel2Member", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Level 2", "label": "Fair Value, Inputs, Level 2 [Member]", "documentation": "Inputs other than quoted prices included within level 1 that are observable for an asset or liability, either directly or indirectly, including, but not limited to, quoted prices for similar assets or liabilities in active markets, or quoted prices for identical or similar assets or liabilities in inactive markets." } } }, "auth_ref": [ "r292", "r312", "r317", "r318", "r320", "r467", "r468", "r480", "r489", "r513", "r723", "r755", "r756", "r762", "r763", "r764", "r765", "r766", "r808", "r818" ] }, "us-gaap_FairValueInputsLevel3Member": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueInputsLevel3Member", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Level 3", "label": "Fair Value, Inputs, Level 3 [Member]", "documentation": "Unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing." } } }, "auth_ref": [ "r292", "r312", "r313", "r314", "r315", "r316", "r317", "r318", "r319", "r467", "r468", "r469", "r470", "r480", "r489", "r514", "r723", "r755", "r756", "r762", "r763", "r764", "r765", "r766", "r808", "r811", "r818" ] }, "us-gaap_FairValueMeasurementFrequencyDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueMeasurementFrequencyDomain", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Measurement Frequency [Domain]", "label": "Measurement Frequency [Domain]", "documentation": "Measurement frequency." } } }, "auth_ref": [ "r466", "r467", "r468", "r470", "r808", "r1095", "r1098" ] }, "us-gaap_FairValueMeasurementsFairValueHierarchyDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueMeasurementsFairValueHierarchyDomain", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Fair Value Hierarchy and NAV [Domain]", "label": "Fair Value Hierarchy and NAV [Domain]", "documentation": "Categories used to prioritize the inputs to valuation techniques to measure fair value." } } }, "auth_ref": [ "r292", "r312", "r313", "r314", "r315", "r316", "r317", "r318", "r319", "r465", "r467", "r468", "r469", "r470", "r479", "r480", "r482", "r489", "r512", "r513", "r514", "r723", "r755", "r756", "r762", "r763", "r764", "r765", "r766", "r808", "r811", "r818" ] }, "us-gaap_FairValueMeasurementsRecurringMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FairValueMeasurementsRecurringMember", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Fair Value, Recurring", "label": "Fair Value, Recurring [Member]", "documentation": "Frequent fair value measurement. Includes, but is not limited to, fair value adjustment for impairment of asset, liability or equity, frequently measured at fair value." } } }, "auth_ref": [ "r808", "r1092", "r1093", "r1094", "r1095", "r1096", "r1098" ] }, "us-gaap_FinanceLeaseLiabilityCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FinanceLeaseLiabilityCurrent", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Current finance lease liabilities", "label": "Finance Lease, Liability, Current", "documentation": "Present value of lessee's discounted obligation for lease payments from finance lease, classified as current." } } }, "auth_ref": [ "r504" ] }, "us-gaap_FinanceLeaseLiabilityNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FinanceLeaseLiabilityNoncurrent", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Long-term finance lease liabilities", "label": "Finance Lease, Liability, Noncurrent", "documentation": "Present value of lessee's discounted obligation for lease payments from finance lease, classified as noncurrent." } } }, "auth_ref": [ "r504" ] }, "us-gaap_FinanceLeasePrincipalPayments": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FinanceLeasePrincipalPayments", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0, "order": 3.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Principal repayments of finance lease obligations", "label": "Finance Lease, Principal Payments", "documentation": "Amount of cash outflow for principal payment on finance lease." } } }, "auth_ref": [ "r505", "r506" ] }, "us-gaap_FinanceLeaseRightOfUseAsset": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FinanceLeaseRightOfUseAsset", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 7.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Finance lease assets", "label": "Finance Lease, Right-of-Use Asset, after Accumulated Amortization", "documentation": "Amount, after accumulated amortization, of right-of-use asset from finance lease." } } }, "auth_ref": [ "r503" ] }, "us-gaap_FinancialInstrumentAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FinancialInstrumentAxis", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Financial Instrument [Axis]", "label": "Financial Instrument [Axis]", "documentation": "Information by type of financial instrument." } } }, "auth_ref": [ "r205", "r206", "r207", "r208", "r209", "r210", "r211", "r212", "r213", "r214", "r215", "r216", "r217", "r218", "r219", "r220", "r221", "r222", "r223", "r224", "r225", "r226", "r227", "r228", "r229", "r230", "r231", "r232", "r233", "r234", "r240", "r241", "r242", "r243", "r244", "r246", "r247", "r248", "r293", "r306", "r450", "r461", "r487", "r492", "r494", "r509", "r510", "r511", "r512", "r513", "r514", "r515", "r516", "r517", "r518", "r519", "r520", "r521", "r522", "r523", "r525", "r526", "r527", "r528", "r529", "r530", "r531", "r532", "r533", "r534", "r535", "r536", "r537", "r538", "r539", "r591", "r604", "r752", "r808", "r810", "r811", "r812", "r813", "r814", "r815", "r816", "r817", "r820", "r938", "r939", "r940", "r941", "r942", "r943", "r944", "r1026", "r1027", "r1028", "r1029", "r1091", "r1094", "r1095", "r1096", "r1097", "r1098", "r1099", "r1100" ] }, "prlb_FiniteLivedIntangibleAssetExpectedAmortizationAfterYearFour": { "xbrltype": "monetaryItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "FiniteLivedIntangibleAssetExpectedAmortizationAfterYearFour", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Thereafter", "label": "Finite-Lived Intangible Asset, Expected Amortization, After Year Four", "documentation": "Amount of amortization for asset, excluding financial asset and goodwill, lacking physical substance with finite life expected to be recognized after fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [] }, "us-gaap_FiniteLivedIntangibleAssetUsefulLife": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FiniteLivedIntangibleAssetUsefulLife", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Useful Life (in years)", "label": "Finite-Lived Intangible Asset, Useful Life", "documentation": "Useful life of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [] }, "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FiniteLivedIntangibleAssetsAccumulatedAmortization", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Accumulated Amortization", "label": "Finite-Lived Intangible Assets, Accumulated Amortization", "documentation": "Accumulated amount of amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life." } } }, "auth_ref": [ "r97", "r250", "r269", "r726" ] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2026", "label": "Finite-Lived Intangible Asset, Expected Amortization, Year One", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r271", "r722", "r726" ] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Remaining 2025", "label": "Finite-Lived Intangible Asset, Expected Amortization, Remainder of Fiscal Year", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in remainder of current fiscal year." } } }, "auth_ref": [ "r1151" ] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFour", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2029", "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Four", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r271", "r722", "r726" ] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearThree", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2028", "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Three", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r271", "r722", "r726" ] }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "2027", "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Two", "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)." } } }, "auth_ref": [ "r271", "r722", "r726" ] }, "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FiniteLivedIntangibleAssetsByMajorClassAxis", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Finite-Lived Intangible Assets by Major Class [Axis]", "label": "Finite-Lived Intangible Assets by Major Class [Axis]", "documentation": "Information by major type or class of finite-lived intangible assets." } } }, "auth_ref": [ "r262", "r264", "r265", "r266", "r268", "r269", "r272", "r273", "r542", "r543", "r637", "r722", "r726", "r779", "r780", "r781", "r782", "r783", "r784", "r785", "r786", "r787", "r788", "r789", "r790", "r791", "r792", "r793", "r794", "r795", "r796", "r797", "r798", "r799", "r800", "r801", "r802", "r803", "r804", "r805" ] }, "us-gaap_FiniteLivedIntangibleAssetsFutureAmortizationExpenseAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FiniteLivedIntangibleAssetsFutureAmortizationExpenseAbstract", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Finite-Lived Intangible Assets, Net, Amortization Expense, Fiscal Year Maturity [Abstract]", "label": "Finite-Lived Intangible Assets, Net, Amortization Expense, Fiscal Year Maturity [Abstract]" } } }, "auth_ref": [] }, "us-gaap_FiniteLivedIntangibleAssetsGross": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FiniteLivedIntangibleAssetsGross", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails": { "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Gross", "label": "Finite-Lived Intangible Assets, Gross", "documentation": "Amount before amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life." } } }, "auth_ref": [ "r250", "r269", "r543", "r726" ] }, "us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FiniteLivedIntangibleAssetsMajorClassNameDomain", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Finite-Lived Intangible Assets, Major Class Name [Domain]", "label": "Finite-Lived Intangible Assets, Major Class Name [Domain]", "documentation": "The major class of finite-lived intangible asset (for example, patents, trademarks, copyrights, etc.) A major class is composed of intangible assets that can be grouped together because they are similar, either by their nature or by their use in the operations of a company." } } }, "auth_ref": [ "r262", "r264", "r265", "r266", "r268", "r269", "r272", "r273", "r637", "r722", "r726", "r779", "r780", "r781", "r782", "r783", "r784", "r785", "r786", "r787", "r788", "r789", "r790", "r791", "r792", "r793", "r794", "r795", "r796", "r797", "r798", "r799", "r800", "r801", "r802", "r803", "r804", "r805" ] }, "us-gaap_FiniteLivedIntangibleAssetsNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FiniteLivedIntangibleAssetsNet", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails": { "parentTag": null, "weight": null, "order": null, "root": true }, "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseDetails", "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Net", "label": "Finite-Lived Intangible Assets, Net", "documentation": "Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life." } } }, "auth_ref": [ "r542", "r1042" ] }, "us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Weighted Average Useful Life Remaining (in years)", "label": "Finite-Lived Intangible Assets, Remaining Amortization Period", "documentation": "Remaining amortization period of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r542" ] }, "us-gaap_FinitelivedIntangibleAssetsAcquired1": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "FinitelivedIntangibleAssetsAcquired1", "crdr": "debit", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Intangible assets acquired", "label": "Finite-Lived Intangible Assets Acquired", "documentation": "Amount of increase in assets, excluding financial assets, lacking physical substance with a definite life, from an acquisition." } } }, "auth_ref": [ "r264", "r637" ] }, "ecd_ForgoneRecoveryDueToDisqualificationOfTaxBenefitsAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "ForgoneRecoveryDueToDisqualificationOfTaxBenefitsAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Forgone Recovery due to Disqualification of Tax Benefits, Amount", "label": "Forgone Recovery due to Disqualification of Tax Benefits, Amount" } } }, "auth_ref": [ "r861", "r871", "r881", "r913" ] }, "ecd_ForgoneRecoveryDueToExpenseOfEnforcementAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "ForgoneRecoveryDueToExpenseOfEnforcementAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Forgone Recovery due to Expense of Enforcement, Amount", "label": "Forgone Recovery due to Expense of Enforcement, Amount" } } }, "auth_ref": [ "r861", "r871", "r881", "r913" ] }, "ecd_ForgoneRecoveryDueToViolationOfHomeCountryLawAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "ForgoneRecoveryDueToViolationOfHomeCountryLawAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Forgone Recovery due to Violation of Home Country Law, Amount", "label": "Forgone Recovery due to Violation of Home Country Law, Amount" } } }, "auth_ref": [ "r861", "r871", "r881", "r913" ] }, "ecd_ForgoneRecoveryExplanationOfImpracticabilityTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "ForgoneRecoveryExplanationOfImpracticabilityTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Forgone Recovery, Explanation of Impracticability", "label": "Forgone Recovery, Explanation of Impracticability [Text Block]" } } }, "auth_ref": [ "r861", "r871", "r881", "r913" ] }, "ecd_ForgoneRecoveryIndName": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "ForgoneRecoveryIndName", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Name", "label": "Forgone Recovery, Individual Name" } } }, "auth_ref": [ "r861", "r871", "r881", "r913" ] }, "ecd_FrValAsOfPrrYrEndOfEqtyAwrdsGrntdInPrrYrsFldVstngCondsDrngCvrdYrMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "FrValAsOfPrrYrEndOfEqtyAwrdsGrntdInPrrYrsFldVstngCondsDrngCvrdYrMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Prior Year End Fair Value of Equity Awards Granted in Any Prior Year that Fail to Meet Applicable Vesting Conditions During Covered Year", "label": "Prior Year End Fair Value of Equity Awards Granted in Any Prior Year that Fail to Meet Applicable Vesting Conditions During Covered Year [Member]" } } }, "auth_ref": [ "r894" ] }, "us-gaap_GainLossOnSaleOfBusiness": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "GainLossOnSaleOfBusiness", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OperatingExpenses", "weight": -1.0, "order": 4.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Costs related to exit and disposal activities", "label": "Gain (Loss) on Disposition of Business", "documentation": "Amount of gain (loss) from sale and disposal of integrated set of activities and assets capable of being conducted and managed for purpose of providing return in form of dividend, lower cost, or other economic benefit to investor, owner, member and participant." } } }, "auth_ref": [ "r447", "r995" ] }, "us-gaap_GainLossOnSaleOfPropertyPlantEquipment": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "GainLossOnSaleOfPropertyPlantEquipment", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 8.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Gain on disposal of property and equipment", "label": "Gain (Loss) on Disposition of Property Plant Equipment", "documentation": "Amount of gain (loss) on sale or disposal of property, plant and equipment assets, including oil and gas property and timber property." } } }, "auth_ref": [ "r6" ] }, "us-gaap_GeneralAndAdministrativeExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "GeneralAndAdministrativeExpense", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OperatingExpenses", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "General and administrative", "label": "General and Administrative Expense", "documentation": "The aggregate total of expenses of managing and administering the affairs of an entity, including affiliates of the reporting entity, which are not directly or indirectly associated with the manufacture, sale or creation of a product or product line." } } }, "auth_ref": [ "r55", "r679" ] }, "us-gaap_Goodwill": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "Goodwill", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Goodwill", "label": "Goodwill", "documentation": "Amount, after accumulated impairment loss, of asset representing future economic benefit arising from other asset acquired in business combination or from joint venture formation or both, that is not individually identified and separately recognized." } } }, "auth_ref": [ "r96", "r251", "r579", "r747", "r753", "r774", "r775", "r776", "r806", "r809", "r819", "r1033", "r1034", "r1088" ] }, "us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "GoodwillAndIntangibleAssetsDisclosureAbstract", "lang": { "en-us": { "role": { "label": "Goodwill and Intangible Assets Disclosure [Abstract]" } } }, "auth_ref": [] }, "us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "GoodwillAndIntangibleAssetsDisclosureTextBlock", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssets" ], "lang": { "en-us": { "role": { "terseLabel": "Goodwill and Other Intangible Assets", "label": "Goodwill and Intangible Assets Disclosure [Text Block]", "documentation": "The entire disclosure for goodwill and intangible assets." } } }, "auth_ref": [ "r1031", "r1035" ] }, "us-gaap_GoodwillPeriodIncreaseDecrease": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "GoodwillPeriodIncreaseDecrease", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Goodwill, period increase (decrease)", "label": "Goodwill, Period Increase (Decrease)", "documentation": "Amount of increase (decrease) of asset representing future economic benefit arising from other asset acquired in business combination or from joint venture formation or both, that is not individually identified and separately recognized." } } }, "auth_ref": [ "r1032", "r1088" ] }, "us-gaap_GrossProfit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "GrossProfit", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OperatingIncomeLoss", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "totalLabel": "Gross profit", "label": "Gross Profit", "documentation": "Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity." } } }, "auth_ref": [ "r49", "r53", "r80", "r128", "r129", "r130", "r236", "r283", "r284", "r285", "r286", "r287", "r288", "r289", "r290", "r291", "r493", "r741", "r746", "r1005", "r1007", "r1008", "r1009", "r1010", "r1050" ] }, "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_NetIncomeLoss", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "totalLabel": "Income before income taxes", "label": "Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest", "documentation": "Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest." } } }, "auth_ref": [ "r50", "r76", "r80", "r583", "r585", "r601", "r731", "r733", "r735", "r741", "r746", "r1005", "r1007", "r1008", "r1009", "r1010" ] }, "us-gaap_IncomeStatementAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncomeStatementAbstract", "lang": { "en-us": { "role": { "terseLabel": "Income Statement [Abstract]", "label": "Income Statement [Abstract]" } } }, "auth_ref": [] }, "us-gaap_IncomeTaxDisclosureAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncomeTaxDisclosureAbstract", "lang": { "en-us": { "role": { "label": "Income Tax Disclosure [Abstract]" } } }, "auth_ref": [] }, "us-gaap_IncomeTaxDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncomeTaxDisclosureTextBlock", "presentation": [ "http://www.protolabs.com/role/IncomeTaxes" ], "lang": { "en-us": { "role": { "terseLabel": "Income Taxes", "label": "Income Tax Disclosure [Text Block]", "documentation": "The entire disclosure for income tax." } } }, "auth_ref": [ "r128", "r131", "r365", "r370", "r371", "r372", "r373", "r375", "r376", "r380", "r382", "r383", "r384", "r590", "r636", "r642", "r773" ] }, "us-gaap_IncomeTaxExpenseBenefit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncomeTaxExpenseBenefit", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_NetIncomeLoss", "weight": -1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.protolabs.com/role/IncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Provision for income taxes", "label": "Income Tax Expense (Benefit)", "documentation": "Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations." } } }, "auth_ref": [ "r82", "r84", "r128", "r147", "r148", "r164", "r180", "r194", "r369", "r370", "r381", "r608", "r731", "r733", "r735", "r773" ] }, "us-gaap_IncomeTaxesReceivable": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncomeTaxesReceivable", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Income taxes receivable", "label": "Income Taxes Receivable, Current", "documentation": "Carrying amount due within one year of the balance sheet date (or one operating cycle, if longer) from tax authorities as of the balance sheet date representing refunds of overpayments or recoveries based on agreed-upon resolutions of disputes." } } }, "auth_ref": [ "r73", "r946" ] }, "us-gaap_IncreaseDecreaseInAccountsPayable": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncreaseDecreaseInAccountsPayable", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Accounts payable", "label": "Increase (Decrease) in Accounts Payable", "documentation": "The increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business." } } }, "auth_ref": [ "r5" ] }, "us-gaap_IncreaseDecreaseInAccountsReceivable": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncreaseDecreaseInAccountsReceivable", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 13.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Accounts receivable", "label": "Increase (Decrease) in Accounts Receivable", "documentation": "The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services." } } }, "auth_ref": [ "r5" ] }, "us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncreaseDecreaseInAccruedIncomeTaxesPayable", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 14.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Income taxes", "label": "Increase (Decrease) in Income Taxes Payable", "documentation": "The increase (decrease) during the period in the amount due for taxes based on the reporting entity's earnings or attributable to the entity's income earning process (business presence) within a given jurisdiction." } } }, "auth_ref": [ "r5" ] }, "us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Accrued liabilities and other", "label": "Increase (Decrease) in Accrued Liabilities and Other Operating Liabilities", "documentation": "Amount of increase (decrease) in accrued expenses, and obligations classified as other." } } }, "auth_ref": [ "r994" ] }, "us-gaap_IncreaseDecreaseInInventories": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncreaseDecreaseInInventories", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 3.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Inventories", "label": "Increase (Decrease) in Inventories", "documentation": "The increase (decrease) during the reporting period in the aggregate value of all inventory held by the reporting entity, associated with underlying transactions that are classified as operating activities." } } }, "auth_ref": [ "r5" ] }, "us-gaap_IncreaseDecreaseInOperatingCapitalAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncreaseDecreaseInOperatingCapitalAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Changes in operating assets and liabilities:", "label": "Adjustment to Reconcile Net Income to Cash Provided by (Used in) Operating Activity, Increase (Decrease) in Operating Capital [Abstract]" } } }, "auth_ref": [] }, "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0, "order": 12.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Prepaid expenses and other", "label": "Increase (Decrease) in Prepaid Expense and Other Assets", "documentation": "Amount of increase (decrease) in prepaid expenses, and assets classified as other." } } }, "auth_ref": [ "r5" ] }, "us-gaap_IncreaseDecreaseInStockholdersEquityRollForward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncreaseDecreaseInStockholdersEquityRollForward", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Increase (Decrease) in Stockholders' Equity [Roll Forward]", "label": "Increase (Decrease) in Stockholders' Equity [Roll Forward]", "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period." } } }, "auth_ref": [] }, "us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "IncrementalCommonSharesAttributableToShareBasedPaymentArrangements", "calculation": { "http://www.protolabs.com/role/NetIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails": { "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/NetIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Employee stock options and other (in shares)", "label": "Incremental Common Shares Attributable to Dilutive Effect of Share-Based Payment Arrangements", "documentation": "Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of share based payment arrangements using the treasury stock method." } } }, "auth_ref": [ "r153", "r154", "r155", "r159", "r326" ] }, "ecd_IndividualAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "IndividualAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure", "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure", "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements", "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Individual:", "label": "Individual [Axis]" } } }, "auth_ref": [ "r861", "r871", "r881", "r905", "r913", "r917", "r925" ] }, "prlb_InducementAwardsMarketConditionMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "InducementAwardsMarketConditionMember", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Inducement Awards, Market Conditions", "label": "Inducement Awards, Market Condition [Member]", "documentation": "Inducement Awards, Market Condition" } } }, "auth_ref": [] }, "prlb_InducementAwardsMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "InducementAwardsMember", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Inducement Awards", "label": "Inducement Awards [Member]", "documentation": "Inducement Awards" } } }, "auth_ref": [] }, "prlb_InducementAwardsPerformanceConditionMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "InducementAwardsPerformanceConditionMember", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Inducement Awards, Performance Condition", "label": "Inducement Awards, Performance Condition [Member]", "documentation": "Inducement Awards, Performance Condition" } } }, "auth_ref": [] }, "prlb_InjectionMoldingProtomoldMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "InjectionMoldingProtomoldMember", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDisaggregationofRevenueDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Injection Molding", "label": "Injection Molding (Protomold) [Member]", "documentation": "Represents the Injection Molding (Protomold) product." } } }, "auth_ref": [] }, "ecd_InsiderTradingArrLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "InsiderTradingArrLineItems", "lang": { "en-us": { "role": { "label": "Insider Trading Arrangements [Line Items]" } } }, "auth_ref": [ "r923" ] }, "ecd_InsiderTradingPoliciesProcLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "InsiderTradingPoliciesProcLineItems", "lang": { "en-us": { "role": { "label": "Insider Trading Policies and Procedures [Line Items]" } } }, "auth_ref": [ "r853", "r929" ] }, "ecd_InsiderTrdPoliciesProcAdoptedFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "InsiderTrdPoliciesProcAdoptedFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingPoliciesProc" ], "lang": { "en-us": { "role": { "terseLabel": "Insider Trading Policies and Procedures Adopted", "label": "Insider Trading Policies and Procedures Adopted [Flag]" } } }, "auth_ref": [ "r853", "r929" ] }, "ecd_InsiderTrdPoliciesProcNotAdoptedTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "InsiderTrdPoliciesProcNotAdoptedTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingPoliciesProc" ], "lang": { "en-us": { "role": { "terseLabel": "Insider Trading Policies and Procedures Not Adopted", "label": "Insider Trading Policies and Procedures Not Adopted [Text Block]" } } }, "auth_ref": [ "r853", "r929" ] }, "us-gaap_InventoryDisclosureAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "InventoryDisclosureAbstract", "lang": { "en-us": { "role": { "label": "Inventory Disclosure [Abstract]" } } }, "auth_ref": [] }, "us-gaap_InventoryDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "InventoryDisclosureTextBlock", "presentation": [ "http://www.protolabs.com/role/Inventory" ], "lang": { "en-us": { "role": { "terseLabel": "Inventory", "label": "Inventory Disclosure [Text Block]", "documentation": "The entire disclosure for inventory. Includes, but is not limited to, the basis of stating inventory, the method of determining inventory cost, the classes of inventory, and the nature of the cost elements included in inventory." } } }, "auth_ref": [ "r249" ] }, "us-gaap_InventoryGross": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "InventoryGross", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/InventoryDetails": { "parentTag": "us-gaap_InventoryNet", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/InventoryDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Total inventory", "label": "Inventory, Gross", "documentation": "Gross amount, as of the balance sheet date, of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process." } } }, "auth_ref": [ "r947" ] }, "us-gaap_InventoryNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "InventoryNet", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 2.0 }, "http://www.protolabs.com/role/InventoryDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets", "http://www.protolabs.com/role/InventoryDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Inventory", "totalLabel": "Inventory, net of allowance", "label": "Inventory, Net", "documentation": "Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer." } } }, "auth_ref": [ "r102", "r728", "r819" ] }, "us-gaap_InventoryValuationReserves": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "InventoryValuationReserves", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/InventoryDetails": { "parentTag": "us-gaap_InventoryNet", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/InventoryDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Allowance for obsolescence", "label": "Inventory Valuation Reserves", "documentation": "Amount of valuation reserve for inventory." } } }, "auth_ref": [ "r65", "r947" ] }, "us-gaap_InvestmentTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "InvestmentTextBlock", "presentation": [ "http://www.protolabs.com/role/MarketableSecurities" ], "lang": { "en-us": { "role": { "terseLabel": "Marketable Securities", "label": "Investment [Text Block]", "documentation": "The entire disclosure for investment." } } }, "auth_ref": [ "r936", "r937", "r1012" ] }, "us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "InvestmentsClassifiedByContractualMaturityDateTableTextBlock", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Investments Classified by Contractual Maturity Date", "label": "Investments Classified by Contractual Maturity Date [Table Text Block]", "documentation": "Tabular disclosure of maturities of an entity's investments as well as any other information pertinent to the investments." } } }, "auth_ref": [] }, "us-gaap_InvestmentsDebtAndEquitySecuritiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "InvestmentsDebtAndEquitySecuritiesAbstract", "lang": { "en-us": { "role": { "label": "Investments, Debt and Equity Securities [Abstract]" } } }, "auth_ref": [] }, "us-gaap_Liabilities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "Liabilities", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "totalLabel": "Total liabilities", "label": "Liabilities", "documentation": "Amount of liability recognized for present obligation requiring transfer or otherwise providing economic benefit to others." } } }, "auth_ref": [ "r16", "r27", "r28", "r29", "r30", "r31", "r32", "r33", "r128", "r129", "r130", "r236", "r283", "r284", "r285", "r286", "r287", "r288", "r289", "r290", "r291", "r446", "r448", "r449", "r493", "r657", "r740", "r757", "r848", "r1050", "r1103", "r1104" ] }, "us-gaap_LiabilitiesAndStockholdersEquity": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "LiabilitiesAndStockholdersEquity", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "totalLabel": "Total liabilities and shareholders' equity", "label": "Liabilities and Equity", "documentation": "Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any." } } }, "auth_ref": [ "r40", "r75", "r599", "r819", "r835", "r836", "r996", "r998", "r1030", "r1101" ] }, "us-gaap_LiabilitiesAndStockholdersEquityAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "LiabilitiesAndStockholdersEquityAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Liabilities and shareholders' equity", "label": "Liabilities and Equity [Abstract]" } } }, "auth_ref": [] }, "us-gaap_LiabilitiesCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "LiabilitiesCurrent", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "totalLabel": "Total current liabilities", "label": "Liabilities, Current", "documentation": "Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer." } } }, "auth_ref": [ "r29", "r94", "r128", "r129", "r130", "r236", "r283", "r284", "r285", "r286", "r287", "r288", "r289", "r290", "r291", "r446", "r448", "r449", "r493", "r819", "r1050", "r1103", "r1104" ] }, "us-gaap_LiabilitiesCurrentAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "LiabilitiesCurrentAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Current liabilities", "label": "Liabilities, Current [Abstract]" } } }, "auth_ref": [] }, "dei_LocalPhoneNumber": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "LocalPhoneNumber", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Local Phone Number", "label": "Local Phone Number", "documentation": "Local phone number for entity." } } }, "auth_ref": [] }, "us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "LongLivedAssetsByGeographicAreasTableTextBlock", "presentation": [ "http://www.protolabs.com/role/SegmentReportingTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Long-Lived Assets by Geographic Areas", "label": "Long-Lived Assets by Geographic Areas [Table Text Block]", "documentation": "Tabular disclosure of long-lived assets, excluding financial instruments, long-term customer relationships of a financial institution, mortgage rights, deferred policy acquisition costs, and deferred tax assets, by geographic areas located in the entity's country of domicile and foreign countries in which the entity holds assets." } } }, "auth_ref": [ "r63" ] }, "prlb_LongTermIncentivePlan2022Member": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "LongTermIncentivePlan2022Member", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Long-Term Incentive Plan 2022", "label": "Long-Term Incentive Plan 2022 [Member]", "documentation": "Long-Term Incentive Plan 2022" } } }, "auth_ref": [] }, "us-gaap_MarketableSecuritiesCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "MarketableSecuritiesCurrent", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Short-term marketable securities", "label": "Marketable Securities, Current", "documentation": "Amount of investment in marketable security, classified as current." } } }, "auth_ref": [ "r945" ] }, "us-gaap_MarketableSecuritiesNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "MarketableSecuritiesNoncurrent", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Long-term marketable securities", "label": "Marketable Securities, Noncurrent", "documentation": "Amount of investment in marketable security, classified as noncurrent." } } }, "auth_ref": [ "r945" ] }, "srt_MaximumMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2025", "localname": "MaximumMember", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails", "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Maximum", "label": "Maximum [Member]" } } }, "auth_ref": [ "r167", "r279", "r280", "r281", "r282", "r321", "r351", "r352", "r353", "r363", "r470", "r540", "r627", "r628", "r635", "r649", "r650", "r697", "r699", "r701", "r702", "r704", "r706", "r707", "r709", "r710", "r720", "r721", "r751", "r758", "r769", "r774", "r777", "r778", "r811", "r812", "r816", "r817", "r830", "r1052", "r1105", "r1106", "r1107", "r1108", "r1109", "r1110" ] }, "ecd_MeasureAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "MeasureAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Measure:", "label": "Measure [Axis]" } } }, "auth_ref": [ "r897" ] }, "ecd_MeasureName": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "MeasureName", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Name", "label": "Measure Name" } } }, "auth_ref": [ "r897" ] }, "srt_MinimumMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2025", "localname": "MinimumMember", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails", "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Minimum", "label": "Minimum [Member]" } } }, "auth_ref": [ "r167", "r279", "r280", "r281", "r282", "r321", "r351", "r352", "r353", "r363", "r470", "r540", "r627", "r628", "r635", "r649", "r650", "r697", "r699", "r701", "r702", "r704", "r706", "r707", "r709", "r710", "r720", "r721", "r751", "r758", "r769", "r774", "r777", "r778", "r811", "r812", "r816", "r830", "r1052", "r1105", "r1106", "r1107", "r1108", "r1109", "r1110" ] }, "ecd_MnpiDiscTimedForCompValFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "MnpiDiscTimedForCompValFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "MNPI Disclosure Timed for Compensation Value", "label": "MNPI Disclosure Timed for Compensation Value [Flag]" } } }, "auth_ref": [ "r916" ] }, "us-gaap_MoneyMarketFundsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "MoneyMarketFundsMember", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Money market mutual fund", "label": "Money Market Funds [Member]", "documentation": "Fund that invests in short-term money-market instruments, for example, but not limited to, commercial paper, banker's acceptances, repurchase agreements, government securities, certificates of deposit, and other highly liquid securities." } } }, "auth_ref": [ "r1054", "r1055" ] }, "ecd_MtrlTermsOfTrdArrTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "MtrlTermsOfTrdArrTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Material Terms of Trading Arrangement", "label": "Material Terms of Trading Arrangement [Text Block]" } } }, "auth_ref": [ "r924" ] }, "ecd_NamedExecutiveOfficersFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "NamedExecutiveOfficersFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Named Executive Officers, Footnote", "label": "Named Executive Officers, Footnote [Text Block]" } } }, "auth_ref": [ "r898" ] }, "us-gaap_NetCashProvidedByUsedInFinancingActivities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "NetCashProvidedByUsedInFinancingActivities", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "totalLabel": "Net cash used in financing activities", "label": "Cash Provided by (Used in) Financing Activity, Including Discontinued Operation", "documentation": "Amount of cash inflow (outflow) from financing activity, including, but not limited to, discontinued operation. Financing activity includes, but is not limited to, obtaining resource from owner and providing return on, and return of, their investment; borrowing money and repaying amount borrowed, or settling obligation; and obtaining and paying for other resource obtained from creditor on long-term credit." } } }, "auth_ref": [ "r124" ] }, "us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "NetCashProvidedByUsedInFinancingActivitiesAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Financing activities", "label": "Cash Provided by (Used in) Financing Activity, Including Discontinued Operation [Abstract]" } } }, "auth_ref": [] }, "us-gaap_NetCashProvidedByUsedInInvestingActivities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "NetCashProvidedByUsedInInvestingActivities", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "totalLabel": "Net cash (used in) provided by investing activities", "label": "Cash Provided by (Used in) Investing Activity, Including Discontinued Operation", "documentation": "Amount of cash inflow (outflow) from investing activity, including, but not limited to, discontinued operation. Investing activity includes, but is not limited to, making and collecting loan, acquiring and disposing of debt and equity instruments, property, plant, and equipment, and other productive assets." } } }, "auth_ref": [ "r124" ] }, "us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "NetCashProvidedByUsedInInvestingActivitiesAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Investing activities", "label": "Cash Provided by (Used in) Investing Activity, Including Discontinued Operation [Abstract]" } } }, "auth_ref": [] }, "us-gaap_NetCashProvidedByUsedInOperatingActivities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "NetCashProvidedByUsedInOperatingActivities", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "totalLabel": "Net cash provided by operating activities", "label": "Cash Provided by (Used in) Operating Activity, Including Discontinued Operation", "documentation": "Amount of cash inflow (outflow) from operating activity, including, but not limited to, discontinued operation. Operating activity includes, but is not limited to, transaction, adjustment, and change in value not defined as investing or financing activity." } } }, "auth_ref": [ "r60", "r61", "r62" ] }, "us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "NetCashProvidedByUsedInOperatingActivitiesAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Operating activities", "label": "Cash Provided by (Used in) Operating Activity, Including Discontinued Operation [Abstract]" } } }, "auth_ref": [] }, "us-gaap_NetIncomeLoss": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "NetIncomeLoss", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 10.0 }, "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows", "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity", "http://www.protolabs.com/role/NetIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails", "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "totalLabel": "Net income", "terseLabel": "Net income", "netLabel": "Net income", "label": "Net Income (Loss) Attributable to Parent", "documentation": "The portion of profit or loss for the period, net of income taxes, which is attributable to the parent." } } }, "auth_ref": [ "r54", "r62", "r77", "r87", "r92", "r108", "r111", "r115", "r128", "r129", "r130", "r132", "r136", "r140", "r141", "r142", "r143", "r144", "r147", "r148", "r156", "r236", "r283", "r284", "r285", "r286", "r287", "r288", "r289", "r290", "r291", "r295", "r298", "r300", "r304", "r360", "r388", "r444", "r464", "r493", "r602", "r677", "r692", "r693", "r731", "r733", "r735", "r847", "r1050" ] }, "ecd_NonGaapMeasureDescriptionTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "NonGaapMeasureDescriptionTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Non-GAAP Measure Description", "label": "Non-GAAP Measure Description [Text Block]" } } }, "auth_ref": [ "r897" ] }, "ecd_NonNeosMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "NonNeosMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Non-NEOs", "label": "Non-NEOs [Member]" } } }, "auth_ref": [ "r861", "r871", "r881", "r905", "r913" ] }, "ecd_NonPeoNeoAvgCompActuallyPaidAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "NonPeoNeoAvgCompActuallyPaidAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Non-PEO NEO Average Compensation Actually Paid Amount", "label": "Non-PEO NEO Average Compensation Actually Paid Amount" } } }, "auth_ref": [ "r888" ] }, "ecd_NonPeoNeoAvgTotalCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "NonPeoNeoAvgTotalCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Non-PEO NEO Average Total Compensation Amount", "label": "Non-PEO NEO Average Total Compensation Amount" } } }, "auth_ref": [ "r887" ] }, "ecd_NonPeoNeoMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "NonPeoNeoMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Non-PEO NEO", "label": "Non-PEO NEO [Member]" } } }, "auth_ref": [ "r905" ] }, "ecd_NonRule10b51ArrAdoptedFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "NonRule10b51ArrAdoptedFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Non-Rule 10b5-1 Arrangement Adopted", "label": "Non-Rule 10b5-1 Arrangement Adopted [Flag]" } } }, "auth_ref": [ "r924" ] }, "ecd_NonRule10b51ArrTrmntdFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "NonRule10b51ArrTrmntdFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Non-Rule 10b5-1 Arrangement Terminated", "label": "Non-Rule 10b5-1 Arrangement Terminated [Flag]" } } }, "auth_ref": [ "r924" ] }, "us-gaap_NoncompeteAgreementsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "NoncompeteAgreementsMember", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Non-compete agreement", "label": "Noncompete Agreements [Member]", "documentation": "Agreement in which one party agrees not to pursue a similar trade in competition with another party." } } }, "auth_ref": [ "r783", "r1036", "r1037", "r1038", "r1039", "r1040", "r1042", "r1044", "r1045" ] }, "us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OciBeforeReclassificationsNetOfTaxAttributableToParent", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails": { "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Other comprehensive income (loss) before reclassifications", "netLabel": "Other comprehensive income before reclassifications", "label": "OCI, before Reclassifications, Net of Tax, Attributable to Parent", "documentation": "Amount after tax, before reclassification adjustments, of other comprehensive income (loss), attributable to parent." } } }, "auth_ref": [ "r15", "r18" ] }, "us-gaap_OperatingExpenses": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OperatingExpenses", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OperatingIncomeLoss", "weight": -1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "totalLabel": "Total operating expenses", "label": "Operating Expenses", "documentation": "Generally recurring costs associated with normal operations except for the portion of these expenses which can be clearly related to production and included in cost of sales or services. Includes selling, general and administrative expense." } } }, "auth_ref": [ "r735" ] }, "us-gaap_OperatingExpensesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OperatingExpensesAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Operating expenses", "label": "Operating Expenses [Abstract]" } } }, "auth_ref": [] }, "us-gaap_OperatingIncomeLoss": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OperatingIncomeLoss", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.protolabs.com/role/SegmentReportingScheduleofReportableSegmentsDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Income from operations", "label": "Operating Income (Loss)", "documentation": "The net result for the period of deducting operating expenses from operating revenues." } } }, "auth_ref": [ "r80", "r731", "r735", "r741", "r1005", "r1007", "r1008", "r1009", "r1010" ] }, "us-gaap_OperatingLeaseLiabilityCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OperatingLeaseLiabilityCurrent", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Current operating lease liabilities", "label": "Operating Lease, Liability, Current", "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as current." } } }, "auth_ref": [ "r504" ] }, "us-gaap_OperatingLeaseLiabilityNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OperatingLeaseLiabilityNoncurrent", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Long-term operating lease liabilities", "label": "Operating Lease, Liability, Noncurrent", "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent." } } }, "auth_ref": [ "r504" ] }, "us-gaap_OperatingLeaseRightOfUseAsset": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OperatingLeaseRightOfUseAsset", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 8.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Operating lease assets", "label": "Operating Lease, Right-of-Use Asset", "documentation": "Amount of lessee's right to use underlying asset under operating lease." } } }, "auth_ref": [ "r503" ] }, "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsAbstract", "lang": { "en-us": { "role": { "label": "Organization, Consolidation and Presentation of Financial Statements [Abstract]" } } }, "auth_ref": [] }, "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock", "presentation": [ "http://www.protolabs.com/role/BasisofPresentation" ], "lang": { "en-us": { "role": { "terseLabel": "Basis of Presentation", "label": "Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]", "documentation": "The entire disclosure for organization, consolidation and basis of presentation of financial statements disclosure." } } }, "auth_ref": [ "r71", "r88", "r89", "r90", "r638", "r639" ] }, "us-gaap_OtherAssetsNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OtherAssetsNoncurrent", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Other long-term assets", "label": "Other Assets, Noncurrent", "documentation": "Amount of noncurrent assets classified as other." } } }, "auth_ref": [ "r98" ] }, "us-gaap_OtherComprehensiveIncomeAvailableForSaleSecuritiesAdjustmentNetOfTaxPeriodIncreaseDecreaseAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OtherComprehensiveIncomeAvailableForSaleSecuritiesAdjustmentNetOfTaxPeriodIncreaseDecreaseAbstract", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Net unrealized gains on investments in securities", "label": "OCI, Debt Securities, Available-for-Sale, Gain (Loss), after Adjustment and Tax [Abstract]" } } }, "auth_ref": [] }, "us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParentAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParentAbstract", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Foreign currency translation adjustments", "label": "Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent [Abstract]" } } }, "auth_ref": [] }, "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax", "crdr": "credit", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Foreign currency losses", "label": "Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, before Tax", "documentation": "Amount before tax, after reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature." } } }, "auth_ref": [ "r2", "r48", "r603" ] }, "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax", "crdr": "credit", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Foreign currency translation adjustment", "label": "Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax", "documentation": "Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature." } } }, "auth_ref": [ "r2", "r603" ] }, "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Other comprehensive income", "label": "Other Comprehensive Income (Loss), Net of Tax [Abstract]" } } }, "auth_ref": [] }, "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails" ], "lang": { "en-us": { "role": { "totalLabel": "Net current-period other comprehensive income (loss)", "label": "Other Comprehensive Income (Loss), Net of Tax, Portion Attributable to Parent", "documentation": "Amount after tax of other comprehensive income (loss) attributable to parent entity." } } }, "auth_ref": [ "r4", "r10", "r72", "r109", "r112", "r144" ] }, "us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax", "crdr": "credit", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Net unrealized gains on investments in securities", "label": "OCI, Debt Securities, Available-for-Sale, Unrealized Holding Gain (Loss), before Adjustment, after Tax", "documentation": "Amount, after tax and before adjustment, of unrealized holding gain (loss) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale). Excludes unrealized gain (loss) on investment in debt security measured at amortized cost (held-to-maturity) from transfer to available-for-sale." } } }, "auth_ref": [ "r104", "r106", "r235" ] }, "us-gaap_OtherIntangibleAssetsNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OtherIntangibleAssetsNet", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 6.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Other intangible assets, net", "label": "Other Intangible Assets, Net", "documentation": "Amount after accumulated amortization of finite-lived and indefinite-lived intangible assets classified as other." } } }, "auth_ref": [] }, "us-gaap_OtherLiabilitiesNoncurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OtherLiabilitiesNoncurrent", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Liabilities", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Other long-term liabilities", "label": "Other Liabilities, Noncurrent", "documentation": "Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer." } } }, "auth_ref": [ "r31" ] }, "us-gaap_OtherNonoperatingIncomeExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OtherNonoperatingIncomeExpense", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Other income, net", "label": "Other Nonoperating Income (Expense)", "documentation": "Amount of income (expense) related to nonoperating activities, classified as other." } } }, "auth_ref": [ "r56", "r807" ] }, "us-gaap_OtherOperatingActivitiesCashFlowStatement": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "OtherOperatingActivitiesCashFlowStatement", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 11.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Other", "label": "Adjustment to Reconcile Net Income to Cash Provided by (Used in) Operating Activity, Other Item", "documentation": "Amount of cash inflow (outflow) from operating activity, classified as other, in reconciling net income to reflect cash provided by (used in) operating activity when indirect cash flow method is applied." } } }, "auth_ref": [] }, "ecd_OtherPerfMeasureAmt": { "xbrltype": "decimalItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "OtherPerfMeasureAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Other Performance Measure, Amount", "label": "Other Performance Measure, Amount" } } }, "auth_ref": [ "r897" ] }, "prlb_OtherProductsMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "OtherProductsMember", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDisaggregationofRevenueDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Other Revenue", "label": "Other Products [Member]", "documentation": "Represents other products." } } }, "auth_ref": [] }, "ecd_OutstandingAggtErrCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "OutstandingAggtErrCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Outstanding Aggregate Erroneous Compensation Amount", "label": "Outstanding Aggregate Erroneous Compensation Amount" } } }, "auth_ref": [ "r859", "r869", "r879", "r911" ] }, "ecd_OutstandingRecoveryCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "OutstandingRecoveryCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Compensation Amount", "label": "Outstanding Recovery Compensation Amount" } } }, "auth_ref": [ "r862", "r872", "r882", "r914" ] }, "ecd_OutstandingRecoveryIndName": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "OutstandingRecoveryIndName", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Name", "label": "Outstanding Recovery, Individual Name" } } }, "auth_ref": [ "r862", "r872", "r882", "r914" ] }, "ecd_PayVsPerformanceDisclosureLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "PayVsPerformanceDisclosureLineItems", "lang": { "en-us": { "role": { "label": "Pay vs Performance Disclosure [Line Items]" } } }, "auth_ref": [ "r886" ] }, "us-gaap_PaymentsForRepurchaseOfCommonStock": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PaymentsForRepurchaseOfCommonStock", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Repurchases of common stock", "label": "Payments for Repurchase of Common Stock", "documentation": "The cash outflow to reacquire common stock during the period." } } }, "auth_ref": [ "r59" ] }, "us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PaymentsRelatedToTaxWithholdingForShareBasedCompensation", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Purchases of shares withheld for tax obligations", "label": "Payment, Tax Withholding, Share-Based Payment Arrangement", "documentation": "Amount of cash outflow to satisfy grantee's tax withholding obligation for award under share-based payment arrangement." } } }, "auth_ref": [ "r123" ] }, "us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PaymentsToAcquireAvailableForSaleSecuritiesDebt", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": -1.0, "order": 3.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Purchases of marketable securities", "label": "Payments to Acquire Debt Securities, Available-for-Sale", "documentation": "Amount of cash outflow to acquire investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)." } } }, "auth_ref": [ "r20", "r121", "r204" ] }, "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PaymentsToAcquirePropertyPlantAndEquipment", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "negatedLabel": "Purchases of property, equipment and other capital assets", "label": "Payments to Acquire Property, Plant, and Equipment", "documentation": "The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets." } } }, "auth_ref": [ "r58" ] }, "ecd_PeerGroupIssuersFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "PeerGroupIssuersFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Peer Group Issuers, Footnote", "label": "Peer Group Issuers, Footnote [Text Block]" } } }, "auth_ref": [ "r896" ] }, "ecd_PeerGroupTotalShareholderRtnAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "PeerGroupTotalShareholderRtnAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Peer Group Total Shareholder Return Amount", "label": "Peer Group Total Shareholder Return Amount" } } }, "auth_ref": [ "r896" ] }, "ecd_PeoActuallyPaidCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "PeoActuallyPaidCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "PEO Actually Paid Compensation Amount", "label": "PEO Actually Paid Compensation Amount" } } }, "auth_ref": [ "r888" ] }, "ecd_PeoMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "PeoMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "PEO", "label": "PEO [Member]" } } }, "auth_ref": [ "r905" ] }, "ecd_PeoName": { "xbrltype": "normalizedStringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "PeoName", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "PEO Name", "label": "PEO Name" } } }, "auth_ref": [ "r898" ] }, "ecd_PeoTotalCompAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "PeoTotalCompAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "PEO Total Compensation Amount", "label": "PEO Total Compensation Amount" } } }, "auth_ref": [ "r887" ] }, "prlb_PercentageOfTargetNumberCapableOfBeingAchievedDuringPerformancePeriodsLowerLimit": { "xbrltype": "percentItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "PercentageOfTargetNumberCapableOfBeingAchievedDuringPerformancePeriodsLowerLimit", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Percentage of target, capable of being achieved during performance periods, lower", "label": "Percentage Of Target Number, Capable Of Being Achieved During Performance Periods, Lower Limit", "documentation": "Percentage Of Target Number, Capable Of Being Achieved During Performance Periods, Lower Limit" } } }, "auth_ref": [] }, "prlb_PercentageOfTargetNumberCapableOfBeingAchievedDuringPerformancePeriodsUpperLimit": { "xbrltype": "percentItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "PercentageOfTargetNumberCapableOfBeingAchievedDuringPerformancePeriodsUpperLimit", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Percentage of target, capable of being achieved during performance periods, upper limit", "label": "Percentage Of Target Number, Capable Of Being Achieved During Performance Periods, Upper Limit", "documentation": "Percentage Of Target Number, Capable Of Being Achieved During Performance Periods, Upper Limit" } } }, "auth_ref": [] }, "prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit": { "xbrltype": "percentItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Percentage of target, capable of being earned and vesting, lower limit", "label": "Percentage Of Target Number, Capable Of Being Earned And Vesting, Lower Limit", "documentation": "The lower limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment." } } }, "auth_ref": [] }, "prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit": { "xbrltype": "percentItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Percentage of target, capable of being earned and vesting, upper limit", "label": "Percentage Of Target Number, Capable Of Being Earned And Vesting, Upper Limit", "documentation": "The upper limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment." } } }, "auth_ref": [] }, "us-gaap_PerformanceSharesMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PerformanceSharesMember", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Performance Stock Units", "label": "Performance Shares [Member]", "documentation": "Share-based payment arrangement awarded for meeting performance target." } } }, "auth_ref": [ "r1056", "r1057", "r1058", "r1059", "r1060", "r1061", "r1062", "r1063", "r1064", "r1065", "r1066", "r1068", "r1069", "r1070", "r1071", "r1072", "r1073", "r1074", "r1075", "r1076", "r1077", "r1078", "r1079", "r1080", "r1081", "r1082" ] }, "us-gaap_PlanNameAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PlanNameAxis", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Plan Name [Axis]", "label": "Plan Name [Axis]", "documentation": "Information by plan name for share-based payment arrangement." } } }, "auth_ref": [ "r1056", "r1057", "r1058", "r1059", "r1060", "r1061", "r1062", "r1063", "r1064", "r1065", "r1066", "r1068", "r1069", "r1070", "r1071", "r1072", "r1073", "r1074", "r1075", "r1076", "r1077", "r1078", "r1079", "r1080", "r1081", "r1082" ] }, "us-gaap_PlanNameDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PlanNameDomain", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Plan Name [Domain]", "label": "Plan Name [Domain]", "documentation": "Plan name for share-based payment arrangement." } } }, "auth_ref": [ "r1056", "r1057", "r1058", "r1059", "r1060", "r1061", "r1062", "r1063", "r1064", "r1065", "r1066", "r1068", "r1069", "r1070", "r1071", "r1072", "r1073", "r1074", "r1075", "r1076", "r1077", "r1078", "r1079", "r1080", "r1081", "r1082" ] }, "ecd_PnsnAdjsPrrSvcCstMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "PnsnAdjsPrrSvcCstMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Pension Adjustments Prior Service Cost", "label": "Pension Adjustments Prior Service Cost [Member]" } } }, "auth_ref": [ "r889" ] }, "ecd_PnsnAdjsSvcCstMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "PnsnAdjsSvcCstMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Pension Adjustments Service Cost", "label": "Pension Adjustments Service Cost [Member]" } } }, "auth_ref": [ "r933" ] }, "ecd_PnsnBnftsAdjFnTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "PnsnBnftsAdjFnTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Pension Benefits Adjustments, Footnote", "label": "Pension Benefits Adjustments, Footnote [Text Block]" } } }, "auth_ref": [ "r888" ] }, "us-gaap_PreferredStockParOrStatedValuePerShare": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PreferredStockParOrStatedValuePerShare", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Preferred stock, par value (in dollars per share)", "label": "Preferred Stock, Par or Stated Value Per Share", "documentation": "Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer." } } }, "auth_ref": [ "r34", "r305" ] }, "us-gaap_PreferredStockSharesAuthorized": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PreferredStockSharesAuthorized", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Preferred stock, authorized (in shares)", "label": "Preferred Stock, Shares Authorized", "documentation": "The maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws." } } }, "auth_ref": [ "r34", "r658" ] }, "us-gaap_PreferredStockSharesIssued": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PreferredStockSharesIssued", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Preferred stock, issued (in shares)", "label": "Preferred Stock, Shares Issued", "documentation": "Number of shares issued for nonredeemable preferred shares and preferred shares redeemable solely at option of issuer. Includes, but is not limited to, preferred shares issued, repurchased, and held as treasury shares. Excludes preferred shares classified as debt." } } }, "auth_ref": [ "r34", "r305" ] }, "us-gaap_PreferredStockSharesOutstanding": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PreferredStockSharesOutstanding", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "lang": { "en-us": { "role": { "terseLabel": "Preferred stock, outstanding (in shares)", "label": "Preferred Stock, Shares Outstanding", "documentation": "Aggregate share number for all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by stockholders. Does not include preferred shares that have been repurchased." } } }, "auth_ref": [ "r34", "r658", "r676", "r1145", "r1146" ] }, "us-gaap_PreferredStockValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PreferredStockValue", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 5.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of each of June\u00a030, 2025, and December\u00a031, 2024", "label": "Preferred Stock, Value, Issued", "documentation": "Aggregate par or stated value of issued nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable preferred shares, par value and other disclosure concepts are in another section within stockholders' equity." } } }, "auth_ref": [ "r34", "r297", "r302", "r595", "r819" ] }, "us-gaap_PrepaidExpenseAndOtherAssetsCurrent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PrepaidExpenseAndOtherAssetsCurrent", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Prepaid expenses and other current assets", "label": "Prepaid Expense and Other Assets, Current", "documentation": "Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer." } } }, "auth_ref": [ "r948" ] }, "us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Proceeds from issuance of common stock from equity plans", "label": "Proceeds, Issuance of Shares, Share-Based Payment Arrangement, Including Option Exercised", "documentation": "Amount of cash inflow from issuance of shares under share-based payment arrangement. Includes, but is not limited to, option exercised." } } }, "auth_ref": [ "r3", "r14" ] }, "us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Proceeds from call redemptions and maturities of marketable securities", "label": "Proceeds from Maturities, Prepayments and Calls of Debt Securities, Available-for-Sale", "documentation": "Amount of cash inflow from maturity, prepayment and call of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)." } } }, "auth_ref": [ "r121", "r122", "r1014" ] }, "us-gaap_ProceedsFromSaleOfProductiveAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ProceedsFromSaleOfProductiveAssets", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Proceeds from sales of property, equipment and other capital assets", "label": "Proceeds from Sale of Productive Assets", "documentation": "The cash inflow from the sale of property, plant and equipment (capital expenditures), software, and other intangible assets." } } }, "auth_ref": [ "r57" ] }, "srt_ProductOrServiceAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/srt/2025", "localname": "ProductOrServiceAxis", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDisaggregationofRevenueDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Product and Service [Axis]", "label": "Product and Service [Axis]" } } }, "auth_ref": [ "r197", "r541", "r620", "r621", "r622", "r623", "r624", "r625", "r626", "r724", "r730", "r733", "r735", "r759", "r760", "r829", "r830", "r831", "r834", "r838", "r935", "r952", "r953", "r954", "r955", "r956", "r957", "r958", "r959", "r960", "r961", "r962", "r963", "r964", "r965", "r966", "r967", "r968", "r969", "r970", "r971", "r972", "r973", "r974", "r975", "r976", "r977", "r978", "r979", "r980", "r981", "r982", "r983", "r984", "r985", "r986", "r987", "r988", "r990", "r991", "r992", "r993", "r1048", "r1049", "r1113", "r1114", "r1115", "r1116", "r1117", "r1118", "r1119", "r1120", "r1121", "r1122", "r1123", "r1124", "r1125", "r1126", "r1127", "r1128", "r1129", "r1130", "r1131", "r1132", "r1133", "r1134", "r1135", "r1136", "r1137", "r1138", "r1139", "r1141", "r1142" ] }, "srt_ProductsAndServicesDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2025", "localname": "ProductsAndServicesDomain", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDisaggregationofRevenueDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Product and Service [Domain]", "label": "Product and Service [Domain]" } } }, "auth_ref": [ "r197", "r541", "r620", "r621", "r622", "r623", "r624", "r625", "r626", "r724", "r730", "r733", "r735", "r759", "r760", "r829", "r830", "r831", "r834", "r838", "r935", "r952", "r953", "r954", "r955", "r956", "r957", "r958", "r959", "r960", "r961", "r962", "r963", "r964", "r965", "r966", "r967", "r968", "r969", "r970", "r971", "r972", "r973", "r974", "r975", "r976", "r977", "r978", "r979", "r980", "r981", "r982", "r983", "r984", "r985", "r986", "r987", "r988", "r990", "r991", "r992", "r993", "r1048", "r1049", "r1113", "r1114", "r1115", "r1116", "r1117", "r1118", "r1119", "r1120", "r1121", "r1122", "r1123", "r1124", "r1125", "r1126", "r1127", "r1128", "r1129", "r1130", "r1131", "r1132", "r1133", "r1134", "r1135", "r1136", "r1137", "r1138", "r1139", "r1141", "r1142" ] }, "us-gaap_PropertyPlantAndEquipmentNet": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "PropertyPlantAndEquipmentNet", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_Assets", "weight": 1.0, "order": 4.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets", "http://www.protolabs.com/role/SegmentReportingScheduleofLongLivedAssetsbyGeographicAreasDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Property and equipment, net", "verboseLabel": "Total Long-lived Assets", "label": "Property, Plant and Equipment, Net", "documentation": "Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures." } } }, "auth_ref": [ "r9", "r507", "r589", "r600", "r819" ] }, "ecd_PvpTable": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "PvpTable", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Pay vs Performance Disclosure", "label": "Pay vs Performance Disclosure [Table]" } } }, "auth_ref": [ "r886" ] }, "ecd_PvpTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "PvpTableTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Pay vs Performance Disclosure, Table", "label": "Pay vs Performance [Table Text Block]" } } }, "auth_ref": [ "r886" ] }, "srt_RangeAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/srt/2025", "localname": "RangeAxis", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails", "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Statistical Measurement [Axis]", "label": "Statistical Measurement [Axis]" } } }, "auth_ref": [ "r167", "r279", "r280", "r281", "r282", "r311", "r321", "r351", "r352", "r353", "r359", "r363", "r470", "r515", "r524", "r540", "r627", "r628", "r635", "r649", "r650", "r697", "r699", "r701", "r702", "r704", "r706", "r707", "r709", "r710", "r720", "r721", "r751", "r758", "r769", "r774", "r777", "r778", "r811", "r812", "r816", "r817", "r830", "r841", "r1046", "r1052", "r1095", "r1106", "r1107", "r1108", "r1109", "r1110" ] }, "srt_RangeMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2025", "localname": "RangeMember", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails", "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Statistical Measurement [Domain]", "label": "Statistical Measurement [Domain]" } } }, "auth_ref": [ "r167", "r279", "r280", "r281", "r282", "r311", "r321", "r351", "r352", "r353", "r359", "r363", "r470", "r515", "r524", "r540", "r627", "r628", "r635", "r649", "r650", "r697", "r699", "r701", "r702", "r704", "r706", "r707", "r709", "r710", "r720", "r721", "r751", "r758", "r769", "r774", "r777", "r778", "r811", "r812", "r816", "r817", "r830", "r841", "r1046", "r1052", "r1095", "r1106", "r1107", "r1108", "r1109", "r1110" ] }, "us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails": { "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent", "weight": -1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Amounts reclassified from accumulated other comprehensive loss", "negatedLabel": "Amounts reclassified from accumulated other comprehensive loss", "label": "Reclassification from AOCI, Current Period, Net of Tax, Attributable to Parent", "documentation": "Amount after tax of reclassification adjustments of other comprehensive income (loss) attributable to parent." } } }, "auth_ref": [ "r15", "r18" ] }, "ecd_RecoveryOfErrCompDisclosureLineItems": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "RecoveryOfErrCompDisclosureLineItems", "lang": { "en-us": { "role": { "label": "Recovery of Erroneously Awarded Compensation Disclosure [Line Items]" } } }, "auth_ref": [ "r854", "r864", "r874", "r906" ] }, "us-gaap_RegulatedOperationsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "RegulatedOperationsAbstract", "lang": { "en-us": { "role": { "label": "Regulated Operations [Abstract]" } } }, "auth_ref": [] }, "us-gaap_ResearchAndDevelopmentExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ResearchAndDevelopmentExpense", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OperatingExpenses", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Research and development", "label": "Research and Development Expense", "documentation": "Amount of expense for research and development. Includes, but is not limited to, cost for computer software product to be sold, leased, or otherwise marketed and writeoff of research and development assets acquired in transaction other than business combination or joint venture formation or both. Excludes write-down of intangible asset acquired in business combination or from joint venture formation or both, used in research and development activity." } } }, "auth_ref": [ "r364", "r722", "r731", "r732", "r746", "r1111" ] }, "ecd_RestatementDateAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "RestatementDateAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Restatement Determination Date:", "label": "Restatement Determination Date [Axis]" } } }, "auth_ref": [ "r855", "r865", "r875", "r907" ] }, "ecd_RestatementDeterminationDate": { "xbrltype": "dateItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "RestatementDeterminationDate", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Restatement Determination Date", "label": "Restatement Determination Date" } } }, "auth_ref": [ "r856", "r866", "r876", "r908" ] }, "ecd_RestatementDoesNotRequireRecoveryTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "RestatementDoesNotRequireRecoveryTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Restatement does not require Recovery", "label": "Restatement Does Not Require Recovery [Text Block]" } } }, "auth_ref": [ "r863", "r873", "r883", "r915" ] }, "us-gaap_RestrictedStockUnitsRSUMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "RestrictedStockUnitsRSUMember", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Restricted Stock Units", "label": "Restricted Stock Units (RSUs) [Member]", "documentation": "Share instrument which is convertible to stock or an equivalent amount of cash, after a specified period of time or when specified performance conditions are met." } } }, "auth_ref": [ "r1056", "r1057", "r1058", "r1059", "r1060", "r1061", "r1062", "r1063", "r1064", "r1065", "r1066", "r1068", "r1069", "r1070", "r1071", "r1072", "r1073", "r1074", "r1075", "r1076", "r1077", "r1078", "r1079", "r1080", "r1081", "r1082" ] }, "us-gaap_RetainedEarningsAccumulatedDeficit": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "RetainedEarningsAccumulatedDeficit", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0, "order": 3.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Retained earnings", "label": "Retained Earnings (Accumulated Deficit)", "documentation": "Amount of accumulated undistributed earnings (deficit)." } } }, "auth_ref": [ "r37", "r67", "r598", "r632", "r634", "r641", "r659", "r819" ] }, "us-gaap_RetainedEarningsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "RetainedEarningsMember", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Retained Earnings", "label": "Retained Earnings [Member]", "documentation": "Accumulated undistributed earnings (deficit)." } } }, "auth_ref": [ "r85", "r86", "r87", "r133", "r134", "r135", "r137", "r144", "r146", "r148", "r237", "r238", "r275", "r294", "r360", "r377", "r378", "r385", "r386", "r387", "r389", "r443", "r444", "r451", "r453", "r454", "r456", "r462", "r501", "r502", "r629", "r631", "r643", "r1145" ] }, "us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "RevenueFromContractWithCustomerIncludingAssessedTax", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_GrossProfit", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.protolabs.com/role/SegmentReportingScheduleofDisaggregationofRevenueDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofReportableSegmentsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Revenue", "verboseLabel": "Total Revenue", "label": "Revenue from Contract with Customer, Including Assessed Tax", "documentation": "Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise." } } }, "auth_ref": [ "r78", "r79", "r164", "r173", "r174", "r188", "r194", "r197", "r199", "r201", "r308", "r309", "r310", "r541" ] }, "us-gaap_RevenuesAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "RevenuesAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Statements of Operations:", "label": "Revenues [Abstract]" } } }, "auth_ref": [] }, "ecd_Rule10b51ArrAdoptedFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "Rule10b51ArrAdoptedFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Rule 10b5-1 Arrangement Adopted", "label": "Rule 10b5-1 Arrangement Adopted [Flag]" } } }, "auth_ref": [ "r924" ] }, "ecd_Rule10b51ArrTrmntdFlag": { "xbrltype": "booleanItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "Rule10b51ArrTrmntdFlag", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Rule 10b5-1 Arrangement Terminated", "label": "Rule 10b5-1 Arrangement Terminated [Flag]" } } }, "auth_ref": [ "r924" ] }, "us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetByMajorClassTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfAcquiredFiniteLivedIntangibleAssetByMajorClassTable", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails", "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Acquired Finite-Lived Intangible Asset by Major Class [Table]", "label": "Schedule of Acquired Finite-Lived Intangible Asset by Major Class [Table]", "documentation": "Disclosure of information about acquired finite-lived intangible asset by major class." } } }, "auth_ref": [ "r264", "r265", "r266", "r268", "r637", "r722" ] }, "us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfAvailableForSaleSecuritiesLineItems", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Debt Securities, Available-for-Sale [Line Items]", "label": "Debt Securities, Available-for-Sale [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r205", "r206", "r207", "r208", "r209", "r210", "r211", "r212", "r213", "r214", "r215", "r216" ] }, "us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfComprehensiveIncomeLossTableTextBlock", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Comprehensive Income (Loss)", "label": "Comprehensive Income (Loss) [Table Text Block]", "documentation": "Tabular disclosure of components of comprehensive income (loss). Includes, but is not limited to, foreign currency translation adjustments, foreign currency transactions designated as economic hedges of a net investment in foreign entity, gain (loss) and prior service cost (credit) for pension plans and other postretirement benefit plans." } } }, "auth_ref": [ "r45" ] }, "us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock", "presentation": [ "http://www.protolabs.com/role/NetIncomeperCommonShareTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Earnings Per Share, Basic and Diluted", "label": "Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]", "documentation": "Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations." } } }, "auth_ref": [ "r1004" ] }, "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Finite-Lived Intangible Assets", "label": "Schedule of Finite-Lived Intangible Assets [Table Text Block]", "documentation": "Tabular disclosure of assets, excluding financial assets and goodwill, lacking physical substance with a finite life, by either major class or business segment." } } }, "auth_ref": [ "r726", "r1041" ] }, "us-gaap_ScheduleOfInventoryCurrentTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfInventoryCurrentTableTextBlock", "presentation": [ "http://www.protolabs.com/role/InventoryTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Inventory, Current", "label": "Schedule of Inventory, Current [Table Text Block]", "documentation": "Tabular disclosure of the carrying amount as of the balance sheet date of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process." } } }, "auth_ref": [ "r8", "r41", "r42", "r43" ] }, "us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Nonvested Performance-Based Units Activity", "label": "Schedule of Nonvested Performance-Based Units Activity [Table Text Block]", "documentation": "Tabular disclosure of the changes in outstanding nonvested performance-based units." } } }, "auth_ref": [ "r69" ] }, "us-gaap_ScheduleOfSegmentReportingInformationBySegmentTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfSegmentReportingInformationBySegmentTable", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDepreciationandAmortizationDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofDisaggregationofRevenueDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofExpendituresForAdditionsToLongLivedAssetsDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofReportableSegmentsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Segment Reporting Information, by Segment [Table]", "label": "Schedule of Segment Reporting Information, by Segment [Table]", "documentation": "Disclosure of information about profit (loss) and total assets by reportable segment." } } }, "auth_ref": [ "r22", "r23", "r24" ] }, "us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfSegmentReportingInformationBySegmentTextBlock", "presentation": [ "http://www.protolabs.com/role/SegmentReportingTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Segment Reporting Information, by Segment", "label": "Schedule of Segment Reporting Information, by Segment [Table Text Block]", "documentation": "Tabular disclosure of the profit or loss and total assets for each reportable segment. An entity discloses certain information on each reportable segment if the amounts (a) are included in the measure of segment profit or loss reviewed by the chief operating decision maker or (b) are otherwise regularly provided to the chief operating decision maker, even if not included in that measure of segment profit or loss." } } }, "auth_ref": [ "r22", "r23", "r24" ] }, "us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table]", "label": "Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table]", "documentation": "Disclosure of information about share-based payment arrangement." } } }, "auth_ref": [ "r323", "r325", "r328", "r329", "r330", "r331", "r332", "r333", "r334", "r335", "r336", "r337", "r338", "r339", "r340", "r341", "r342", "r343", "r344", "r345", "r346", "r347", "r348", "r349", "r350", "r351", "r352", "r353", "r354", "r359" ] }, "us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Share-Based Payment Arrangement, Option, Activity", "label": "Share-Based Payment Arrangement, Option, Activity [Table Text Block]", "documentation": "Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value." } } }, "auth_ref": [ "r12", "r13", "r68" ] }, "us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Share-Based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions", "label": "Schedule of Share-Based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block]", "documentation": "Tabular disclosure of the significant assumptions used during the year to estimate the fair value of employee stock purchase plans, including, but not limited to: (a) expected term, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions." } } }, "auth_ref": [ "r70", "r1084" ] }, "us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions", "label": "Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]", "documentation": "Tabular disclosure of the significant assumptions used during the year to estimate the fair value of stock options, including, but not limited to: (a) expected term of share options and similar instruments, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions." } } }, "auth_ref": [ "r70" ] }, "us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity", "label": "Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]", "documentation": "Disclosure of the number and weighted-average grant date fair value for restricted stock and restricted stock units that were outstanding at the beginning and end of the year, and the number of restricted stock and restricted stock units that were granted, vested, or forfeited during the year." } } }, "auth_ref": [ "r1067" ] }, "prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Share-based Payment Award, Awards Other Than Stock Options, Valuation Assumptions", "label": "Schedule of Share-based Payment Award, Awards Other Than Stock Options, Valuation Assumptions [Table Text Block]", "documentation": "Tabular disclosure of the valuation assumptions of share-based payment awards other than stock options." } } }, "auth_ref": [] }, "us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsTables" ], "lang": { "en-us": { "role": { "terseLabel": "Schedule of Finite-Lived Intangible Assets, Future Amortization Expense", "label": "Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]", "documentation": "Tabular disclosure of the amount of amortization expense expected to be recorded in succeeding fiscal years for finite-lived intangible assets." } } }, "auth_ref": [ "r726", "r1043" ] }, "dei_Security12bTitle": { "xbrltype": "securityTitleItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "Security12bTitle", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Title of 12(b) Security", "label": "Title of 12(b) Security", "documentation": "Title of a 12(b) registered security." } } }, "auth_ref": [ "r849" ] }, "dei_SecurityExchangeName": { "xbrltype": "edgarExchangeCodeItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "SecurityExchangeName", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Security Exchange Name", "label": "Security Exchange Name", "documentation": "Name of the Exchange on which a security is registered." } } }, "auth_ref": [ "r851" ] }, "us-gaap_SegmentDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "SegmentDomain", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDepreciationandAmortizationDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofReportableSegmentsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Segments [Domain]", "label": "Segments [Domain]", "documentation": "Components of an entity that engage in business activities from which they may earn revenue and incur expenses, including transactions with other components of the same entity." } } }, "auth_ref": [ "r78", "r79", "r80", "r81", "r164", "r169", "r172", "r173", "r174", "r175", "r176", "r177", "r178", "r179", "r180", "r181", "r182", "r183", "r185", "r186", "r187", "r188", "r189", "r190", "r191", "r192", "r194", "r195", "r196", "r201", "r252", "r253", "r254", "r255", "r256", "r257", "r258", "r259", "r260", "r274", "r277", "r278", "r436", "r439", "r609", "r610", "r611", "r612", "r613", "r614", "r615", "r616", "r617", "r618", "r619", "r743", "r746", "r747", "r753", "r833", "r1113", "r1114", "r1115", "r1116", "r1117", "r1118", "r1119", "r1120", "r1121", "r1122", "r1123", "r1124", "r1125", "r1126", "r1127", "r1128", "r1129", "r1130", "r1131", "r1132", "r1133", "r1134", "r1135", "r1136", "r1137", "r1138", "r1139", "r1141", "r1142" ] }, "us-gaap_SegmentExpenditureAdditionToLongLivedAssets": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "SegmentExpenditureAdditionToLongLivedAssets", "crdr": "debit", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofExpendituresForAdditionsToLongLivedAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Total expenditures for additions to long-lived assets", "label": "Segment, Expenditure, Addition to Long-Lived Assets", "documentation": "Amount of expenditure for addition to long-lived assets included in determination of segment assets by chief operating decision maker (CODM) or otherwise regularly provided to CODM. Excludes expenditure for addition to financial instrument, long-term customer relationship of financial institution, mortgage and other servicing rights, deferred policy acquisition cost, and deferred tax assets." } } }, "auth_ref": [ "r164", "r183", "r194", "r746", "r747" ] }, "srt_SegmentGeographicalDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/srt/2025", "localname": "SegmentGeographicalDomain", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofExpendituresForAdditionsToLongLivedAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Geographical [Domain]", "label": "Geographical [Domain]" } } }, "auth_ref": [ "r166", "r199", "r200", "r544", "r545", "r546", "r547", "r548", "r549", "r550", "r551", "r552", "r553", "r554", "r555", "r556", "r557", "r558", "r559", "r560", "r561", "r562", "r563", "r564", "r565", "r566", "r567", "r568", "r569", "r570", "r571", "r572", "r573", "r574", "r575", "r576", "r577", "r583", "r584", "r585", "r586", "r646", "r647", "r648", "r698", "r700", "r703", "r705", "r706", "r708", "r709", "r710", "r711", "r712", "r713", "r714", "r715", "r716", "r717", "r718", "r719", "r725", "r739", "r759", "r761", "r821", "r822", "r823", "r824", "r825", "r826", "r827", "r828", "r832", "r841", "r1113", "r1114", "r1115", "r1117", "r1118", "r1119", "r1120", "r1121", "r1122", "r1123", "r1124", "r1125", "r1126", "r1127", "r1128", "r1129", "r1130", "r1131", "r1132", "r1133", "r1134", "r1135", "r1136", "r1137", "r1138", "r1139", "r1141", "r1142" ] }, "us-gaap_SegmentReportingAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "SegmentReportingAbstract", "lang": { "en-us": { "role": { "label": "Segment Reporting [Abstract]" } } }, "auth_ref": [] }, "us-gaap_SegmentReportingDisclosureTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "SegmentReportingDisclosureTextBlock", "presentation": [ "http://www.protolabs.com/role/SegmentReporting" ], "lang": { "en-us": { "role": { "terseLabel": "Segment Reporting", "label": "Segment Reporting Disclosure [Text Block]", "documentation": "The entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments." } } }, "auth_ref": [ "r81", "r164", "r168", "r169", "r170", "r171", "r172", "r184", "r186", "r187", "r192", "r193", "r194", "r195", "r196", "r197", "r198", "r201", "r742", "r744", "r745", "r746", "r748", "r749", "r750" ] }, "us-gaap_SegmentReportingInformationLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "SegmentReportingInformationLineItems", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDepreciationandAmortizationDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofDisaggregationofRevenueDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofExpendituresForAdditionsToLongLivedAssetsDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofReportableSegmentsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Segment Reporting Information [Line Items]", "label": "Segment Reporting Information [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [] }, "us-gaap_SegmentReportingOtherItemAmount": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "SegmentReportingOtherItemAmount", "crdr": "debit", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofReportableSegmentsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Segment expenses", "label": "Segment Reporting, Other Segment Item, Amount", "documentation": "Amount of other expense (income) and loss (gain) calculated as difference between segment revenue and separately disclosed expense category to arrive at segment profit (loss)." } } }, "auth_ref": [ "r164", "r186", "r187", "r194", "r746" ] }, "us-gaap_SellingAndMarketingExpense": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "SellingAndMarketingExpense", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome": { "parentTag": "us-gaap_OperatingExpenses", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Marketing and sales", "label": "Selling and Marketing Expense", "documentation": "The aggregate total amount of expenses directly related to the marketing or selling of products or services." } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensation": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensation", "crdr": "debit", "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows": { "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0, "order": 7.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlows" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-based compensation expense", "label": "Share-Based Payment Arrangement, Noncash Expense", "documentation": "Amount of noncash expense for share-based payment arrangement." } } }, "auth_ref": [ "r5" ] }, "prlb_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardPerformancePeriod": { "xbrltype": "durationItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardPerformancePeriod", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Award performance period (in years)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Award Performance Period", "documentation": "Share-Based Compensation Arrangement by Share-Based Payment Award, Award Performance Period" } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-based award, vesting period (in years)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Award Vesting Period", "documentation": "Period over which grantee's right to exercise award under share-based payment arrangement is no longer contingent on satisfaction of service or performance condition, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, combination of market, performance or service condition." } } }, "auth_ref": [ "r770" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Discount from market price (in percent)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Discount from Market Price, Offering Date", "documentation": "Discount rate from fair value on offering date that participants pay for shares." } } }, "auth_ref": [ "r25" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Forfeited (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeited in Period", "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period." } } }, "auth_ref": [ "r344" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Forfeited (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeitures, Weighted Average Grant Date Fair Value", "documentation": "Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised or put into effect as a result of the occurrence of a terminating event." } } }, "auth_ref": [ "r344" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Granted (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period", "documentation": "The number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan)." } } }, "auth_ref": [ "r342" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Granted (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value", "documentation": "The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan)." } } }, "auth_ref": [ "r342" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "periodStartLabel": "Beginning balance (in shares)", "periodEndLabel": "Ending balance (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Number", "documentation": "The number of non-vested equity-based payment instruments, excluding stock (or unit) options, that validly exist and are outstanding as of the balance sheet date." } } }, "auth_ref": [ "r339", "r340" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "periodStartLabel": "Beginning balance (in dollars per share)", "periodEndLabel": "Ending balance (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value", "documentation": "Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options." } } }, "auth_ref": [ "r339", "r340" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Weighted- Average Grant Date Fair Value Per Share", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value [Abstract]" } } }, "auth_ref": [] }, "prlb_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange": { "xbrltype": "sharesItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Performance change (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Performance Change", "documentation": "Represents the amount of shares related to a performance change related to equity instruments other than option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan)." } } }, "auth_ref": [] }, "prlb_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue": { "xbrltype": "perShareItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Performance change (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Performance Change, Weighted Average Grant Date Fair Value", "documentation": "Represents the weighted average grant date fair value per share in connection to a performance change related to equity instruments other than options." } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Restrictions lapsed (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period", "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period." } } }, "auth_ref": [ "r343" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Restrictions lapsed (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period, Weighted Average Grant Date Fair Value", "documentation": "The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement." } } }, "auth_ref": [ "r343" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Expected dividend yield", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Dividend Rate", "documentation": "The estimated dividend rate (a percentage of the share price) to be paid (expected dividends) to holders of the underlying shares over the option's term." } } }, "auth_ref": [ "r352" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Expected volatility", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Volatility Rate", "documentation": "The estimated measure of the percentage by which a share price is expected to fluctuate during a period. Volatility also may be defined as a probability-weighted measure of the dispersion of returns about the mean. The volatility of a share price is the standard deviation of the continuously compounded rates of return on the share over a specified period. That is the same as the standard deviation of the differences in the natural logarithms of the stock prices plus dividends, if any, over the period." } } }, "auth_ref": [ "r351" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Risk-free interest rate", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Risk Free Interest Rate", "documentation": "The risk-free interest rate assumption that is used in valuing an option on its own shares." } } }, "auth_ref": [ "r353" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r323", "r325", "r328", "r329", "r330", "r331", "r332", "r333", "r334", "r335", "r336", "r337", "r338", "r339", "r340", "r341", "r342", "r343", "r344", "r345", "r346", "r347", "r348", "r349", "r350", "r351", "r352", "r353", "r354", "r359" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingRollForward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingRollForward", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Performance Stock Units", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Non-Option Equity Instruments, Outstanding [Roll Forward]", "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period." } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfAdditionalSharesAuthorized", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Number of shares available for issuance pursuant to awards (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Number of Additional Shares Authorized", "documentation": "Number of additional shares authorized for issuance under share-based payment arrangement." } } }, "auth_ref": [ "r1083" ] }, "prlb_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfPerformancePeriod": { "xbrltype": "integerItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfPerformancePeriod", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Number of performance periods", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Number Of Performance Period", "documentation": "Share-Based Compensation Arrangement by Share-Based Payment Award, Number Of Performance Period" } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Option exercisable (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Number", "documentation": "The number of shares into which fully or partially vested stock options outstanding as of the balance sheet date can be currently converted under the option plan." } } }, "auth_ref": [ "r333" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Options exercisable, weighted-average exercise price (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Weighted Average Exercise Price", "documentation": "The weighted-average price as of the balance sheet date at which grantees can acquire the shares reserved for issuance on vested portions of options outstanding and currently exercisable under the stock option plan." } } }, "auth_ref": [ "r333" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Expired (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Expirations in Period", "documentation": "Number of options or other stock instruments for which the right to exercise has lapsed under the terms of the plan agreements." } } }, "auth_ref": [ "r338" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Forfeited (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures in Period", "documentation": "The number of shares under options that were cancelled during the reporting period as a result of occurrence of a terminating event specified in contractual agreements pertaining to the stock option plan." } } }, "auth_ref": [ "r337" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Granted (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Gross", "documentation": "Gross number of share options (or share units) granted during the period." } } }, "auth_ref": [ "r335" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-based award, weighted-average grant date fair value (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value", "documentation": "The weighted average grant-date fair value of options granted during the reporting period as calculated by applying the disclosed option pricing methodology." } } }, "auth_ref": [ "r345" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "periodStartLabel": "Options outstanding, beginning balance (in shares)", "periodEndLabel": "Options outstanding, ending balance (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number", "documentation": "Number of options outstanding, including both vested and non-vested options." } } }, "auth_ref": [ "r331", "r332" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Stock Options", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding [Roll Forward]", "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period." } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "periodStartLabel": "Options outstanding, beginning balance (in dollars per share)", "periodEndLabel": "Options outstanding, ending balance (in dollars per share)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price", "documentation": "Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan." } } }, "auth_ref": [ "r331", "r332" ] }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Weighted- Average Exercise Price", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract]" } } }, "auth_ref": [] }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Award Type [Domain]", "label": "Award Type [Domain]", "documentation": "Award under share-based payment arrangement." } } }, "auth_ref": [ "r328", "r329", "r330", "r331", "r332", "r333", "r334", "r335", "r336", "r337", "r338", "r339", "r340", "r341", "r342", "r343", "r344", "r345", "r346", "r347", "r348", "r350", "r351", "r352", "r353", "r354" ] }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Exercised (in dollars per share)", "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price", "documentation": "Weighted average price at which option holders acquired shares when converting their stock options into shares." } } }, "auth_ref": [ "r336" ] }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Expired (in dollars per share)", "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Expirations in Period, Weighted Average Exercise Price", "documentation": "Weighted average price at which grantees could have acquired the underlying shares with respect to stock options of the plan that expired." } } }, "auth_ref": [ "r338" ] }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Forfeited (in dollars per share)", "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price", "documentation": "Weighted average price at which grantees could have acquired the underlying shares with respect to stock options that were terminated." } } }, "auth_ref": [ "r337" ] }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice": { "xbrltype": "perShareItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Granted (in dollars per share)", "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Grants in Period, Weighted Average Exercise Price", "documentation": "Weighted average per share amount at which grantees can acquire shares of common stock by exercise of options." } } }, "auth_ref": [ "r335" ] }, "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Stock-based award, term (in years)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Expiration Period", "documentation": "Period from grant date that an equity-based award expires, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r771" ] }, "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1": { "xbrltype": "durationItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Expected life (years)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Term", "documentation": "Expected term of award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days." } } }, "auth_ref": [ "r350" ] }, "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent": { "xbrltype": "percentItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Purchase price of common stock (in percent)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Purchase Price of Common Stock, Percent", "documentation": "Purchase price of common stock expressed as a percentage of its fair value." } } }, "auth_ref": [ "r1083" ] }, "prlb_SheetMetalMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "SheetMetalMember", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDisaggregationofRevenueDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Sheet Metal", "label": "Sheet Metal [Member]", "documentation": "Represents the information pertaining to sheet metal." } } }, "auth_ref": [] }, "us-gaap_SignificantAccountingPoliciesTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "SignificantAccountingPoliciesTextBlock", "presentation": [ "http://www.protolabs.com/role/RecentAccountingPronouncements" ], "lang": { "en-us": { "role": { "terseLabel": "Recent Accounting Pronouncements", "label": "Significant Accounting Policies [Text Block]", "documentation": "The entire disclosure for all significant accounting policies of the reporting entity." } } }, "auth_ref": [ "r126", "r127" ] }, "prlb_SoftwarePlatformMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "SoftwarePlatformMember", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Software platform", "label": "Software Platform [Member]", "documentation": "Information pertaining to software platform." } } }, "auth_ref": [] }, "us-gaap_StatementBusinessSegmentsAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StatementBusinessSegmentsAxis", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDepreciationandAmortizationDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofReportableSegmentsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Segments [Axis]", "label": "Segments [Axis]", "documentation": "Information by business segments." } } }, "auth_ref": [ "r78", "r79", "r80", "r81", "r91", "r164", "r169", "r172", "r173", "r174", "r175", "r176", "r177", "r178", "r179", "r180", "r181", "r182", "r183", "r185", "r186", "r187", "r188", "r189", "r190", "r191", "r192", "r194", "r195", "r196", "r201", "r252", "r253", "r254", "r255", "r256", "r257", "r258", "r259", "r260", "r274", "r276", "r277", "r278", "r436", "r439", "r609", "r610", "r611", "r612", "r613", "r614", "r615", "r616", "r617", "r618", "r619", "r743", "r746", "r747", "r753", "r833", "r1113", "r1114", "r1115", "r1116", "r1117", "r1118", "r1119", "r1120", "r1121", "r1122", "r1123", "r1124", "r1125", "r1126", "r1127", "r1128", "r1129", "r1130", "r1131", "r1132", "r1133", "r1134", "r1135", "r1136", "r1137", "r1138", "r1139", "r1141", "r1142" ] }, "us-gaap_StatementEquityComponentsAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StatementEquityComponentsAxis", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Equity Components [Axis]", "label": "Equity Components [Axis]", "documentation": "Information by component of equity." } } }, "auth_ref": [ "r11", "r35", "r38", "r39", "r85", "r86", "r87", "r113", "r114", "r115", "r133", "r134", "r135", "r137", "r144", "r146", "r148", "r165", "r237", "r238", "r275", "r294", "r307", "r360", "r377", "r378", "r385", "r386", "r387", "r389", "r443", "r444", "r451", "r452", "r453", "r454", "r455", "r456", "r457", "r458", "r459", "r460", "r462", "r495", "r496", "r497", "r498", "r499", "r500", "r501", "r502", "r508", "r603", "r629", "r630", "r631", "r643", "r694" ] }, "srt_StatementGeographicalAxis": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/srt/2025", "localname": "StatementGeographicalAxis", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofExpendituresForAdditionsToLongLivedAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Geographical [Axis]", "label": "Geographical [Axis]" } } }, "auth_ref": [ "r166", "r199", "r200", "r544", "r545", "r546", "r547", "r548", "r549", "r550", "r551", "r552", "r553", "r554", "r555", "r556", "r557", "r558", "r559", "r560", "r561", "r562", "r563", "r564", "r565", "r566", "r567", "r568", "r569", "r570", "r571", "r572", "r573", "r574", "r575", "r576", "r577", "r583", "r584", "r585", "r586", "r646", "r647", "r648", "r698", "r700", "r703", "r705", "r706", "r708", "r709", "r710", "r711", "r712", "r713", "r714", "r715", "r716", "r717", "r718", "r719", "r725", "r739", "r759", "r761", "r821", "r822", "r823", "r824", "r825", "r826", "r827", "r828", "r832", "r841", "r1113", "r1114", "r1115", "r1117", "r1118", "r1119", "r1120", "r1121", "r1122", "r1123", "r1124", "r1125", "r1126", "r1127", "r1128", "r1129", "r1130", "r1131", "r1132", "r1133", "r1134", "r1135", "r1136", "r1137", "r1138", "r1139", "r1141", "r1142" ] }, "us-gaap_StatementLineItems": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StatementLineItems", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Statement [Line Items]", "label": "Statement [Line Items]", "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table." } } }, "auth_ref": [ "r133", "r134", "r135", "r165", "r296", "r297", "r299", "r301", "r502", "r541", "r640", "r644", "r645", "r651", "r652", "r653", "r654", "r655", "r656", "r658", "r661", "r662", "r663", "r664", "r665", "r666", "r667", "r668", "r669", "r671", "r672", "r673", "r674", "r675", "r678", "r679", "r680", "r681", "r682", "r683", "r684", "r685", "r686", "r687", "r688", "r689", "r690", "r691", "r694", "r733", "r735", "r842", "r1144" ] }, "us-gaap_StatementOfCashFlowsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StatementOfCashFlowsAbstract", "lang": { "en-us": { "role": { "terseLabel": "Statement of Cash Flows [Abstract]", "label": "Statement of Cash Flows [Abstract]" } } }, "auth_ref": [] }, "us-gaap_StatementOfFinancialPositionAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StatementOfFinancialPositionAbstract", "lang": { "en-us": { "role": { "terseLabel": "Statement of Financial Position [Abstract]", "label": "Statement of Financial Position [Abstract]" } } }, "auth_ref": [] }, "us-gaap_StatementOfStockholdersEquityAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StatementOfStockholdersEquityAbstract", "lang": { "en-us": { "role": { "terseLabel": "Statement of Stockholders' Equity [Abstract]", "label": "Statement of Stockholders' Equity [Abstract]" } } }, "auth_ref": [] }, "us-gaap_StatementTable": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StatementTable", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Statement [Table]", "label": "Statement [Table]", "documentation": "Presentation of information about comprehensive income, income, other comprehensive income, financial position, cash flows, and shareholders' equity." } } }, "auth_ref": [ "r133", "r134", "r135", "r165", "r202", "r296", "r297", "r299", "r301", "r502", "r541", "r640", "r644", "r645", "r651", "r652", "r653", "r654", "r655", "r656", "r658", "r661", "r662", "r663", "r664", "r665", "r666", "r667", "r668", "r669", "r671", "r672", "r673", "r674", "r675", "r678", "r679", "r680", "r681", "r682", "r683", "r684", "r685", "r686", "r687", "r688", "r689", "r690", "r691", "r694", "r733", "r735", "r842", "r1144" ] }, "ecd_StkPrcOrTsrEstimationMethodTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "StkPrcOrTsrEstimationMethodTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Stock Price or TSR Estimation Method", "label": "Stock Price or TSR Estimation Method [Text Block]" } } }, "auth_ref": [ "r858", "r868", "r878", "r910" ] }, "us-gaap_StockAppreciationRightsSARSMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StockAppreciationRightsSARSMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Stock Appreciation Rights (SARs)", "label": "Stock Appreciation Rights (SARs) [Member]", "documentation": "Right to receive cash or shares equal to appreciation of predetermined number of grantor's shares during predetermined time period." } } }, "auth_ref": [ "r1056", "r1057", "r1058", "r1059", "r1060", "r1061", "r1062", "r1063", "r1064", "r1065", "r1066", "r1068", "r1069", "r1070", "r1071", "r1072", "r1073", "r1074", "r1075", "r1076", "r1077", "r1078", "r1079", "r1080", "r1081", "r1082" ] }, "us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StockIssuedDuringPeriodSharesShareBasedCompensation", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)", "label": "Shares Issued, Shares, Share-Based Payment Arrangement, after Forfeiture", "documentation": "Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP)." } } }, "auth_ref": [ "r11", "r34", "r35", "r67" ] }, "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StockIssuedDuringPeriodSharesStockOptionsExercised", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Exercised (in shares)", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period", "documentation": "Number of share options (or share units) exercised during the current period." } } }, "auth_ref": [ "r11", "r34", "r35", "r67", "r336" ] }, "us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StockIssuedDuringPeriodValueStockOptionsExercised", "crdr": "credit", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "terseLabel": "Common shares issued on exercise of options and other, net of shares withheld for tax obligations", "label": "Stock Issued During Period, Value, Stock Options Exercised", "documentation": "Value of stock issued as a result of the exercise of stock options." } } }, "auth_ref": [ "r11", "r35", "r38", "r39", "r67" ] }, "us-gaap_StockRepurchasedAndRetiredDuringPeriodShares": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StockRepurchasedAndRetiredDuringPeriodShares", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Repurchases of common stock (in shares)", "label": "Stock Repurchased and Retired During Period, Shares", "documentation": "Number of shares that have been repurchased and retired during the period." } } }, "auth_ref": [ "r11", "r34", "r35", "r67" ] }, "us-gaap_StockRepurchasedAndRetiredDuringPeriodValue": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StockRepurchasedAndRetiredDuringPeriodValue", "crdr": "debit", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "negatedTerseLabel": "Repurchases of common stock", "label": "Stock Repurchased and Retired During Period, Value", "documentation": "Equity impact of the value of stock that has been repurchased and retired during the period. The excess of the purchase price over par value can be charged against retained earnings (once the excess is fully allocated to additional paid in capital)." } } }, "auth_ref": [ "r11", "r34", "r35", "r67" ] }, "us-gaap_StockholdersEquity": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StockholdersEquity", "crdr": "credit", "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity", "weight": 1.0, "order": 2.0 } }, "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossDetails", "http://www.protolabs.com/role/ConsolidatedBalanceSheets", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "lang": { "en-us": { "role": { "totalLabel": "Total shareholders' equity", "periodStartLabel": "Beginning balance", "periodEndLabel": "Ending balance", "label": "Equity, Attributable to Parent", "documentation": "Amount of equity (deficit) attributable to parent. Excludes temporary equity and equity attributable to noncontrolling interest." } } }, "auth_ref": [ "r35", "r38", "r39", "r64", "r660", "r676", "r695", "r696", "r819", "r848", "r996", "r997", "r998", "r1030", "r1101", "r1145" ] }, "us-gaap_StockholdersEquityAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "StockholdersEquityAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "lang": { "en-us": { "role": { "terseLabel": "Shareholders' equity", "label": "Equity, Attributable to Parent [Abstract]" } } }, "auth_ref": [] }, "ecd_TabularListTableTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "TabularListTableTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Tabular List, Table", "label": "Tabular List [Table Text Block]" } } }, "auth_ref": [ "r904" ] }, "prlb_ThreeDPrintingFinelineMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "ThreeDPrintingFinelineMember", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDisaggregationofRevenueDetails" ], "lang": { "en-us": { "role": { "terseLabel": "3D Printing", "label": "3D Printing (Fineline) [Member]", "documentation": "Represents the 3D Printing (Fineline) product." } } }, "auth_ref": [] }, "ecd_TotalShareholderRtnAmt": { "xbrltype": "monetaryItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "TotalShareholderRtnAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Total Shareholder Return Amount", "label": "Total Shareholder Return Amount" } } }, "auth_ref": [ "r896" ] }, "ecd_TotalShareholderRtnVsPeerGroupTextBlock": { "xbrltype": "textBlockItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "TotalShareholderRtnVsPeerGroupTextBlock", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Total Shareholder Return Vs Peer Group", "label": "Total Shareholder Return Vs Peer Group [Text Block]" } } }, "auth_ref": [ "r903" ] }, "ecd_TradingArrAxis": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "TradingArrAxis", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Trading Arrangement:", "label": "Trading Arrangement [Axis]" } } }, "auth_ref": [ "r923" ] }, "ecd_TradingArrByIndTable": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "TradingArrByIndTable", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Trading Arrangements, by Individual", "label": "Trading Arrangements, by Individual [Table]" } } }, "auth_ref": [ "r925" ] }, "dei_TradingSymbol": { "xbrltype": "tradingSymbolItemType", "nsuri": "http://xbrl.sec.gov/dei/2025", "localname": "TradingSymbol", "presentation": [ "http://www.protolabs.com/role/Cover" ], "lang": { "en-us": { "role": { "terseLabel": "Trading Symbol", "label": "Trading Symbol", "documentation": "Trading symbol of an instrument as listed on an exchange." } } }, "auth_ref": [] }, "us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Financial Instruments [Domain]", "label": "Financial Instruments [Domain]", "documentation": "Instrument or contract that imposes a contractual obligation to deliver cash or another financial instrument or to exchange other financial instruments on potentially unfavorable terms and conveys a contractual right to receive cash or another financial instrument or to exchange other financial instruments on potentially favorable terms." } } }, "auth_ref": [ "r205", "r206", "r207", "r208", "r209", "r210", "r211", "r212", "r213", "r214", "r215", "r216", "r217", "r218", "r219", "r220", "r221", "r222", "r223", "r224", "r225", "r226", "r227", "r228", "r229", "r230", "r231", "r232", "r233", "r234", "r293", "r306", "r450", "r461", "r487", "r492", "r494", "r509", "r510", "r511", "r512", "r513", "r514", "r515", "r516", "r517", "r518", "r519", "r520", "r521", "r522", "r523", "r525", "r526", "r527", "r528", "r529", "r530", "r531", "r532", "r533", "r534", "r535", "r536", "r537", "r538", "r539", "r591", "r604", "r808", "r810", "r811", "r812", "r813", "r814", "r815", "r816", "r817", "r820", "r938", "r939", "r940", "r941", "r942", "r943", "r944", "r1026", "r1027", "r1028", "r1029", "r1091", "r1094", "r1095", "r1096", "r1097", "r1098", "r1099", "r1100" ] }, "ecd_TrdArrAdoptionDate": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "TrdArrAdoptionDate", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Adoption Date", "label": "Trading Arrangement Adoption Date" } } }, "auth_ref": [ "r926" ] }, "ecd_TrdArrDuration": { "xbrltype": "durationItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "TrdArrDuration", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Arrangement Duration", "label": "Trading Arrangement Duration" } } }, "auth_ref": [ "r927" ] }, "ecd_TrdArrExpirationDate": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "TrdArrExpirationDate", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Expiration Date", "label": "Trading Arrangement Expiration Date" } } }, "auth_ref": [ "r927" ] }, "ecd_TrdArrIndName": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "TrdArrIndName", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Name", "label": "Trading Arrangement, Individual Name" } } }, "auth_ref": [ "r925" ] }, "ecd_TrdArrIndTitle": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "TrdArrIndTitle", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Title", "label": "Trading Arrangement, Individual Title" } } }, "auth_ref": [ "r925" ] }, "ecd_TrdArrSecuritiesAggAvailAmt": { "xbrltype": "sharesItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "TrdArrSecuritiesAggAvailAmt", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Aggregate Available", "label": "Trading Arrangement, Securities Aggregate Available Amount" } } }, "auth_ref": [ "r928" ] }, "ecd_TrdArrTerminationDate": { "xbrltype": "stringItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "TrdArrTerminationDate", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "lang": { "en-us": { "role": { "terseLabel": "Termination Date", "label": "Trading Arrangement Termination Date" } } }, "auth_ref": [ "r926" ] }, "country_US": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/country/2025", "localname": "US", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofExpendituresForAdditionsToLongLivedAssetsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "United States", "label": "UNITED STATES" } } }, "auth_ref": [] }, "us-gaap_USGovernmentAgenciesDebtSecuritiesMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "USGovernmentAgenciesDebtSecuritiesMember", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "U.S. government agency securities", "label": "US Government Agencies Debt Securities [Member]", "documentation": "Debentures, notes, and other debt securities issued by US government agencies, for example, but not limited to, Government National Mortgage Association (GNMA or Ginnie Mae). Excludes US treasury securities and debt issued by government-sponsored Enterprises (GSEs), for example, but is not limited to, Federal Home Loan Mortgage Corporation (FHLMC or Freddie Mac), Federal National Mortgage Association (FNMA or Fannie Mae), and the Federal Home Loan Bank (FHLB)." } } }, "auth_ref": [ "r736", "r737", "r762", "r764", "r1112" ] }, "us-gaap_USStatesAndPoliticalSubdivisionsMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "USStatesAndPoliticalSubdivisionsMember", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "U.S. municipal securities", "label": "US States and Political Subdivisions Debt Securities [Member]", "documentation": "Bonds or similar securities issued by state, city, or local US governments or the agencies operated by state, city, or local governments. Debt securities issued by state governments may include bond issuances of US state authorities including, for example, but not limited to, housing authorities, dormitory authorities, and general obligations while debt securities issued by political subdivisions of US states would include, for example, debt issuances by county, borough, city, or municipal governments." } } }, "auth_ref": [ "r762", "r764", "r820", "r837", "r1140" ] }, "us-gaap_USTreasuryBondSecuritiesMember": { "xbrltype": "domainItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "USTreasuryBondSecuritiesMember", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "U.S. treasury bonds", "label": "US Treasury Bond Securities [Member]", "documentation": "This category includes information about negotiable debt securities issued by the United States Department of the Treasury which generally have maturities greater than ten and as long as thirty years, are interest bearing, and are backed by the full faith and credit of the United States government." } } }, "auth_ref": [ "r1112" ] }, "ecd_UndrlygSecurityMktPriceChngPct": { "xbrltype": "pureItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "UndrlygSecurityMktPriceChngPct", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Underlying Security Market Price Change", "label": "Underlying Security Market Price Change, Percent" } } }, "auth_ref": [ "r922" ] }, "prlb_UnitedStatesSegmentMember": { "xbrltype": "domainItemType", "nsuri": "http://www.protolabs.com/20250630", "localname": "UnitedStatesSegmentMember", "presentation": [ "http://www.protolabs.com/role/SegmentReportingScheduleofDepreciationandAmortizationDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingScheduleofReportableSegmentsDetails" ], "lang": { "en-us": { "role": { "terseLabel": "United States", "verboseLabel": "United States", "label": "United States Segment [Member]", "documentation": "Operating segment for United States." } } }, "auth_ref": [] }, "us-gaap_UnrecognizedTaxBenefits": { "xbrltype": "monetaryItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "UnrecognizedTaxBenefits", "crdr": "credit", "presentation": [ "http://www.protolabs.com/role/IncomeTaxesDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Unrecognized tax benefits", "label": "Unrecognized Tax Benefits", "documentation": "Amount of unrecognized tax benefits." } } }, "auth_ref": [ "r366", "r374", "r772" ] }, "ecd_VstngDtFrValOfEqtyAwrdsGrntdAndVstdInCvrdYrMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "VstngDtFrValOfEqtyAwrdsGrntdAndVstdInCvrdYrMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Vesting Date Fair Value of Equity Awards Granted and Vested in Covered Year", "label": "Vesting Date Fair Value of Equity Awards Granted and Vested in Covered Year [Member]" } } }, "auth_ref": [ "r892" ] }, "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "WeightedAverageNumberOfDilutedSharesOutstanding", "calculation": { "http://www.protolabs.com/role/NetIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails": { "parentTag": null, "weight": null, "order": null, "root": true } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.protolabs.com/role/NetIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Diluted (in shares)", "totalLabel": "Diluted - weighted-average shares outstanding (in shares)", "label": "Weighted Average Number of Shares Outstanding, Diluted", "documentation": "The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period." } } }, "auth_ref": [ "r151", "r159" ] }, "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": { "xbrltype": "sharesItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "WeightedAverageNumberOfSharesOutstandingBasic", "calculation": { "http://www.protolabs.com/role/NetIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails": { "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding", "weight": 1.0, "order": 1.0 } }, "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome", "http://www.protolabs.com/role/NetIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "lang": { "en-us": { "role": { "terseLabel": "Basic (in shares)", "verboseLabel": "Basic - weighted-average shares outstanding (in shares)", "label": "Weighted Average Number of Shares Outstanding, Basic", "documentation": "Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period." } } }, "auth_ref": [ "r150", "r159" ] }, "us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract": { "xbrltype": "stringItemType", "nsuri": "http://fasb.org/us-gaap/2025", "localname": "WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncome" ], "lang": { "en-us": { "role": { "terseLabel": "Shares used to compute net income per share:", "label": "Weighted Average Number of Shares Outstanding Reconciliation [Abstract]" } } }, "auth_ref": [] }, "ecd_YrEndFrValOfEqtyAwrdsGrntdInCvrdYrOutsdngAndUnvstdMember": { "xbrltype": "domainItemType", "nsuri": "http://xbrl.sec.gov/ecd/2025", "localname": "YrEndFrValOfEqtyAwrdsGrntdInCvrdYrOutsdngAndUnvstdMember", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "lang": { "en-us": { "role": { "terseLabel": "Year-end Fair Value of Equity Awards Granted in Covered Year that are Outstanding and Unvested", "label": "Year-end Fair Value of Equity Awards Granted in Covered Year that are Outstanding and Unvested [Member]" } } }, "auth_ref": [ "r890" ] } } } }, "std_ref": { "r0": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "SubTopic": "230", "Topic": "830", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477401/830-230-45-1" }, "r1": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10A", "SubTopic": "10", "Topic": "220", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-10A" }, "r2": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10A", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "220", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-10A" }, "r3": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "14", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "230", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-14" }, "r4": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "SubTopic": "10", "Topic": "810", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481231/810-10-45-20" }, "r5": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "230", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28" }, "r6": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Subparagraph": "(b)", "SubTopic": "10", "Topic": "230", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28" }, "r7": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "SubTopic": "10", "Topic": "360", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482130/360-10-45-5" }, "r8": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "SubTopic": "10", "Topic": "210", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483489/210-10-50-1" }, "r9": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "SubTopic": "10", "Topic": "360", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-1" }, "r10": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1A", "Subparagraph": "(c)(3)", "SubTopic": "10", "Topic": "810", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-1A" }, "r11": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "SubTopic": "10", "Topic": "505", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-2" }, "r12": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)", "SubTopic": "10", "Topic": "718", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r13": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)", "SubTopic": "10", "Topic": "718", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r14": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2A", "Subparagraph": "(a)", "SubTopic": "10", "Topic": "718", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2A" }, "r15": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "15", "SubTopic": "10", "Topic": "220", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482739/220-10-55-15" }, "r16": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(22))", "SubTopic": "10", "Topic": "210", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r17": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "220", "SubTopic": "10", "Section": "45", "Paragraph": "14", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-14" }, "r18": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "220", "SubTopic": "10", "Section": "45", "Paragraph": "14A", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-14A" }, "r19": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "220", "SubTopic": "10", "Section": "45", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-5" }, "r20": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "230", "SubTopic": "10", "Section": "45", "Paragraph": "13", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-13" }, "r21": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "230", "SubTopic": "10", "Section": "45", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-4" }, "r22": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "280", "SubTopic": "10", "Section": "50", "Paragraph": "22", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22" }, "r23": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "280", "SubTopic": "10", "Section": "50", "Paragraph": "25", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-25" }, "r24": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "280", "SubTopic": "10", "Section": "50", "Paragraph": "30", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30" }, "r25": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Name": "Accounting Standards Codification", "Topic": "718", "SubTopic": "10", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r26": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(19)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r27": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(19))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r28": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(20))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r29": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(21))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r30": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(23))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r31": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(24))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r32": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(25))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r33": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(26))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r34": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(28))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r35": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(29))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r36": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(30)(a)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r37": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(30)(a)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r38": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(30))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r39": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(31))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r40": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(32))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r41": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(6)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r42": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(6)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r43": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(6)(c))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r44": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org/220/tableOfContent" }, "r45": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Paragraph": "1", "Section": "45", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1" }, "r46": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10A", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-10A" }, "r47": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10A", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-10A" }, "r48": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-11" }, "r49": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2" }, "r50": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(10))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2" }, "r51": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(2)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2" }, "r52": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(2)(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2" }, "r53": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2" }, "r54": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(20))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2" }, "r55": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2" }, "r56": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(9))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2" }, "r57": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "12", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-12" }, "r58": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "13", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-13" }, "r59": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "15", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-15" }, "r60": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-24" }, "r61": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "25", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-25" }, "r62": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28" }, "r63": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "41", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-41" }, "r64": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SAB Topic 4.E)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480418/310-10-S99-2" }, "r65": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "330", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SAB Topic 5.BB)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480581/330-10-S99-2" }, "r66": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "360", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3" }, "r67": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.3-04)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480008/505-10-S99-1" }, "r68": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r69": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r70": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "718", "SubTopic": "10", "Subparagraph": "(f)(2)", "Name": "Accounting Standards Codification", "Paragraph": "2", "Section": "50", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r71": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "810", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org/810/tableOfContent" }, "r72": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "19", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481231/810-10-45-19" }, "r73": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(10))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1" }, "r74": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(11))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1" }, "r75": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(23))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1" }, "r76": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-04(15))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1" }, "r77": { "role": "http://fasb.org/us-gaap/role/ref/legacyRef", "Topic": "942", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-04(22))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1" }, "r78": { "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32" }, "r79": { "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32" }, "r80": { "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32" }, "r81": { "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32" }, "r82": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Subparagraph": "(a)", "SubTopic": "20", "Topic": "740", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482659/740-20-45-2" }, "r83": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(b)", "SubTopic": "10", "Topic": "740", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-9" }, "r84": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(h))", "SubTopic": "10", "Topic": "235", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1" }, "r85": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "105", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479343/105-10-65-6" }, "r86": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "105", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "9", "Subparagraph": "(d)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479343/105-10-65-9" }, "r87": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "105", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "9", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479343/105-10-65-9" }, "r88": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "205", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org/205/tableOfContent" }, "r89": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "205", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S45", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481034/205-10-S45-5" }, "r90": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "205", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480922/205-10-S99-3" }, "r91": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "205", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-1" }, "r92": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "205", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-7" }, "r93": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-1" }, "r94": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-5" }, "r95": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r96": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(15))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r97": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(16))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r98": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(17))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r99": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(18))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r100": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(30)(a)(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r101": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r102": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r103": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(9))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r104": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10A", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-10A" }, "r105": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10A", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-10A" }, "r106": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-11" }, "r107": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "14A", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-14A" }, "r108": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1A", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1A" }, "r109": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1A", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1A" }, "r110": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1A", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1A" }, "r111": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1B" }, "r112": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1B", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1B" }, "r113": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-4" }, "r114": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-5" }, "r115": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-6" }, "r116": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(24))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2" }, "r117": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.5-03(25))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2" }, "r118": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r119": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-6" }, "r120": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-6" }, "r121": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-11" }, "r122": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "12", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-12" }, "r123": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "15", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-15" }, "r124": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-24" }, "r125": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482913/230-10-50-8" }, "r126": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org/235/tableOfContent" }, "r127": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483426/235-10-50-1" }, "r128": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480738/235-10-S50-1" }, "r129": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(g)(1)(i))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1" }, "r130": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(g)(1)(ii))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1" }, "r131": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(h)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1" }, "r132": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(k)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1" }, "r133": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "23", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-23" }, "r134": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-24" }, "r135": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-5" }, "r136": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1" }, "r137": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1" }, "r138": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1" }, "r139": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1" }, "r140": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-11" }, "r141": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-11" }, "r142": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-3" }, "r143": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-4" }, "r144": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-6" }, "r145": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-7" }, "r146": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-7" }, "r147": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-8" }, "r148": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-9" }, "r149": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org/260/tableOfContent" }, "r150": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-10" }, "r151": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "16", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-16" }, "r152": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-2" }, "r153": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "22", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-22" }, "r154": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "23", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-23" }, "r155": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28A", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-28A" }, "r156": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "60B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-60B" }, "r157": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "60B", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-60B" }, "r158": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-7" }, "r159": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-1" }, "r160": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-1" }, "r161": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-2" }, "r162": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-3" }, "r163": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "15", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482635/260-10-55-15" }, "r164": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "270", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482964/270-10-50-1" }, "r165": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "272", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483014/272-10-45-1" }, "r166": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "275", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "20", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-20" }, "r167": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "275", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-9" }, "r168": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org/280/tableOfContent" }, "r169": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "15", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-15" }, "r170": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-21" }, "r171": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-21" }, "r172": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22" }, "r173": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22" }, "r174": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22" }, "r175": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22" }, "r176": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22" }, "r177": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22" }, "r178": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22" }, "r179": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22" }, "r180": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22" }, "r181": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(j)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22" }, "r182": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "25", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-25" }, "r183": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "25", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-25" }, "r184": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "26", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-26" }, "r185": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "26A", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-26A" }, "r186": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "26B", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-26B" }, "r187": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "26C", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-26C" }, "r188": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30" }, "r189": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30" }, "r190": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30" }, "r191": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30" }, "r192": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "31", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-31" }, "r193": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32" }, "r194": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(ee)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32" }, "r195": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32" }, "r196": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "34", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-34" }, "r197": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "40", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-40" }, "r198": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "41", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-41" }, "r199": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "41", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-41" }, "r200": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "41", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-41" }, "r201": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "42", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-42" }, "r202": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "13", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481990/310-10-45-13" }, "r203": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481962/310-10-50-4" }, "r204": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481830/320-10-45-11" }, "r205": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2" }, "r206": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2" }, "r207": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(aa)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2" }, "r208": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(aaa)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2" }, "r209": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2" }, "r210": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2" }, "r211": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2" }, "r212": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3" }, "r213": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3" }, "r214": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3" }, "r215": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3" }, "r216": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3" }, "r217": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5" }, "r218": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5" }, "r219": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(aaa)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5" }, "r220": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5" }, "r221": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5" }, "r222": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5" }, "r223": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(f)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5" }, "r224": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(f)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5" }, "r225": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(f)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5" }, "r226": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(f)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5" }, "r227": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5A", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5A" }, "r228": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5A", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5A" }, "r229": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5A", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5A" }, "r230": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5B", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5B" }, "r231": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5B" }, "r232": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5B", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5B" }, "r233": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5B", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5B" }, "r234": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5B", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5B" }, "r235": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-9" }, "r236": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "323", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481687/323-10-50-3" }, "r237": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "4", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479654/326-10-65-4" }, "r238": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "5", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479654/326-10-65-5" }, "r239": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479344/326-20-45-1" }, "r240": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-11" }, "r241": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-13" }, "r242": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "14", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-14" }, "r243": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "16", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-16" }, "r244": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-5" }, "r245": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479130/326-30-45-1" }, "r246": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479106/326-30-50-4" }, "r247": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479106/326-30-50-7" }, "r248": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479106/326-30-50-9" }, "r249": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "330", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org/330/tableOfContent" }, "r250": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480265/350-10-S45-1" }, "r251": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482598/350-20-45-1" }, "r252": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1" }, "r253": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1" }, "r254": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1" }, "r255": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1" }, "r256": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1" }, "r257": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1" }, "r258": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1" }, "r259": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1" }, "r260": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1" }, "r261": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-4" }, "r262": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482686/350-30-45-1" }, "r263": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482686/350-30-45-2" }, "r264": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1" }, "r265": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1" }, "r266": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1" }, "r267": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1" }, "r268": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1" }, "r269": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2" }, "r270": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2" }, "r271": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2" }, "r272": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2" }, "r273": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2" }, "r274": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-3" }, "r275": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "350", "SubTopic": "60", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476166/350-60-65-1" }, "r276": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "360", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3" }, "r277": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "420", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482017/420-10-50-1" }, "r278": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "420", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SAB Topic 5.P.4.d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479823/420-10-S99-2" }, "r279": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483076/450-20-50-4" }, "r280": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483076/450-20-50-9" }, "r281": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 5.Y.Q2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480102/450-20-S99-1" }, "r282": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 5.Y.Q4)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480102/450-20-S99-1" }, "r283": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(i))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A" }, "r284": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(iii)(A))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A" }, "r285": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(iv))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A" }, "r286": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A" }, "r287": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(i))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B" }, "r288": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B" }, "r289": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B" }, "r290": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(4)(iv))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B" }, "r291": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1B", "Subparagraph": "(SX 210.13-02(a)(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B" }, "r292": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1D", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1D" }, "r293": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1I", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1I" }, "r294": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "4", "Subparagraph": "(f)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481538/470-20-65-4" }, "r295": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "4", "Subparagraph": "(f)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481538/470-20-65-4" }, "r296": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "480", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479887/480-10-S45-1" }, "r297": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "480", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479887/480-10-S45-2" }, "r298": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "480", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S45", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479887/480-10-S45-3" }, "r299": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "480", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479857/480-10-S50-1" }, "r300": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "480", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479857/480-10-S50-3" }, "r301": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "480", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480244/480-10-S99-1" }, "r302": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "480", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(01)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480244/480-10-S99-1" }, "r303": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "480", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(01)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480244/480-10-S99-1" }, "r304": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "480", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3A", "Subparagraph": "(24)(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480244/480-10-S99-3A" }, "r305": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-13" }, "r306": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-18" }, "r307": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.3-04)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480008/505-10-S99-1" }, "r308": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-4" }, "r309": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-5" }, "r310": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-7" }, "r311": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1" }, "r312": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1" }, "r313": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(02)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1" }, "r314": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(02)(A)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1" }, "r315": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(02)(B)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1" }, "r316": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(02)(C)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1" }, "r317": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1" }, "r318": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(c)(iv)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-5" }, "r319": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(c)(iv)(02)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-5" }, "r320": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(c)(iv)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-5" }, "r321": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "715", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480576/715-80-50-5" }, "r322": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org/718/tableOfContent" }, "r323": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "1D", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480483/718-10-35-1D" }, "r324": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480483/718-10-35-2" }, "r325": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480483/718-10-35-3" }, "r326": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480454/718-10-45-1" }, "r327": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r328": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r329": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r330": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r331": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r332": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r333": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r334": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r335": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r336": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(02)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r337": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r338": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(04)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r339": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r340": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r341": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r342": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r343": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(02)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r344": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r345": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r346": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r347": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r348": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r349": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r350": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r351": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r352": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r353": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(iv)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r354": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(v)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r355": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(h)(1)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r356": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(h)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r357": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(h)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r358": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r359": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(l)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r360": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "17", "Subparagraph": "(d)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480336/718-10-65-17" }, "r361": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479983/718-10-S45-1" }, "r362": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 14.F)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479830/718-10-S99-1" }, "r363": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "720", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483359/720-20-50-1" }, "r364": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "730", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482916/730-10-50-1" }, "r365": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org/740/tableOfContent" }, "r366": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "10B", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482525/740-10-45-10B" }, "r367": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482525/740-10-45-4" }, "r368": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482525/740-10-45-6" }, "r369": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-10" }, "r370": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-12" }, "r371": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12B", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-12B" }, "r372": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12C", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-12C" }, "r373": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "14", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-14" }, "r374": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "15A", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-15A" }, "r375": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "17", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-17" }, "r376": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-21" }, "r377": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "8", "Subparagraph": "(d)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482615/740-10-65-8" }, "r378": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "8", "Subparagraph": "(d)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482615/740-10-65-8" }, "r379": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 6.I.1.Q1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479360/740-10-S99-1" }, "r380": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 6.I.5.Q1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479360/740-10-S99-1" }, "r381": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 6.I.7)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479360/740-10-S99-1" }, "r382": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SAB Topic 11.C)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479360/740-10-S99-2" }, "r383": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "270", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477891/740-270-50-1" }, "r384": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482603/740-30-50-2" }, "r385": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "323", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(d)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2" }, "r386": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "323", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(d)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2" }, "r387": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "323", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2" }, "r388": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "323", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(g)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2" }, "r389": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "740", "SubTopic": "323", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(g)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2" }, "r390": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r391": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r392": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r393": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r394": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r395": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r396": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r397": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r398": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r399": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(g)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r400": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(g)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r401": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(g)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r402": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(g)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r403": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r404": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(h)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r405": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(h)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r406": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(h)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r407": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(h)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r408": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-3" }, "r409": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1" }, "r410": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1" }, "r411": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1" }, "r412": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1" }, "r413": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1" }, "r414": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1" }, "r415": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1" }, "r416": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(1)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1" }, "r417": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(1)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1" }, "r418": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(e)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1" }, "r419": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(e)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1" }, "r420": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-2" }, "r421": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-4" }, "r422": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4A", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-4A" }, "r423": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4A", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-4A" }, "r424": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4A", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-4A" }, "r425": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-5" }, "r426": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1" }, "r427": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1" }, "r428": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1" }, "r429": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1" }, "r430": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1" }, "r431": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1" }, "r432": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1" }, "r433": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1" }, "r434": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1" }, "r435": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1" }, "r436": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1" }, "r437": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(f)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1" }, "r438": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(f)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1" }, "r439": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-2" }, "r440": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-4" }, "r441": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-4" }, "r442": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-4" }, "r443": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "60", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(d)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476176/805-60-65-1" }, "r444": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "805", "SubTopic": "60", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476176/805-60-65-1" }, "r445": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "25", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481231/810-10-45-25" }, "r446": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "25", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481231/810-10-45-25" }, "r447": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-1B" }, "r448": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(bb)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-3" }, "r449": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "810", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-3" }, "r450": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8A", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-8A" }, "r451": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6" }, "r452": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(h)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6" }, "r453": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(h)(1)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6" }, "r454": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(h)(1)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6" }, "r455": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(h)(1)(iv)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6" }, "r456": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "6", "Subparagraph": "(i)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6" }, "r457": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480870/815-30-50-2" }, "r458": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480870/815-30-50-2" }, "r459": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480870/815-30-50-2" }, "r460": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480870/815-30-50-2" }, "r461": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480237/815-40-50-5" }, "r462": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(e)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1" }, "r463": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(e)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1" }, "r464": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1" }, "r465": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "54B", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482134/820-10-35-54B" }, "r466": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r467": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r468": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(bbb)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r469": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(bbb)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r470": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(bbb)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r471": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r472": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r473": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r474": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r475": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r476": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r477": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r478": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r479": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2E", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2E" }, "r480": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-3" }, "r481": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-3" }, "r482": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6A", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6A" }, "r483": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6A", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6A" }, "r484": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6A", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6A" }, "r485": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6A", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6A" }, "r486": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6A", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6A" }, "r487": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6B" }, "r488": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1A", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482736/825-10-45-1A" }, "r489": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-10" }, "r490": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-11" }, "r491": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-11" }, "r492": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "28", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-28" }, "r493": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "28", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-28" }, "r494": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-32" }, "r495": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "17", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-17" }, "r496": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-20" }, "r497": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-20" }, "r498": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-20" }, "r499": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "20", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-20" }, "r500": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "830", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481674/830-30-50-1" }, "r501": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "8", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479832/842-10-65-8" }, "r502": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "12A", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479165/842-20-35-12A" }, "r503": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479041/842-20-45-1" }, "r504": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479041/842-20-45-1" }, "r505": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479041/842-20-45-5" }, "r506": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(g)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4" }, "r507": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "842", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7A", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-7A" }, "r508": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "848", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(a)(3)(iii)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483550/848-10-65-2" }, "r509": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(b)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3" }, "r510": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(b)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3" }, "r511": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3" }, "r512": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(bb)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3" }, "r513": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(bb)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3" }, "r514": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(bb)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3" }, "r515": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3" }, "r516": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3" }, "r517": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3" }, "r518": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4" }, "r519": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4" }, "r520": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4" }, "r521": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4" }, "r522": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481444/860-30-45-1" }, "r523": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481420/860-30-50-7" }, "r524": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481420/860-30-50-7" }, "r525": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-3" }, "r526": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-3" }, "r527": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-3" }, "r528": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)(4)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-3" }, "r529": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4" }, "r530": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4" }, "r531": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4" }, "r532": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4" }, "r533": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(5)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4" }, "r534": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(6)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4" }, "r535": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(a)(7)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4" }, "r536": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4" }, "r537": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(e)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4" }, "r538": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(e)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4" }, "r539": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "860", "SubTopic": "50", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(e)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4" }, "r540": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "910", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482546/910-10-50-6" }, "r541": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "924", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 11.L)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479941/924-10-S99-1" }, "r542": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "926", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483154/926-20-50-5" }, "r543": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "928", "SubTopic": "340", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478859/928-340-50-1" }, "r544": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478934/932-220-50-1" }, "r545": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-18" }, "r546": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-18" }, "r547": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "18", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-18" }, "r548": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "19", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-19" }, "r549": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "20", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-20" }, "r550": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "20", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-20" }, "r551": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "23", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-23" }, "r552": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "23", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-23" }, "r553": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "23", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-23" }, "r554": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "23", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-23" }, "r555": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "23", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-23" }, "r556": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "23", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-23" }, "r557": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "28", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-28" }, "r558": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "28", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-28" }, "r559": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "31", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-31" }, "r560": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "31", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-31" }, "r561": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "31", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-31" }, "r562": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "31", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-31" }, "r563": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "31", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-31" }, "r564": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "31", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-31" }, "r565": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-5" }, "r566": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-5" }, "r567": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-5" }, "r568": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-5" }, "r569": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-5" }, "r570": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-5" }, "r571": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-6" }, "r572": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-7" }, "r573": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-8" }, "r574": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-8" }, "r575": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-8" }, "r576": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "280", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478657/932-280-50-1" }, "r577": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "932", "SubTopic": "323", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478988/932-323-50-1" }, "r578": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "940", "SubTopic": "820", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478119/940-820-50-1" }, "r579": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(10)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1" }, "r580": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-03(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1" }, "r581": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-04(26))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1" }, "r582": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-04(27))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1" }, "r583": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478671/942-235-S50-1" }, "r584": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-05(b)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477314/942-235-S99-1" }, "r585": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-05(b)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477314/942-235-S99-1" }, "r586": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.9-05(b)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477314/942-235-S99-1" }, "r587": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3A", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3A" }, "r588": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3A", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3A" }, "r589": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "360", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478451/942-360-50-1" }, "r590": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "740", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477617/942-740-50-1" }, "r591": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "942", "SubTopic": "825", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478898/942-825-50-1" }, "r592": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1" }, "r593": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(12))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1" }, "r594": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(15)(b)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1" }, "r595": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(21))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1" }, "r596": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(22))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1" }, "r597": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(23)(a)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1" }, "r598": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(23)(a)(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1" }, "r599": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(25))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1" }, "r600": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-03(a)(8))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1" }, "r601": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(11))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1" }, "r602": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(18))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1" }, "r603": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(19))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1" }, "r604": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(2)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1" }, "r605": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(20))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1" }, "r606": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(22))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1" }, "r607": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(23))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1" }, "r608": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.7-04(9))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1" }, "r609": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column A))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-1" }, "r610": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column B))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-1" }, "r611": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column C))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-1" }, "r612": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column D))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-1" }, "r613": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column E))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-1" }, "r614": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column F))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-1" }, "r615": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column G))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-1" }, "r616": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column H))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-1" }, "r617": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column I))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-1" }, "r618": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column J))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-1" }, "r619": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-16(Column K))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-1" }, "r620": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column A))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2" }, "r621": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column B))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2" }, "r622": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column C))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2" }, "r623": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column D))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2" }, "r624": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column E))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2" }, "r625": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-17(Column F))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2" }, "r626": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4E", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4E" }, "r627": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5" }, "r628": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7A", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A" }, "r629": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2" }, "r630": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(f)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2" }, "r631": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(f)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2" }, "r632": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(g)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2" }, "r633": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(g)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2" }, "r634": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "2", "Subparagraph": "(h)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2" }, "r635": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 5.W.Q2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479583/944-40-S99-1" }, "r636": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "740", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478822/944-740-50-1" }, "r637": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "944", "SubTopic": "805", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478072/944-805-50-1" }, "r638": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480424/946-10-50-1" }, "r639": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480424/946-10-50-2" }, "r640": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-03(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479886/946-10-S99-3" }, "r641": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480990/946-20-50-11" }, "r642": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480990/946-20-50-13" }, "r643": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "205", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "4", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478009/946-205-45-4" }, "r644": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "205", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478009/946-205-45-6" }, "r645": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477796/946-210-45-4" }, "r646": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-1" }, "r647": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-2" }, "r648": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-6" }, "r649": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-6" }, "r650": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-6" }, "r651": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r652": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(12)(b)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r653": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(12)(b)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r654": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(12)(b)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r655": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(13)(a)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r656": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(13)(a)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r657": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(14))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r658": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(16)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r659": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(17))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r660": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(19))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r661": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(2)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r662": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(2)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r663": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(3)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r664": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(3)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r665": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(3)(c))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r666": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(6)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r667": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(6)(c))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r668": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(6)(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r669": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(6)(e))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r670": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(8))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r671": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(9)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r672": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(9)(c))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r673": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(9)(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r674": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-04(9)(e))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1" }, "r675": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.6-05(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-2" }, "r676": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.6-05(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-2" }, "r677": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "7", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479105/946-220-45-7" }, "r678": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r679": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(2)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r680": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r681": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r682": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r683": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r684": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r685": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(a)(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r686": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(1))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r687": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r688": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(3))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r689": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(5))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r690": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r691": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(7)(c)(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r692": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.6-07(9))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1" }, "r693": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(1)(d))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3" }, "r694": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(4)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3" }, "r695": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3" }, "r696": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3" }, "r697": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-1" }, "r698": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-12(Column C)(Footnote 5))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-1" }, "r699": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-2" }, "r700": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-12A(Column C)(Footnote 4))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-2" }, "r701": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-3" }, "r702": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-3" }, "r703": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.12-12B(Column C)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-3" }, "r704": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "6", "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-6" }, "r705": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "6", "Subparagraph": "(SX 210.12-14(Column F)(Footnote 7))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-6" }, "r706": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "948", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "S50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478322/948-310-S50-2" }, "r707": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "948", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-29(Column A)(Footnote 3))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479628/948-310-S99-1" }, "r708": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "948", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-29(Column A)(Footnote 4))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479628/948-310-S99-1" }, "r709": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "948", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-29(Column B))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479628/948-310-S99-1" }, "r710": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "948", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-29(Column C))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479628/948-310-S99-1" }, "r711": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "970", "SubTopic": "360", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-28(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478979/970-360-S99-1" }, "r712": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "970", "SubTopic": "360", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-28(Column B))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478979/970-360-S99-1" }, "r713": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "970", "SubTopic": "360", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-28(Column C))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478979/970-360-S99-1" }, "r714": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "970", "SubTopic": "360", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-28(Column D))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478979/970-360-S99-1" }, "r715": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "970", "SubTopic": "360", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-28(Column E))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478979/970-360-S99-1" }, "r716": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "970", "SubTopic": "360", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-28(Column F))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478979/970-360-S99-1" }, "r717": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "970", "SubTopic": "360", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-28(Column G))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478979/970-360-S99-1" }, "r718": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "970", "SubTopic": "360", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-28(Column H))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478979/970-360-S99-1" }, "r719": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "970", "SubTopic": "360", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-28(Column I))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478979/970-360-S99-1" }, "r720": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "976", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477332/976-310-50-1" }, "r721": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "978", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479230/978-310-50-1" }, "r722": { "role": "http://www.xbrl.org/2003/role/disclosureRef", "Topic": "985", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481283/985-20-50-2" }, "r723": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "10", "SubTopic": "10", "Topic": "825", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482881/825-10-55-10" }, "r724": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "13H", "Subparagraph": "(a)", "SubTopic": "40", "Topic": "944", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-13H" }, "r725": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "13H", "Subparagraph": "(b)", "SubTopic": "40", "Topic": "944", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-13H" }, "r726": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "40", "SubTopic": "30", "Topic": "350", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482640/350-30-55-40" }, "r727": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-1" }, "r728": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-1" }, "r729": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "12", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-12" }, "r730": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476153/220-40-55-11" }, "r731": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "14", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476153/220-40-55-14" }, "r732": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "18", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476153/220-40-55-18" }, "r733": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "21", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476153/220-40-55-21" }, "r734": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476153/220-40-55-24" }, "r735": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476153/220-40-55-4" }, "r736": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480738/235-10-S50-1" }, "r737": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(m)(1)(ii)(A))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1" }, "r738": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "52", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482635/260-10-55-52" }, "r739": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "275", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "18", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482836/275-10-55-18" }, "r740": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30" }, "r741": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "31", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-31" }, "r742": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "47", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-47" }, "r743": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "47", "Subparagraph": "(bb)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-47" }, "r744": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "47", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-47" }, "r745": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "47", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-47" }, "r746": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "48", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-48" }, "r747": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "49", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-49" }, "r748": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "54", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-54" }, "r749": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "54", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-54" }, "r750": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "54", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-54" }, "r751": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "12A", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481933/310-10-55-12A" }, "r752": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "326", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479081/326-30-55-8" }, "r753": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482548/350-20-55-24" }, "r754": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "420", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481639/420-10-35-4" }, "r755": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "69B", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481568/470-20-55-69B" }, "r756": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "69C", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481568/470-20-55-69C" }, "r757": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "480", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "64", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481620/480-10-55-64" }, "r758": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "505", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "13", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-13" }, "r759": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-5" }, "r760": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479777/606-10-55-91" }, "r761": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "91", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479777/606-10-55-91" }, "r762": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1" }, "r763": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(iv)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1" }, "r764": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(c)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-5" }, "r765": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(c)(iv)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-5" }, "r766": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "17", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480482/715-20-55-17" }, "r767": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480576/715-80-50-11" }, "r768": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480576/715-80-50-6" }, "r769": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "715", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480547/715-80-55-8" }, "r770": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r771": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r772": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "217", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482663/740-10-55-217" }, "r773": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "740", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "231", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482663/740-10-55-231" }, "r774": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "8", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-8" }, "r775": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "39", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-39" }, "r776": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "41", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-41" }, "r777": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "43", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-43" }, "r778": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "47", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-47" }, "r779": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "14", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-14" }, "r780": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "14", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-14" }, "r781": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "14", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-14" }, "r782": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "14", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-14" }, "r783": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "14", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-14" }, "r784": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "20", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-20" }, "r785": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "20", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-20" }, "r786": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "20", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-20" }, "r787": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "20", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-20" }, "r788": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "29", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-29" }, "r789": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "29", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-29" }, "r790": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "31", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31" }, "r791": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "31", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31" }, "r792": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "31", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31" }, "r793": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "31", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31" }, "r794": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "31", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31" }, "r795": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "31", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31" }, "r796": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "31", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31" }, "r797": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "31", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31" }, "r798": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "31", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31" }, "r799": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "31", "Subparagraph": "(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31" }, "r800": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "38", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-38" }, "r801": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "38", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-38" }, "r802": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "38", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-38" }, "r803": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "38", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-38" }, "r804": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "38", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-38" }, "r805": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "38", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-38" }, "r806": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "805", "SubTopic": "740", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "13", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478064/805-740-55-13" }, "r807": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "815", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4A", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4A" }, "r808": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "100", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-100" }, "r809": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "100", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-100" }, "r810": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "101", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-101" }, "r811": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "103", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-103" }, "r812": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "107", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107" }, "r813": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "107", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107" }, "r814": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "107", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107" }, "r815": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "107", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107" }, "r816": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "107", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107" }, "r817": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "107", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107" }, "r818": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "12", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482881/825-10-55-12" }, "r819": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "852", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481372/852-10-55-10" }, "r820": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "860", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481395/860-30-55-4" }, "r821": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "17", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-17" }, "r822": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-21" }, "r823": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "29", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-29" }, "r824": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477215/932-235-50-3" }, "r825": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477916/932-235-55-2" }, "r826": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477916/932-235-55-4" }, "r827": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477916/932-235-55-5" }, "r828": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "932", "SubTopic": "235", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477916/932-235-55-6" }, "r829": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479401/944-30-55-2" }, "r830": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "29F", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-29F" }, "r831": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "9C", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-9C" }, "r832": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "9C", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-9C" }, "r833": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "9C", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-9C" }, "r834": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "9E", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-9E" }, "r835": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "605", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477548/944-605-55-11" }, "r836": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "605", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "14", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477548/944-605-55-14" }, "r837": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "17", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480078/944-80-55-17" }, "r838": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "944", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "18", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480078/944-80-55-18" }, "r839": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-1" }, "r840": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-6" }, "r841": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "210", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477439/946-210-55-1" }, "r842": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "310", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477802/946-310-45-1" }, "r843": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2)(i))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-1" }, "r844": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-2" }, "r845": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 1)(a))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-3" }, "r846": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "6", "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-6" }, "r847": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "830", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479168/946-830-55-10" }, "r848": { "role": "http://www.xbrl.org/2003/role/exampleRef", "Topic": "946", "SubTopic": "830", "Name": "Accounting Standards Codification", "Section": "55", "Paragraph": "12", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479168/946-830-55-12" }, "r849": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "12", "Subsection": "b" }, "r850": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "12", "Subsection": "b-2" }, "r851": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Exchange Act", "Number": "240", "Section": "12", "Subsection": "d1-1" }, "r852": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 10-Q", "Number": "240", "Section": "308", "Subsection": "a" }, "r853": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "16", "Subsection": "J", "Paragraph": "a" }, "r854": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1" }, "r855": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i" }, "r856": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "A" }, "r857": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "B" }, "r858": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "C" }, "r859": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "D" }, "r860": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "i", "Sentence": "E" }, "r861": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "ii" }, "r862": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "1", "Subparagraph": "iii" }, "r863": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 20-F", "Section": "6", "Subsection": "F", "Paragraph": "2" }, "r864": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a" }, "r865": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1" }, "r866": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "i" }, "r867": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "ii" }, "r868": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "iii" }, "r869": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "iv" }, "r870": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "1", "Sentence": "v" }, "r871": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "2" }, "r872": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "a", "Subparagraph": "3" }, "r873": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form 40-F", "Section": "19", "Paragraph": "b" }, "r874": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a" }, "r875": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1" }, "r876": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "i" }, "r877": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "ii" }, "r878": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "iii" }, "r879": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "iv" }, "r880": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "1", "Sentence": "v" }, "r881": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "2" }, "r882": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "a", "Subparagraph": "3" }, "r883": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Form N-CSR", "Section": "18", "Paragraph": "b" }, "r884": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Forms 10-K, 10-Q, 20-F", "Number": "240", "Section": "13", "Subsection": "a-1" }, "r885": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v" }, "r886": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "1" }, "r887": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "ii" }, "r888": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii" }, "r889": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii", "Sentence": "B", "Clause": "1", "Subclause": "ii" }, "r890": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii", "Sentence": "C", "Clause": "1", "Subclause": "i" }, "r891": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii", "Sentence": "C", "Clause": "1", "Subclause": "ii" }, "r892": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii", "Sentence": "C", "Clause": "1", "Subclause": "iii" }, "r893": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii", "Sentence": "C", "Clause": "1", "Subclause": "iv" }, "r894": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii", "Sentence": "C", "Clause": "1", "Subclause": "v" }, "r895": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii", "Sentence": "C", "Clause": "1", "Subclause": "vi" }, "r896": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iv" }, "r897": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "vi" }, "r898": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "3" }, "r899": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "4" }, "r900": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "5", "Subparagraph": "i" }, "r901": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "5", "Subparagraph": "ii" }, "r902": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "5", "Subparagraph": "iii" }, "r903": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "5", "Subparagraph": "iv" }, "r904": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "6" }, "r905": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "v", "Paragraph": "6", "Subparagraph": "i" }, "r906": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1" }, "r907": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i" }, "r908": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "A" }, "r909": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "B" }, "r910": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "C" }, "r911": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "D" }, "r912": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "i", "Sentence": "E" }, "r913": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "ii" }, "r914": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "1", "Subparagraph": "iii" }, "r915": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "w", "Paragraph": "2" }, "r916": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "1" }, "r917": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2" }, "r918": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "A" }, "r919": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "C" }, "r920": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "D" }, "r921": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "E" }, "r922": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "402", "Subsection": "x", "Paragraph": "2", "Subparagraph": "ii", "Sentence": "F" }, "r923": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a" }, "r924": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "1" }, "r925": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "2", "Subparagraph": "A" }, "r926": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "2", "Subparagraph": "B" }, "r927": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "2", "Subparagraph": "C" }, "r928": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "a", "Paragraph": "2", "Subparagraph": "D" }, "r929": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Number": "229", "Section": "408", "Subsection": "b", "Paragraph": "1" }, "r930": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Section": "402", "Number": "229", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii", "Sentence": "C", "Clause": "1" }, "r931": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii", "Sentence": "A", "Number": "229" }, "r932": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii", "Sentence": "B", "Clause": "1", "Number": "229" }, "r933": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-K", "Section": "402", "Subsection": "v", "Paragraph": "2", "Subparagraph": "iii", "Sentence": "B", "Clause": "1", "Subclause": "i", "Number": "229" }, "r934": { "role": "http://www.xbrl.org/2003/role/presentationRef", "Publisher": "SEC", "Name": "Regulation S-T", "Number": "232", "Section": "405" }, "r935": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(a)", "SubTopic": "40", "Topic": "220", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r936": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Accounting Standards Codification", "Topic": "321", "Publisher": "FASB", "URI": "https://asc.fasb.org/321/tableOfContent" }, "r937": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Accounting Standards Codification", "Topic": "325", "Publisher": "FASB", "URI": "https://asc.fasb.org/325/tableOfContent" }, "r938": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "a", "Publisher": "SEC" }, "r939": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "b", "Subparagraph": "(1)", "Publisher": "SEC" }, "r940": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "b", "Subparagraph": "(2)", "Publisher": "SEC" }, "r941": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "b", "Subparagraph": "(3)", "Publisher": "SEC" }, "r942": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "c", "Subparagraph": "(2)(i)", "Publisher": "SEC" }, "r943": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "c", "Subparagraph": "(2)(ii)", "Publisher": "SEC" }, "r944": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Name": "Regulation S-K (SK)", "Number": "229", "Section": "1402", "Paragraph": "c", "Subparagraph": "(2)(iii)", "Publisher": "SEC" }, "r945": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r946": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(3)(a)(4))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r947": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(6))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r948": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "210", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.5-02(9))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1" }, "r949": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-4" }, "r950": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-5" }, "r951": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-6" }, "r952": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r953": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r954": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r955": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r956": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r957": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r958": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r959": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r960": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r961": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(j)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r962": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(k)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r963": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(l)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r964": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "21", "Subparagraph": "(m)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21" }, "r965": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r966": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r967": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r968": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r969": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r970": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r971": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r972": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r973": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(j)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r974": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(k)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r975": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(l)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r976": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(m)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r977": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(n)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r978": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(o)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r979": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(p)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r980": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(q)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r981": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(r)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r982": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(s)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r983": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(t)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r984": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Subparagraph": "(u)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22" }, "r985": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-30" }, "r986": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "31", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-31" }, "r987": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-32" }, "r988": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "33", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-33" }, "r989": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-6" }, "r990": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-6" }, "r991": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-6" }, "r992": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-6" }, "r993": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "220", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-6" }, "r994": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28" }, "r995": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "230", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "28", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28" }, "r996": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480738/235-10-S50-1" }, "r997": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(g)(1)(i))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1" }, "r998": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(g)(1)(ii))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1" }, "r999": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "235", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.4-08(h)(1)(Note 1))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1" }, "r1000": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "23", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-23" }, "r1001": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "24", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-24" }, "r1002": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "5", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-5" }, "r1003": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "250", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-6" }, "r1004": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "260", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-1" }, "r1005": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "270", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482964/270-10-50-1" }, "r1006": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "15", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-15" }, "r1007": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "22", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22" }, "r1008": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "30", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30" }, "r1009": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(ee)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32" }, "r1010": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "280", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "32", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32" }, "r1011": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "310", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481990/310-10-45-2" }, "r1012": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org/320/tableOfContent" }, "r1013": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481830/320-10-45-1" }, "r1014": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "11", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481830/320-10-45-11" }, "r1015": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2" }, "r1016": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(aa)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2" }, "r1017": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(aaa)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2" }, "r1018": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2" }, "r1019": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2" }, "r1020": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2" }, "r1021": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3" }, "r1022": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3" }, "r1023": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3" }, "r1024": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3" }, "r1025": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3" }, "r1026": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "320", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-9" }, "r1027": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "321", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479536/321-10-50-3" }, "r1028": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "321", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479536/321-10-50-3" }, "r1029": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "321", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479536/321-10-50-3" }, "r1030": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "323", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481687/323-10-50-3" }, "r1031": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org/350-20/tableOfContent" }, "r1032": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1" }, "r1033": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1" }, "r1034": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(h)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1" }, "r1035": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org/350-30/tableOfContent" }, "r1036": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482686/350-30-45-1" }, "r1037": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1" }, "r1038": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1" }, "r1039": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1" }, "r1040": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1" }, "r1041": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2" }, "r1042": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2" }, "r1043": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2" }, "r1044": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2" }, "r1045": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "350", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2" }, "r1046": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "410", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481931/410-30-50-10" }, "r1047": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "420", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482017/420-10-50-1" }, "r1048": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "9", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147483076/450-20-50-9" }, "r1049": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "450", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SAB Topic 5.Y.Q2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480102/450-20-S99-1" }, "r1050": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(ii))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A" }, "r1051": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "470", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1A", "Subparagraph": "(SX 210.13-01(a)(4)(iii))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A" }, "r1052": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "470", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1B", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1B" }, "r1053": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "606", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-5" }, "r1054": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1" }, "r1055": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "715", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(c)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-5" }, "r1056": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1057": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1058": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1059": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1060": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1061": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1062": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1063": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1064": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(02)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1065": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1066": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(1)(iv)(04)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1067": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1068": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1069": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1070": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1071": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(01)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1072": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(02)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1073": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)(2)(iii)(03)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1074": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1075": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(d)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1076": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1077": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(e)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1078": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1079": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(ii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1080": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(iii)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1081": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(iv)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1082": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(f)(2)(v)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2" }, "r1083": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-4" }, "r1084": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "718", "SubTopic": "50", "Name": "Accounting Standards Codification", "Publisher": "FASB", "URI": "https://asc.fasb.org/718-50/tableOfContent" }, "r1085": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "805", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(g)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2" }, "r1086": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1" }, "r1087": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "805", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1" }, "r1088": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "805", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-4" }, "r1089": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "815", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480870/815-30-50-2" }, "r1090": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "815", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "65", "Paragraph": "1", "Subparagraph": "(e)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1" }, "r1091": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "35", "Paragraph": "54B", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482134/820-10-35-54B" }, "r1092": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r1093": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r1094": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(bbb)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r1095": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(bbb)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r1096": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(bbb)(2)(i)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2" }, "r1097": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2E", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2E" }, "r1098": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "820", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6A", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6A" }, "r1099": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "10", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-10" }, "r1100": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "11", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-11" }, "r1101": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "825", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "28", "Subparagraph": "(f)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-28" }, "r1102": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "830", "SubTopic": "230", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477401/830-230-45-1" }, "r1103": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "852", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481404/852-10-50-7" }, "r1104": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "852", "SubTopic": "10", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481404/852-10-50-7" }, "r1105": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3" }, "r1106": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3" }, "r1107": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "3", "Subparagraph": "(c)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3" }, "r1108": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4" }, "r1109": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4" }, "r1110": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "860", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4" }, "r1111": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "912", "SubTopic": "730", "Name": "Accounting Standards Codification", "Section": "25", "Paragraph": "1", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479532/912-730-25-1" }, "r1112": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "942", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-2" }, "r1113": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "30", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479432/944-30-50-2B" }, "r1114": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4B" }, "r1115": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4B", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4B" }, "r1116": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4C", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4C" }, "r1117": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4D", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4D" }, "r1118": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "4G", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4G" }, "r1119": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5" }, "r1120": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5" }, "r1121": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5" }, "r1122": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "5", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5" }, "r1123": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6" }, "r1124": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6" }, "r1125": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6" }, "r1126": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6" }, "r1127": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(b)(4)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6" }, "r1128": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(b)(5)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6" }, "r1129": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(b)(6)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6" }, "r1130": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "6", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6" }, "r1131": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7A", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A" }, "r1132": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7A", "Subparagraph": "(b)(1)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A" }, "r1133": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7A", "Subparagraph": "(b)(2)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A" }, "r1134": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7A", "Subparagraph": "(b)(3)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A" }, "r1135": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7A", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A" }, "r1136": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7A", "Subparagraph": "(d)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A" }, "r1137": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7B", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7B" }, "r1138": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7B", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7B" }, "r1139": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "40", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "7B", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7B" }, "r1140": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "1", "Subparagraph": "(e)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480109/944-80-50-1" }, "r1141": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480109/944-80-50-2" }, "r1142": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "944", "SubTopic": "80", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Subparagraph": "(c)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147480109/944-80-50-2" }, "r1143": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "205", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "4", "Subparagraph": "(a)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147478009/946-205-45-4" }, "r1144": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "45", "Paragraph": "3", "Subparagraph": "(b)", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479105/946-220-45-3" }, "r1145": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(4)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3" }, "r1146": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "220", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.6-09(7))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3" }, "r1147": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "1", "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2)(ii))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-1" }, "r1148": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "2", "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-2" }, "r1149": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "3", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 1)(b))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-3" }, "r1150": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "946", "SubTopic": "320", "Name": "Accounting Standards Codification", "Section": "S99", "Paragraph": "6", "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-6" }, "r1151": { "role": "http://www.xbrl.org/2009/role/commonPracticeRef", "Topic": "985", "SubTopic": "20", "Name": "Accounting Standards Codification", "Section": "50", "Paragraph": "2", "Publisher": "FASB", "URI": "https://asc.fasb.org/1943274/2147481283/985-20-50-2" } } } ZIP 65 0001628280-25-037024-xbrl.zip IDEA: XBRL DOCUMENT begin 644 0001628280-25-037024-xbrl.zip M4$L#!!0 ( '&#_UI:62S9"/\ ):'$0 1 <')L8BTR,#(U,#8S,"YH M=&WLO6MWV\J1+OQ]?@5>)F=BKP72N .4'9XER_*.,K:E2'(R>;]D-8&FB!@$ M&%QTV;_^=#7 .T@")$@VP)XU\:9(7+JKGJJNJJZN^O1_7T>>\(S#R W\/_]) M[DA_$K!O!X[K/_WY3Y3@?ENW;-FRL*(I*A*?+AS=-'7#=-K(5)2V9AMVNX]- MK:UIFMR75&0IABTZ%UUD#9!N28XS0.27 7F"9,F6(2/+&'35]+W#F,R9S-N/ M+MS7^,^M81R/+SY\>'EYZ;SV0Z\3A$\?7-]S?0QS_A"'R(]@2B@F1/I IB&U M):4M*ZWL(>/0ZR\\91P&<>"A?M2Q@Q'SF#X;\L#"0)&H_ M(32>7CQ 49\^./MAX6+REE\;A@P_]U&$)Y?#K\[2.+*+C0_IC]-+(W?AP2_J MY$KYP_]^__9@#_$(M5T_BI%OXQE1XC:9V,*=DXENXK:LMR6KK71F&\RBGRY>RE%QXB8M[" M?OOG0ZOW:8B1T_LTPC$2X+8V_D_B/O^Y=17X,1'Y]N/;F$S*3O_Z#/[?L-N&*CT;P M).Q>7/OD=6]79'0A\FY\![_^#WYK"2ZA_Z!-IMR3"$(T336,[JT2>,FP[:#8&H]63%8*E MW5\_4<"S]W\EWT33-YBM'E"_JA?8")N-HQQM!:KN(J*Z MGHQ>H*KO(B8ZZL^MR!V-/5# ]+MA")-;4$R=U\@A:HN^;_:2[)U1D(3T+ZKI M+Q+?C>FX(YAFU)I\/\(H2D+<2_]*?_ST8?&WR=_PC)7G)60,RP_+%O*+GP]? MRCZ+T)@R8OI,HF==!\]?2NF,XB#<\;4K]\.77[ ?C%P_[[%%2;/PB ^+H]\T M:YR$:REX_?.^% 7]9-3'JX]+_QJ3CZ6>-IZ)Y3@5R^4'4]D?+TMOD9=D(DO? M [IU\CVFR]_D+T(\\O? Q:% A03G&CY7-_^SN"PNWSP=P>+3TTE-_B(&3QC# M(DC7GK8DD_^?W#?[;3I,9^Y2HPUFPN(OD[\G+_FP,.]\,B@,D"&U_.)L9B99 MNZ8/RG[9968JF,S"S9:'4CB^4!FMDT(J30:N. M#":#9"BJHBLD@W5H,F2SP4]@@Z9_.N1EKV//M=WX.X8%7G!<\BN-=LU,W)A, M">ZY)@XO<2")G4O\43^.+E]=8N]-+B/?$X_N(0[L7^FS/GW(?<64&M.1G$P/ M=6M.\DO'<<'=((XH'%P4WS.NO]/5PG=8Y!^ZS+ M\L$]C*:L$BPPBP6GB04Z'-S%JOW2R@*7#NX!-G$=9H%Q!_=9Z[QH+X;#U*H, MI;H[R*?PUJJD?]V]Y:-Z:Q427JF[FWQJ;ZU*7K"PGW2@J7%'E.WM H4[HC5B MUL$=T=JOEBQPJ>YN,A,.V"D85W?/^8@.6%7Y"$K=G=X3.6"5T;_N#O"Q';#* M"%]WSY]XD5 M?Y6\8&%G]T!3J[L7>KS(6[G4S*JV^]2Z>YNGB;R=B%DUSR>NC [<7:P#E[AO M64_&:=P1+9HK6]D6I<8=T=/2GSNB)R(\=T39X05CCFB54^..: FCXP1')37N MB-:(677?+SV^ W8*+M7=36;" 3L%X^KN.1_1 :MJ]U6ON]-[(@>L,OK7W0$^ MM@-6&>'K[ODRX(!5Q@O&2OY4.35FLX:_NKX;XV\$+$1KDOD]N7T/7T81CJ// M;]_1OX/PRD/1$NA^! "L,8[QY5.(*4IKD_2E,^L+UX,559:+8L[KC<+XXAXJ M/*9$AC^_$ZZ,DM$6FC:,R57*&W/>E^4!?),)CUMQGG095RP)SK M#9; U.W^#0=/(1H/71MY,T/A.@F#\3:/NC"S/R>1ZV/"39OX^!$-8,TQ]E+] M\I>D'Q$GO@/_/7"P%U)MVHI2)-B[=.E>I5*9VP#? H*L4 M^^Y)9PNZ<"\ZL!N40&[X=^0E^/,;787R[#(4#2OSG&:O^Y[6@H?Q?@WQ?Q+L MVV^++YY>/'=I=(_M) Q=_^D 0YI^_ NA*0KMX=LW_(R]-:.Z\8FY&M$KY-H8 M1LR%9#@0JP2B4AL@,A;"VAR4 M]5RRJP0EB>&@9&CYKA*4==Z5X:!D M:/FN$I1UV*%I$C+JXP+78F56' M*'^3D%$;M\BJ0ZB]2^/(A1[VMJ-/G;"[L.'_I/H<].4+"IW'M_$\;ZX?[NZ:*2',NM1+;)A\?3T: M>\$;QK0.[>T8B@LTDS',.=J'+R)W[BQGSL$_?$FY8D#S M\<9W$INF9%,^5'9ZE1UI*YH)H%>7"2#+S$83BD" GF6^"ORTY2!'1"6(8"[D M40(1%HN&\3RG][,*F(N!G"SF>28FM\Q<$.9DT71+:0Q31%-"&R@QS :/#KXL,VG8P2CUSK/(;(C\@G M:#CG_#N)8KC[\,NG=H+E4V$VKE0/MFG%V5:IM#$;]ZD'VTYDK"K,!7'JQ;93 MK6W,16)V9]L/'/_T0XP\]W=HH?R,4\;]AES_6Q =(;!RDE6.V_"P$GL^#9\P.&S:R]6 MGO@WMFEYB8 \QW\BE\;!B'QNZ)+"G _.*'].M<(PZ:\SR)]3+3A,.O$,\N=4 MZP^3GOT&_ES]N/J.[*'K$]Y\=<,HMI.&IK?J3'KZ;+'F5*L.DYX_6ZPYT8)C M,!D#8(LU)UIK#":C 1M8\S@,,?YR%[KD!< <'WOD?\U<;0PF(P.L,>=$ZXU1 MMRC!J23G)"M.W4($IY*T/+T)AU<_./R9,3K21FW?S[(\O)*183 MLVYN_9'EY,#KR0?W]2+$49"$-H[2/X<8.73PCOO<^T3^H:QRN\@:(-V2'&> M-$T>6!:6+-DR9&09@ZZ*_@7"-;LGBM\\PK*1Z[>'V'T:QA>:/HX_OKA./+R0 M)>G_M.AUO4_1&/F3J^W "\*+/Q!^2H/!QP$99'N 1J[W=O&G1\*@2/B!7X3[ M8(3\/XD1F5%V3>3^CLDSR>/IGR_9^R3I(_B-D_?+BO1_/L*LVPZVX100X?9% MXI.YPE5D.(B%80C$]QW\N050:X.H&:KTBE]?55GN#.-1J_>(^AX6@H%P!2ST MX^C3!T3H#E2%DQ\S4JKCN$7O(3,! ORYI;:6)IL-GUPI M.$$"Q "V?APC!_9.+R1!)L^8O. #G7D.BNE4TUG;A.8X;*W%+7EX2+Q\O'Y8Y#=; WVXOOIY?_-X<_T@7/[X(ES_[]5?+G_\ M=BUJ(RB2KG79&'&>)FGU M_K7^_]8..Y/M.!A?&.0E#*#FZ^W]=^$367W\P/^1C,A#;"%;I.Y!'Q)+H27X M"*P ![L77P([@245VE2TZ/HT(!?T9*G]-[J&S9[2*TB$5DV4I=+I=C?KRL)J M5^M8X)W?-VC\=! M&+<$VF F)L;F:WPQ<%^QTX[#9"K@Q%/X[S\HNO9QK8@#R^J P14=2 GXMY^7 M]X_7]]_^*=Q?W]W>/PIW/^\??E[^>!0>;P6RK#Z2M5.05>'V7I#U=\Y[X?:K M\/B7:V%NQ9VNMI=7C_"SW%6U/$"?0J(W6?N'(NG7(!2(OR;\9X(T(76$!.(? M86>'!>>.WGZ=>E>+@'7(-^T1><00;FL[Z*W]AE'8QOX$P&JK]]?$Q__]!]F0 M/JJ2*("!OWF]FC%MK7&ZM)AGO&D#(P@5E(Y.M=61[:@@Y.ONP=?=1BT&M,8\ M[0NY?C48("^:+@<:05E#5X+'^\L?#S=4WS=R*3C1*A!/(399!@9A,!+F/"8A M#A;^7"78:6($Q93N53 :N1%$,86O+E&I1"KZ.+PHL.Y$U'8*L MU.89HP$#!X M=_V*[)C.%>*(X72. HJ$:(QMB)L[@NL+;AP)]I!:3N\;MIQKVV..%3YJ]_4\ M!0D36K2L\!"YR,IM$85$3U!>I2?MKP)GT70F1H8-FQLQ'H?!,SQG9C.;K=YW MU_=Q%,2HVM6^QJ1]1*\WV0Z73A&SDN/20%&LZ=!R*]+'Q"OOL[_?M]#4&TA@PWG?O.0T?(FA&& MPB)$A!]!ITAP2U9J$MUBQO;:280O'2?$493]YQMYGCP1WVZKI^N:)-P1KF'" MQZL0XU_"E]!]Q@6"!9PC^W'DBGR\#1^#E^D2)$MD#4)C8M3<>?^_.TYMC8QN"@B6JG?/ M8$G,Z #+WS@DZ'+'R!/P*[:3F*@1\C59%G#4H,6/\%H 9N'L,4!9_.4003T4L Y@(B)"7TF0<2^[#Y$<3"Y1ARSP#I M3+/C*UGCB$T#@!/I@D?^0)FR0KXS^6K@1@2' FR@$.X,( SA/V'B7L-**7@H MBH60AHE+!":./-4'HFQ#-W;)P](8"P[)!,9)&"40;(D#X2$MY"#(RKO^>U#5 M$*2\M..+A@5;5*.C*EHEP19%ZTAZ_BUE'T5'I>\3M\GHG>ZTC6,A"CS721/, MLI^ 44N_E%Y/4PXRC81.:B N9"PVD2(KI*/+R-^H'WKI ! MM9TB8?J&QE'K1Q9BI@#"KZD.%XC">QFZY)N95BQC@"\F=N83[<#H.XF%6]R$ MRQ:>-UGI4QF>FG!ZND5$&/ 0!_8O4;A#H?!WY"58^",H=EFX(TOOPY#80#N$ M6CECMC$FTQZI\IAR!;:3[K]]/C[%#ZUV&.?&1$RN,\64;O$MQV! ;2V%7TRB MV<@X_QF$OU)!$B:/V!Y8*.6+NCY$<"\4\Q3FZXWO0.08"_TW8GUC,LL1I$B^ M##$-LH.I.K=U^$Y^+PQ11.QVCQBYR/,R\QQLW_\D+EB^Q.#MX^P"\LRI\:M" M2#[-8LA,X#G+>4)9,(OA9\AB$!SR*UF$X=)QB&U,EV19$6CR522\(\\C;!2B MA"PRT3" _B]0U>:>D<^P3,)#?^U"'#:ZG MEY*;8!3951*& MA()I(A!HS!C%23050*O5^R>.EH7M1(0-3D33'T&I $6-= G(&!&OD1O'1""Q M1\0L#'Q86+PW 9-%YDVX@?4&V326^07%*,UW65(ULV?,.]WW";E2DW30)O?X M"=J\@QIZ:#\>6J^DXYFJ"QR]Y\J@4![!E-? ZDPW3)5!ERN#)BL#-Q*0X)$Y M8 '9-E$&T+[-H?(3PK*<^ZU D-#._2$:$2U"WA).EA:"OQ&9_YL(5@AY'%FZ M@5Y/PE,8O,3#R<\=8I1@.C8'#UR?)A'2W976NK&UA%;NE^M'T*)61FO-"%J0 MD465%_'KVLK$5IHWD#H-BQLJW8XBJ94$^^3JXH9F99G@5<]O\Z-.F%1^?.=N MEL@:7A'Y>PK"MQS?CEY$)=/.+IJY>8K4ZGW+EVW&LLXK2ME?- K*Y)+4%U"7 MRZP5FL'+H**4!F88]2-O06\BKZK-NV/_\&E5 'E89U8U R1E5SY*CDGSRZU' MJ11YO[-4#5@)KO.M[O-$SX08OU%:7$T0 M%]"B82RRI-DCFF1Y%SSJ81AQ3>Y;W!RU]<\FKR6L$GTPI SSV[ M$5T(?>3;+O+ 3(7S%7 Q])=U4.A$ F2/NLZZO!/U'7J?ZTB>.GQ2 VR4CV)$ M0^QY$_@([P@H:"PA/6NUV;,_6:3P5 &M?Y*GG&;&I5=:X&IA%:ENJV'! X?; M10ZD(\W*$AQ.TS]I*A.FT3L[38>(TG0( M%$WN\,AKHIAH3X@[TZ1* UL'HMP(C-N.P$M&P)[/ AE#S46X6!1><(@72(MBX:^)]Y;6 ML%"Z:0V+0H%'-1]$M8A$LE^B;K[(XCA(+8F+$,/NUC->*;LX&P)]MS2[!?6C MP$OB];>L2R+N?>J''W(K$98M)&E."TD.PYF1_83;_1"C7VTT("^]0-X+>HN M+KS:Y.[#J++:9([(T^$QD!^_>ER?A0SY_+$^7G[^=@T%.ZYN?SQ>_WA<7^QQ MB="UT:6E=V+6?Z])1C5[.F9'M&\#8HE6T;6MQM/&_)4JXF5,_B>7*F7]5.1V4U_*% 572)XO[Q_%&YR3*=#;PP+UMA&7& 2W%+ M;?7DSAI.L54RDXM>$69^G8;':;6%T1H?YF3LY3KW0(Q7N+IE7]U"9TKE;-7M M+A&BHP^C'#._(Y_8]J!E_Q0)7]S(3M)RE)#8>NDC[RUR:0!ZII:O M])MSWA MFGL<)5Y,+[D=XW0P7%\W75\#P:HGZ0Q )TR<"Q<.]&OU@" =?*!X*'8G*M7 .M# 5? MN59NB-A94*7#CT/"#:J1[\+ Q@XH898XS%7N@7A?3N7RL#^;G.S*D[ _C_O7 M8 7M:CSNWQS9(\S\AI^0ERZ=M(P#7SO/@>L*#R+50=F:1-E>7VV8W%%N_O3G:HD_("\]SW/]G\2-W^;K M)D+@Z&=$4_()J[\G,,1RNQ[P;A MG$9FB=5<^QY$^ZI<^]9%^QI\P[1!@F?0?GB8V,,#3,S@N;05EEC,M>ZAF,^U M;CVT+C0VY5JW*8)'N'E+:QW=^&F9$GJ4E1WF![;VQVKYIH*H5%LLSA6*]0AR1\@_6+_C M5(T"4^5UQ,J-E0@0+2)#R^5_1AZ"QMD/0XSS^,3.L-_=^$(\#)((^0ZA,GZU M,93#@6J4=%-[6IM20",H=QP5:@!>I_IHIMSIJM4TF)&5#I$TQLJ:T4$5JFNV M9-$4J*6Y>YFF6CV@H)^]N\5_I#[25B&5\-?$QX(JB;3 *!@-1RF8QA0)OF ; MTWK'JCPE@[9+CY>],<@ZI=[]]%'BN&31*]*;_>BBV4?VKZ>0+%Q..Z.%;6-, MS/"3]L@H1MK+*)HW'C;TI=XVR6WD/MK]I;DUH/_'%K?RJZ5G?3(%M#O7EB9; MFNJ'NK\B&1/H?R5&V8>B(35X;?@ 762?D;?@9&6<+#-I23A59=!BD_[C7I.; MGQ3M;<_(K-;V#$@B9[EA@#K?, #^2OL%)%'[":'Q!:#BTG?@/]JD;8 JM7I=250M9:5E0%KE?Q^F3,2L,'.J612X4#1)*+03 M"(7YR-,6ZN5$0FGU9$6T)&U?D=@ S4.L$T7,T'-&T!;U6B&"H+JR M)DIREQ$$'=59GXM,9_>WX>*+;J7;.,7@<9GV"HR$$-N8K)B$N:+@XQAVWI#G M!2]TMP Z$$)+HGB03-L+TO-F?ZQ005U.7OV];\D@V*<:BQG1=%>,VY*ZP]P>.=^2PT>J9%M&,K)B;50;FSAE" MV[1&A1 R6SW#$/7]S3/NL12&PHW_3#@5A.O[1)^S8;E%?TZ)1S!?%NP661%5 M4398L22Y+W(4?;D/9+K4?56E52NJULX'X_K1#D98B-$KGO1?B,7(= M ;^.L1]E57T">N;.+K:[?\ZFQ!9]FA'W.J7MI>_0PXQICLMN'IBFM'I=L6NQ M8F!PF_0HVO4 0((XN21*&BO>396FJJIT=#;5[6,0(Z\*S9K-OE@R9:-$95O$ M=!^A@%B^I(MZ929(X617UNW:,P3:MKCJ/D"#W9:N)EIZ59'4PP&MP?FK=V$P M)J-XHT8OY#^.X8P9W:7DYNXNYFY*SCL/^3$Q4JXG%"T?2=.@Y(ZLBZ9I,F*? M<$OW2)9N=1B"(M***2J&R@B&&G%P(Q\"OP6!\^)Z'@^[EM>;$]J5Q3?MY*2* MW2[?T6\67K;HR%WQTF4-+PTV+=.R9:X?(__)A13CU-?GMN6..I+2\V9*SM3Y M*F\3Z%"^7"(.OL2(2<#-RJ.HS*K@ SM4LJ@I>Y]CXA;E-NY_"_RGJ@]J--UP MV.&@QH_ MW>*8>D*5:62NK>'SJU/ID"TPUF-W4$$VU"F:)I[N^C<)-UJDHXQ MU$KSGP0/HPCS??W=C=$));\!(>_A);>#GU%J5I25 'I^1)4L1BP*;I >QR"M M$D(ZS9OJ\C#GP1&0EB3$^VO0IAL16S1H1L=\\*_@VVCU='UO!E/7G-N0>P4TLSC4SMZ3U>IIHIYS:)?;CG6&3I%@ MYK[0Z5+H**P4VCBG],]\I7G #+PZ5YHJ..TFB'VAS-:2W<&@.-.UZ, P\0IOH3S0C.EY?=H(78V;*MIP48_9F M/*VB(C/C;E6^^CVF*JDOH65A=@[_%IGL[!QQE_!:FIW*19V M.[ME0(U27=0M5E(6>"UK+@6E7*!*I$!-I8"7@CON8A8F&.8W@D( 63MLOO=2 M=AVX'HV]X WC>^A8BITY+VA'8=#@.*^HJ7PCIEDXVJ))*\<1' LW1%UGY73" MF7@(5*EZ2[$06@2)Y_;L9&4#0>>D85*P9NZKLI(!Y\%UT=)8J0W&LX".9:M6 MCR63KM:&TK!CD$QKV4ET,EA*0B\2K3QG"Z14)OI$)MZFYL<*]JU6KVNQDO3! MS=03Y)JO@J2<]H0:QZ)BL5*7Y1Q,U(GR'"QDG^^K.IMN6I1(0=^N.$VIU5-E M;GTV"R(ES*B9LKXF:Q,KY/FY]GS)LL3N,:(M+0V4E M;Z?!N:@SU5IMR*+I@;Q=0A;S\K ">0,:DK$2JN/AWM-%+3:B! HE-RV@R[9: M=/ $VXXT+:.FYO[:<4O&2VG+$]LL_!0I3E()?F2H4&(T MLI:8FZ5I5)Q:%+IB[O\$QE(<#E:A@7#OL4>>@XEH:]2/449U?QWV>/#B[OPT77\@6 MU4S')<9=.(DS1G%@_Q*%/VY:9>YP2*5KXVIS\^-K3G?J]"T/\)([%-Z&#S$< MB/L[\A(\>VJVV$C3Q4;;O.JM&X]ZJ/'HK9[4D:35M6_E"V&,0N$9'B<**(F' M04B8X@AK9T,+ZT3[$9:..KJ0S=HXSAAG)@]?5= MZ2B06_MZFMVVP.XV&-9, MU[E9[&D7=JNW6RL<'!BM.KM6Z\I,%\S%F)+5NLYSG69T;0LK$C2]#)DY6L:)[O=!3SN @L5)!V1F!1:8V4 M+IM;&Y=DJ$!BY!$;S77:KB_8:.S&R..)3#N4H9I2\XX0\\:_2DDY!_R2>Z.R M1"Q^3>N*78F53HL\EG"<*E350XGX:YJNBF8CTYM85;#W.$;D2T? */3)H'FZ M_0YZ=4+$ZXR&E[:=C!): /,+'KBV6S;13Y:@N)_:%56-%6N#&Z%'T:L'@!(< M9=(T49-8*=5S%H;KC&]IV51:H3K$0^Q'Q'T7O" ZGUS\=WOIVHB,G'S*J8,Y MH3!-L+Z:IV]Z9N4;(?(/'-\.'M%K:;&Q:&!'-U8-V_?%9 M4\RK.GET;)U3#G^I7EX\S7H'2YAZ?AF%KRE]R\J&++5ZAJ$1-["JXZ8\J[^^ M<-MB+5< -YG S91$6:]->O]9E =<;CU01'4?L&Q;+9LYE9MV$]1%\:-FE[Y3 M@?)0*NLD78I7)_(AN'R=NWP5/V17C7RIE369/KA\[7#V+AU+^HAUP]EV-&G3 M,RIH-LW2$"F%/\30H&^2]3*7E3E"X9/KIYQ=JEEO8X+AL$+!HB\H8,D,L8!L MB/LA_PTRV?P@!G,F)%_[@DL&]132C>TPAF2@>(@C# )'Z4,CAVFI.!=<5TAY M')&)1)W%Q)\Y$F0OU\"P&P<1W9^["*$1E_N,/[ZX3CPD0Z$@%H8A#$-80\:AUV]#HINA2J_X]565Y(\@UB,$5K#@$YY\^H%X>DUF1^?SV\7=A$ ?"-R)"HG#CV^N%E8&Q7LVK MFH>I@DF9,+]9D48\69[*NQN?Z,\@B8BO2"B/7VT,"\TPU;6.,,;AY*\1[?3Z MGNG9_/11XKB$+>N'N81]L#*H!"VNNF2P'AI'^&+RX>.DYX#KT_?2FSYF#\N6 M M!GRX$ ($KZ\TS5=:14W64AB>S-V<\=\M.'U>\UM6-J5NY/4D?._7[=HV2E M0]1YJ4>M_UZ3C*H&95@F>X-BDE*2I6]\5+Y-W=UN4V^P[XM9J_P!=7G EJ#H MQA=V5R[+"4VDB\#!G?6"2\,C,:.P\)U<-XR$:V)=.9_ZX8<>'"005$DL4 VC M:11Y<%\+TF,?J)3!)O,D _N[2-V4PXMQ'4BE[2M432,(Q\Z.V,FW9V1E@T%S MK!67OV=/0X/- F)%U] %YS_K,A+XT04+U;7X_17=7\N*UP5C[??X&?L)WB=[ M[G0;DP7G6'IG\L3[CP6G568#4M^6/4]1\#4,1A!&AB?^PXV'5TE$9H;#&]_V M$J#(911A\O_.#KF;,G3>4G51RDD,KNV)-RXFS1(3X_1B IW%%%TTU*H:.G(Q MX6)2L9C(IQ<3..=GR*)BK-8.X6+" IZXF+3-TXL)G&'455%76%E-FA$-6%=> M+J()26&^3U7FR (C!Q..[XD #6\'OP6!0U,AJ8N M*E:7D>.[YWD2_/A6>H40ZK9Z1E>4+%9ZKW$('<>"K0Y"BD3\.4T7S2XK500X MAHYCWE6((1E"9UU1E_9V=MBJ1,&D%?=;&$21, Z#@1OO4VF"^5.GQS?N*&GO M*&5+RX#2ZNE=T33WKNM3AQ-C'&=[68#[X$PE.#-$7=M[N>8XJS_.MIB)^^ , MML-D7=1,]H_H<:"=VI;_*4*&&&@4'L^0@_TG KV/L1QO: MX>XW8Z9D@/<:K!^EF+F_WO4."_+].PI_8:H7:+D6HKV;4-_P^+[E _8\V"SS MG2E%KU-%6WK%-&@%0[-)&1@<0@7\[!S]@+QG!$ MA*>#[)28GA*32,.7&2EWE <5]F)E439Y@ZJ&H6AKWG:5*))IX7^.(K90M#7KMTH4J11%EM*PQ!"V+;S?L(^A "$8 M>,@9N;X;Q2$M%L@C=[MDA:3D) )QN4#,764"=E8MT:RLMC!WG!G!T;:LCXIQ M!!NGAJAW66FKQW%TI*R.BG%DM'JJ+AHY+=TYCFJ-HVU)&Q7CR"0X4L3N_DG M/)I7[DQ7)-!BT-@1XD# KVZ&T5YLF#!J0I^L*MA2-EFX*T%R+PF';BOV&G_CL,@#SA= MR+2Q%%GYR,'3+/"L6'7[JQF-;ACL;;=QI+"%E&UVV_YJ1I-94S.5]D S&376 MTA9H0?%,6YZ-ODO ;IK*G'DR45E71H/#7)IH256%5OC9AQJC;8O5MS_:X$B7 M).K:WHU1.=KJC[8MP;_]T0;;#Y(N=OG!+@ZWK;;F_G"#70I)%F6+?>W6Y.-= M::LG81 &HXD!&OA[!03/45J*&IXIM<%)*RTO1JNGB5VCJMCAZ97SN31)/Z'E MN0?<3&)[BMTNAQN'6V'3U FJ*F3)X59CN!4U/?> 6Q>*58N64E5M M,X9LS_SX)Y.VYVT\Q*'@4C:*@H_W*EO57'G89EP"%7\$?K H%SMF:^BP=22: ME44X:^;J-Q=%VVS&:E$$9TU$=?^C)AQ%;*%HFRE8+8J45D\597UO)X2CB"T4 M;;/PJD41G#41%8.5--8SB";V,6$1SBP[(4:O^Z48GJ,3M,7HF_D^DS8,KI\0 M2LQ:^7VF/$BO>P0.7+_&(2*4='T4OMW$>!01$8.7A@$]N'\#K31Q5+I0FZZU M>H9H[%_@E/ON]8?M%BN3)=CJK9Y)3%0>"D_FFG[&/=ZAU MK%O41:TLT8\'.AB!3R%S>'_X= $^EL)*A(/#YYAFZ=[P,21(+3+4!O6WYO I M;!WN#Q\94H44LV''NYDTWW[@.#/:#F,N-Z@[;[EY-T+>MQBK!#R[I\P8"BP2 MFK*WB5J'L ,7)BY,6TSW_81)!6'2M;.(/7-AXL*TQ9'93YBT5L\2I1KD+=N/V'2(1'?JJQA[\&C]),13*E)1*7:$$*!^^=FJ9*I.$'2]_#B-'=] M-!\:ZT,[CWB#,,9$UH8HQ!>\UUN#[C^+PM>?4>3:^\0A&V0PY%QM00DF:&D-'J21VY0:GG'._-Q+M1#=Y-BG=6 M-G$XWCG>U^!=K@;O%N"]27O>'._-Q+M9#=Z[%.^LV#-G48/]B^LE,7;VB)FM M"SXT3(9+3KQ1XEW.7.%^QO@W 1:KP(E?. -HB0S$6(B]!9 MBE YIVJ#""G5N%5@%I'=76T^QX-(T MC-T[F1N5L;N;&ARFDMMIC+.;#8.C*G9;$I5NI2N+BE:1?T<%$])C?S]C]S8CHFKD"?16,QB$>8C]RG[&0ERC=4J#" MO*DWJ"<1%X9F"<.6:D%5"H,*37&Z.C^YPH6!46'84NVG2F& IO6RJ#6I2Q&>[J8 3YKTE3YB7<6@;:[9IF=4D/#&A]BT M(5*Y_(/Y/7C%#XY/II"2MI4=/:&+IA'%_]/ ZQ@&Q(!43^ M&YF*X 3 *R=<^<;]C_!0B3QBC,(TI#7&$02M1^J 8.\+ ]9%ON^2B*"9? MC,A$HLY4/RR3('NYII/1C8/(!9UR$6(/Q41G?7QQG7A(ADX5X]Q=&6.DV2VH M3T:0Q.MO.2UM99T,1UVDPOR_,%!0M6X760.D6Y+C#)"FR0/+PI(E6X:,+&/0 M5=&_%.*Q9C<-I_IOC)YPNQ]B]*N-!F1N%\A[06\1(' >;@1K\_1>)M5:@@P& MAP!;"G>RY@1IQY@+LDS@$*XBPT$L#$,8AK#0CD.OWU8D13=4Z16_OJJRW!G& MQ#9X!+D&,8#^-X#S3Q]0+X_)K,A\?M3X+@SB0/A&1$B$F/%Z865@K%?SJN9A MJF" "72+:1AXA'O1GX3K_R1N_,;R5-[=^$1_!DF$?(=0'K_:&!::(=6U(V(T MQ='[M>-?@A&8/12,BPL8F86'QA&^F'SXZ+C1V$-O%ZY/!T1O^I@]+-.JH!J6 M([] K?3GF=;H2*GFR"+0V9NSGSODIP^KWZM:1S;,W)^DCIS[_;I'61W+S/]E MW9/6?Z]V=3ZF,Q^3+'4L26-L4$"HS6/*]X3T[9[0AL*IQ:QC_@#^@/H\(%]. M%&N#H&P<1'?ELIQX66I:'#RT9!5-#A@%/C&: OM7@3R ;2P(@Y?TLU([2ER2 M88*IC[Q/_?!#[PZY3OO&IY^OT-B-R?=G39]['"/RI4,I,CE>?-XDN;3M9)1X MU.VXC8OP:R7KM+JD M3G$%TG66,U);[ VIS=0A&;Q_C3:GY>X &=55X^+[%;PJ :%P3C" M3SVK,@COED=XR;P=J]73=%4TI;TSG+D,E9*"E'+IP<-H4N]:J6;1R/I + A>$HZX&VJ$7@Z[< MZAFF),JZS,AB4.DQ3HE9;&?;CVE,0G"C*,&.0+[ KSBTW8CFT05CX$,D()_\ M!+LLHI =7LYN>W'CX1![#C =#C0+09_,B>;MK0^B*^5HF:LD:B%/:ZIT*%L" M/E2H;BA#OB0A(<,=&5:0E6R8M'[!#FQV83^BQ"X;!^HJK9YN0;$.1@X05'": MIK'X^N\_6(JL?.2,88TQY2Q*=?-2>NG\.XEBFCW[&,PR(B 9XL;/TB#F- /\ M"T'VJR"*H[QU56WUNL:J>!#H:QI]\$6%NPY8YBX,/!YI2Q-(:$H&J5@22AVTU;LA(PX8SAC&''9#V6X M@]?>7_;:[_%_$C=R8_R PV?7QJF??X_MX,FG3_D[\A)<.J*FT[(Q.15V.0Y9 MPR%7$)PQG#$'T]Q5V/_'U-P&6YK[3'9"[O$X">TAX3$]MVYG&R/@7'&&5,I=M#AQ1TZ)XBBY*Y6MN9[Q8=2F9!6'],FRGSW2$>RN*,X8SA MC*D/8ZHTX\E*D-;@AA(QI==O!2*U>G?O^ML<-%R:SY4Q5=KJ^TFSRI8T-V?? MA3[K O;17+L (F@E+YK+M:W%6&4>,+^?WW_L^X_=A/U$^OUK$)(_?<%.PA#[ M]IL0A\B/O#1'$TWWWKDCS@T1SAC.&,X8SAC.F&/Z5%M:65)K/*=I&;A8V=I^ ME2WMC["RIZ^\])W'V3H_2[';L=69(D'C/U&2]NZ"R=''%OJV>/2,H$]G"WW' M[C%^(B#!-EWBAY@,XG?L"$_(]2,H3N'ZSSC+V"6?A0@3W\*-W0T5FYNVP\U3 M#SAC.&,X8SAC.&.8,.-V=")^3E?WOP0>D.8WLL:#;7?K/TQ7]I#2)UZ,YDBJS F6(NKYW=SXN4JQ [-Q$JM3Q?V6ET=FA6CPI MLDJ$RQ"MG'8;I8_[<[$Z.I!QUK*&.*Q'.3LY.5ME9:DW84NRH MZB7!9'Y):$X-EE(UYQQ$V6Y4Q?8^#M.- M2E&D5L_414U=S>I?<8V/&1&IE2[EI:4894RE>Q0'[*VAR%"R1Y/W::W!X<08 MG$[7JH6L* 1.AFIR.+$,)[YL,,J8*K*#NZF)_)UD7AADQ\ MJ^)/D;] M.>Z4\Q0&SAC.&,Z8!C#F&$;] 3J\*!8QGE;/-7-\U1E?#,&KRQ"\SBK+K+(& M0D5\9'X_O__ ,98S;,ZR18U7V)M%E5H]0S1U]FN+5Q1<.;GJWMJ;Y:^)CP55 MVJ,URV+%F71&*T5GSJUQBV(>4[JEK6VAIB^J4D73EVHUURG<4"Z*7!3W$,4=^B^5-/A4:"?3%;L2%U8N MK%Q8]Q'6@_=^4C585+NBJNW=J(8+*Q?6I@EKN;(**VVE#M8"1]6)V&JB;E10 MEH,++!?8Q@AL&7DM4E1G/RDU6CW#T$13VONHUXEE=4MHU'&CL8?>8()XO6CS MJ]BYBC.T85=QAC;L*L[0AEW%&=JPJSA#&W859VC#KN(,;=A5G*$-NXHR]$., M^AXF_W7[6K\S&=^9ADJ6-)&F.# D)M'E.F M]R<_9B%?Q4IU0JZFV9@4W%VY+"?(;V,_QB$CZ9M94W :E"Z0W+IK!2ERX,OR8:\? _75S(B_IS'O.9N#25^PC4=]' JJ M3 \GJ6=0UZ7D(2-5.N8A(RA_I(NF(HM=?36'Y=B'C!J=EM6\]"JIBD,_4$/" M8.20/X_XM!V(RP$ R$8 Q\B ?GD)]AI$04?Q_!+ M=MN+&P^'V'. Z4*,7H6@3^9$RS7O5L6W7JTYRD9[]"W1'BI.-Y05\V7STL@/ M_?K^QAY'$!SQ.0GM(>!S!7H.=[504/"Q5 M]TV%]1[U/KL*,YHZESX1C-@-\S892F\G6$1"5%VTC-6J]2MN-@^B\.A6O1A3 MZ89",3G<;:'JMGJFV)65T\>Z.)RJ@E.1/Z#7/$]-:O:ZR>B"]C@49.,;R'?>38TQG!&.5NOGLN@&P MY9;X(2:#^!T[PA-R_0CJ';C^,\YR3LEG(<+$3W!C=T,AX*;M5O,T LX8SAC. M&,X8SA@F-EE6_(%B)MK/Z>K^E\ #TOQ&UGBPVV[]A^FJ?AFZ$?EI/G5JDY%F M$"-M]0 YQU>M\;5E$^^8^#(9PM=99>!=5;6[5\3UYO?S^P\I4U'5-D0)5,Z>,W):GC=G,+$Y:9=.X#GK I:%8U*#*F*1B5E M]
  • V+(T/9$$4UY[QK?7*18@1@7J0TB=? F*H8"9I4J:O+> MG82X2+$"L7,3J5(9'-KQ6K(8*FW)8FG[9&=PL6(%9N^?M97J3'9 V&S]LAH:50DIG2#I>[C1X3@&NL(8>JLGFX9H6A6%Z*K? MU=@$!N:W-?9*5"\N$:SG%S>%G:56V")5X5:EF];SH;_=IIKX.E/.3MX::[1Z MIK3:TIOCK1EXX^J#LY.SDU5VEED-CK$8F#59#)I37^+X77'JF*/)D[,Y8SAC M3N5GL-9;P: I=8I6U?X5QR%7$)PQG#%L,*9"GX YQ=UE2W&?R:9-U4UQ\JG MJCR5;8I3;%/E0$UQ3*G54S5=5-0"==6/&7&IE0KEQ7T894RYM)W3-<4QY5;/ M$!5C-8^;U_&I+9Q.URS#5,#N,??JL<3AQ)>-L5?HGV.,+8RM^.TGAYC)",3.I/_C<1J_ MU'%'EF^5<\9PQG#&<,9PQK"PQ;+J#IRL,8=IM7I=N:(SU!Q?;.!KRQ;>,>'5 M90A>9Y5E5EG?EV.D-?'[S_O^ H&;,^S[LD6-5]CVQ8*#7&)7KZI#%_.5*T^N MNK>V??EKXF-!E?;H^K)8V":=T4IMF[/K"=,]8D\82Z8]863-% UY]716U:DV MQT!"I@ MW74LG8AM5]34"@HI<('E ML8@2TEKRO=L"H74\B$M*"(5=W]UBVQ4<>-QAYZ M@PGB];+-KV+G*L[0AEW%&=JPJSA#&W859VC#KN(,;=A5G*$-NXHSM&%7<88V M["K*T \QZGN8_-=QGWN?R#^3JT:# &Q=@1!JZ/ M?-LE%T4Q^8*>GNM, T'+),A>KNED=.,@HCT'+D(,AR6?\<<7UXF'9.@T]C5W M5Q8@DF:WH#X901*OO^6TM)5U,AQMD0KS_\) (:KF=I$U0+HE."L%+U(!YOKOQ MB:H.D@CY3O2^"1/ZZ:/$<0G;UL]F2=+((.DZ/%M#Z&X"&:R'QA&^F'SX.%G# M79^^E][T,7M8MO" ]ES:3*!$27^>*=:.E"K7S*3+WIS]W"$_?5C]WI0[737_ M)ZDCYWZ_[E&RTB&+1ZE'K?]>DXSJ!J5N?%1F!B_9"%;*P_Q]U:U;0]M.7]3I M 5O3M[1B#44_<6$A+ M>-YGIDIT*3K-XME/>[(Z?M51P6F72EK;D M!.]51-LR6SU+E/8_9L-.!3<._V;!_Y -(2RH6"):TFIAN0;4D&=X\9IKSRO$ M@1!BPG+;];#@3UPMBJ M(:6J- L5BUW)^H+'1)K7:FJG@%+Q0995JA?\ "'(=&F,7K=L:1X+0V,4J>.5_3G MFD/'$V*FT9%']'J=KDJ?L8\';EQ:)E1:ULU:-3)XFX?:8FE%FQX)2[0/JZRM M>C^U[N? LFJ]@0UF',70Q"'-1\6"A\E"*01],C"Z3#:AB=>*A<5.T8;C88HH6P84!GCLCN&#^I$7=!]@8,_UF-$9NF.[>T(,)8+$' M GYU8QIRMKT@2D*:!CY MNOMWB"HEA98E;%G@K @0MYOA"KC'T%,_H;[73_! M3I;)$]"J^E!=_];_1^C&^$OPXN?I&I/87!HK&YWP/QZ_446,_Y.XXYV[-3?>@-NB M?.>D+2,IW35$_A.FW7_G,C&C",<1M3D]%_4SEY]G9?*LS.-E9:HF MNT)S:=MD%C1<9F/W&S'6B&:U5F!\]^L#C5"?7BPM(*;G PC:WJ!A[ZTL&8UDLZ\N[$(^1ZTS2 MT5/_+#BO -I(FEV5\7/H.#6]<4N\X3S#,5D]5^9YL#7!4Y69 M=?BQ(%C:/;W?>?T],8;&+OX[V$REUF,HSOTMI,;#V/H3-P M H.;G2?4D]M HK1ZNKH:&.=QS@-K1UB_YK=2]W3=&V\C[&IV?IN1>.)M39,1 MYGXK:XO*:JMGBEV+E0/$W!8]L2UZ*)S!/I2H,U/FX)R*;Q8J3+:/8;M'N^+: MRM?V6I>0&':74?WSV\\(_+R<_+'2D@0-MBVQN_\F12GNU2@8 M&JV>JHNFM;=&/S@,=VA)<*@,N/V+MC,PLHK6SM,OF?F%QV'_.*JB\'@1M7:* M^\^E=NM=$MI#!-O)<\?-Q-E9LYFK2DRDL1LC+TL//A_/M.#A%G8LU)M )KC4E,'M%4&3A=Q/W3(VT]'Q!-5JMG$,-EGX@R]T)+ MYO<$A&!.) S"8"1$A"''T/\S7? M&BEKVUX^(]<#TGX-0A")ARF!O^!^:9-$D>&4ABCI^YPGYA9NO93J/I#:N% K M"FO5.\ZJ(!K3Z\."(4[&XPDA=O!H3*MJ4N.;8"R#7;5K2..-J!*V^/[2KMON2HZ%+;7JW 23K_G M7Y'[T!0H'G[/OPH PIZ_:!A5'4)@>\N_HNW7 VSY'W]D#>\U_I7V&:A@RY_W M&F?)OW6C**'](X@C:P>C40!#">Q?Z:^PYQ2_"6,/[=A/HO$^1@F/]B8C]>V M-K:*?OI$M=R0+WRZ2> [^?VN8#,W(I=Y"9"0MJF[36,1I=](LI[X<6-AT/L./<\;XN=C=A]"#Q.AF-'V=G!%"4O-E])2(1.[1WW3&"C?S)WA[M9\9;9U:I<],((?X&U)R2 M?")!>:( &^\Z+TC:((1L4:>E$0*;Y=IJ#3!NAQYZDSS;(\]4)#\&?\IM\>G. MR^Z[DBH.-MX^O! M -LQ6,/XU:;=@(00Q5BPL\Y !$YT0:"M@.$#; D^$Y;Z^YT!;HKP56@_IZRX M'5QGC+@G?+CU00KA?] ME$V(%$HYJPIKR2X\Y8J=I84%G*]"V2)0-E>SMAA*&VQX31'P/=RLY!JX'M4N M.[4,95:XN.PE7G=D^(&S6@\O$[IY04Z%N_1"0LM]JS+/3&D8*K<$A-A&I08; MH8JHZ@T[J\'J"G"U3N.+0A\_N;X/<2BHB4$9S[V/:-[- MT$ U5D#0'UD256LU^LY:3=H*G# NK%Q8]3I+JT:DU1!EK2H/E*GCI.E8TD?L M>O!STS/F)JN27YP@@1HME3W^V$.D%/Y "\V0_SKN<^\3^6?RFA$*B8N<^P8NOA_$T"0G)%_[ M@DL&]10B3QBCD.Y3QD,<89!Q2D;(A)]DJ9"+HIA\0=.).E/16*94]G)-!Y($ MD0OB=!%"4KW[C#^^N$X\)$.G:F;NKHQ_TNP6U"6:S1XJXG$ TYC)\=>I'#],Y7A5C(N!%O+U-Y)"D>C:=(*)"[) :\_) M'X7,D/F1C,CC[-4MG453Y39\0K[[.\7,C'#D#V)PW(5$+?HQ_?-V,*7DC)!@ MD7A!E(3XD;SBLT>3UR=VAIY:3=12W[,GTXMD;VW)K$TI/LPXE/B+F7$R3'XE@N*/M $W)$1 L?R,K M@B@0D[ CO*/?>/0+LF )5^GJ)@HO6!022FAVG6 M):R&H4-ST^&()OT[\6EUHG&:-@O5H9^P3^Q*SWN#W_$X'31]VT^?3H&.D8[O MDG(&">]^=AXZPF^7EW?OZ9G/R21G"ZCKIQ8JL JB(_3]\$S7)R9P8J=%\,AD MOY++!%EJ_XU>=@E6(5%,L@2ON\=/B9<^XZ']OQ,\5,].^K +J(#MV@48W#G< M2#:^ET""DC 8NS[0A-8,],GZ"?A)\;%@_^29,P)9%CS(U()ZA,CY=Q+%Z?<^ MMG$4H?"-,A0) ^2& *:I>&8VTP2"5/.8'Z/Y9T_/0L [)_:-2%X9)5[ZC9V.:D6HB@DWR#75_, M[+GY*8%MYT;4V/,!C!X,Q4["$(A#D#V*.L*T/<]TE/-XG@P&;$AB34Z)1-A* MKG&(*("M!R^8W!T/44RX\L8,6(43@;6/!?PZQC:UJS/>#ESP3(4WC$+@)A)> MAH&'UUO83*CR5*$NB$"N8$&J24"U'I0ZH?INJB4)/&C=V6A.8$'YC= O0J8H M)FY[G/7S1%&43&J$4C"A-+,2WDM&$H1 4#1*.R63\:0E^\7YOJ \V=,EF"( M0;_"^5WX! ]/'T*/_4XD*(%1H?3YL#AMG",\PTFH_,S&0Y<3*B@=X=*.$WH^ M*I4&LMQXM,PI^9FN,(Y+9A.F16%2@9W.O@-+@3!(0MJ18&[]@.G 381>5,5E M"^OV!15&FQF(H"3(_2X-L\P6N&5==NG[,/Q[.B_(69VL3O\SQ3 %+_;A(5^( M-ACU<9B&4%19%(BEK8D [8'KX;E%;U;GD0YJDE( [Q^Y4030>O=P??6>OA+W MPP3TL)(^4&=&E3 NJ MKWP(Z/B./&D$/0XS3=62PAGG""_F5^%!$JSM3E): M7#^!X N9$JP6&=KH4CLO;9DRH/4B9RHB6W83G\-X(0 M(E1$HE:Q^C#JEQ,B3J!4T7>,$ES[.IT"_JA*V:I2.PN[80KVNR6("N M4E-/:S:+.:B0"?D."HG'\#D@_Q'>?;U\^/R>%L86EWO+A]^OB>Z MM4-?T9:ZX@$U44F=>..3A14+C^B5O.#=(W$_;<'4I/<7PLT(:A]/ !$(LRN% M69@H.I%*%5.(8G\(BS\U H4X1'X$\1'??H,EUDT'##6KYE=HLC 3PYFPB)Y8 M31>TV>^3!7SB4*?V=&:>TE-/1) " @YBDT\#(+,WD>>/D>O 2CX307?.+"!/ M2@4PAJ7^*7'3$ YU3.DB3, 3IX*/GY&7I/XP#=9D\CQ8&@H\D(QDCF2,"_ /0&DFP%HFP$0TIY+Y\',B M>UI;4MF3O:FF%-J9994:N43^\) X>!"%R"YM$_>"^GP@@NCI*<1I-8IYB23> M1M*/J2 KBM2FLKQT->'YRKNS!Y].H%^&KCT$Q$* AOI@X-2E2FC1H>T'Q!)' MPCCI$SH3LSPB3XLB !!JD0K]$E$R. MIQ;Y]$D=BJ(,03!&3!UWX PU[5.IG4249HG(=-=K)L&R3B78$#.ML1B(VG:; M*:;F/5Z4_I*B/S\10F 'QW"_CQ=TPO(:/Z\,*K1<378M5W5'RY6H9F A'#R@ ME=9RC%4SQU@U5XU5..N422EAL9#6$Q+H0W>S4^D[&)GVE!)3VBUQ$_P+;[*1,GT/D>@4/M$<5F"*T<"%1>&2W-6> M/GM"P!=<>$@0[,P@+TP@OXKP="<0GKHV\2Z]:27W;C[U3EK6IS#ZR>!GD=;K M;.!0K?B*"FFVI[VL?B]I,+U82ITT4]%6JZ?I75&U5NL*T7F6G*+!X!2[,$5% M5-35M,%I/)P8303I!('Q,,KBXG]-B*F@2CRRET;V"!; F&*&$(?T;C:^F*!^ MG%K$WINXBXS([,F(+A$9T0Q1-E<+D>\R19/!*K5&GM3-1"YKQN4 M@# 1 IH,, 7!K*LF^XP<=CS9N#F$3:^+2/O> %]C]I'DZV3VG/=!K0O4]]/YJ* ML,$WNR@1C\R:KB[DV9-I>V@RUY%2^X/2)*/A@](W/BK_%(VL[]*5[7!=U?B3JWTRPT,[16.\(E5UNGL=1$_M M0P:.HLL:74;!%?^>6N'78(5_ZHA-+?*^=&PP?BQQ2C8&/J&JRZ($"( M=S2Q*T@B8FC1/%*:@YV&O<'VF@7!LV34E0IWU:H!YI$S'^S:1((3JM(ZT% [ MF)HZ&Q)R&%8-P\843,O7]3^F_O-AR@:Q7/B"$J!XX8MR\V:Q\ 6=<*G"%UM[ MH*5[0DBWEAJG+C9%]/ MFM_/V/T-#P.D2=7MU>3EU4S.BYVB=-O)40_MN4N2ZC\RHEZF-/U!TZIO!S3% M([J=498RH72*EIDVE98D4E-F&1"5;,XDJ5U=#HN>T M_3SK)SD[_#-->-[-^F#5JCSW^\^@16H*Z<5C82O'U+A)7=*DIBV[X PV\M*3 MKZD6OHSCT.TG-#_W,9CD4&,G:Q!_&890>ROK%5]2096]\FM[A-P7R7"3TPS.6>WFK/_R';X"=@//32ZHB:=MV$^ MJ8=PP##A/HED=4;\3@'$C!\K#FAI>.LTT" 3ZT;O5F3=G#(KL\Y V"FX6!D0 MC#2\:"IBU^1 8-@$.C003*H1E"[Q=[2*+%X.A",&)2L#0KKAH!/;5]56RQR< M9Z9TWDGC'8S_"GJ+'N_6KK$$/68[WTT]K%[P;E>#=E"C>]TZ0 MY'CG>#\LWN5J\"X#WM75BF(<[RP @^,]W_7>'>\*Q3LK]LRYY%QD(9 ]SA>L M<^(:)L8E)]XH"2_GL620RI-QM1H;KAPOV#\RQD6H\2)4S@G:($(:%R$N0FJK$X6+IY=_H*F\ZQM$+'XV0 MOF>GOG-F;M\YD\E.!2'>TL)J6Z&BFQ]?U_'MCK9YO,G:P'W!Z7\7\[4&[BMV MVK_C,,BS7*P]:OL==&#=5L\/5M%(9O+K0.HU6&X4#H MTP2%3A*Z6:/:M L5[=.6UX@FM=LFW6@Z*YCUY,.#(C.HIS*$HI/^E%FOV4=B+64F%!T,_#\X*7J'%] M.62S=(N(=8\R.ETU_Y<3-IL@/RBL="@,Z):AX+G/N]:P7JB^"P,?'Q\?'U_3QU;7H83%U_B/PR;A'8TR4 M-WH*,2T@6<]Z)L4F7+?CO\5F52HQ2MO<#FM#]@_U-EJK3; LN=6S=)F1$\ 5 MF(8<\:PC_MV1(#_G]\V[?'E"H+1ZIK5:37 EKLGQS_%?%XU/W.X\J*NMGJ%S M=<_ASB3DY8."0GOS84?=/-!PK%9/7QW.XC&E4^ZFL;/IN N(M!)J9IH M-K_&ID @&\0L*L1!C>^B3USV]K=UEW)18F#/I MW.6]MBNAM:_O4Z2!PFRA[$IDH51%1=G;-]JP/W[DRCN-!5(YEV)W)*UU*4IB M2V[UNJ(EK1:K*>YQ<%0U13U10[TD@)163Q4U9>^-*8XBME#4/?(BI_)%KC9 M*K?([8ZDJA8YZ+TIRLH^836.JJ:HIUT6.;W5@^:6>P>K&$31?NYKC4()UF$" M0%T(8TH;(D!L]71N)L/VC/UT:4Q1KS;V4ZL3@.S=A M.XZL[>)>6E2N]/W=2RYJV>FI7-"5N*'+QJJEXE3(4 M#U"%I9S$R; K:(F*54&V)1>VDX/OW(3M.+*V@Z$HPR:I+&J*<@XK6:WOWZ&Q M5LJ+K-_@&G84:Z6;_XSUS9BK>@,?)1\E'^4I1\GL,]:TXEYNO)T]F\%.MLCS M AL,8R$.:,/@NS"( P_UX77Q2Q#^$K ?N[%+WD],A,B-X-I@L+IS!E_^]Q\L MU= ^KK4T/EF_7\2-\2P$YK9%,;,IE"@!$MG]5B+0"CJ MT0[;OG"=A,$X[8[\QU)I&NIAQ@SY&,:6,0./?L+C'>$A)HR+H(4P(3U\[Y"_ M)Y\1O"ARX?Z.\$B^@,F24?O!R/4IPUVDS D !'P:]J?6@CIF$(<)5X,%Y$A([ '"0S][&K[;?H6F!1R M_IU$,50.AH[*L>#"[3:(H0-S0P)4& Y\G#:Y3KNK7Y&O0CS$!)#/6+CQR26X M(WQ=?DWBAYB8<+^3)WD!F2,\V9N@?77^M"-S*23(RT"(R/O)IV5$T%$O##H= M\S=Q1JC+*9T^8R#H(WK- Y$&Q3Y68T)3#)5'N\;> M)'4XU;+J+LPF266B5#]N$4 [QN1!S]A[ZPCSD0("[S&9$08@Y^&&O*X<23?K MC_E7WPZ654@>/8P]NMM7\7X30+=ZOGD]@X"05*-DZBKM4[_2GUY88%S*IM( M7A'2?6=K$3W=6:TKL;N(F56/$$Y Y/!C@?Q ]LA]+4+TSE+1)_)8F(#K)RCE M\YR1DQD<&K26'P?I"G1!U2X1K%E'^?^S6/(KL[>DV2W$! F\)%Y_RR&KA&VW MIVA;'W.)+G/_#J=.\A@]X7:?+$2_VFA AGF!O!?T%H'Y.&\;$L-PGG3+LUX[ MM\'@$+9B&A-Q8!VF++Y("#Q"N(H,![$P#(%H#"(\X]#KMP&LABJ]XM=7E5A] MPWC4ZCV"40[JY0I$S8?4+K1B2/_TRL[E]3<56DEH")$(\!U6&"4V4^+V&3HTVFV59:;/D4UU%, M%!>U%Y^>0OR4?LQ;//LH M_!7S <;12&;V H/B,OF5FOV?W PAP[E:BE-8:G M2^WA04#Y5D*4T1NI1GVX)2>04,]#XPA?3#Y\=-QH[*&W"]>GA* W?

    MEJDP?37%D8(X_7DFUQTIE>TL]S)[<_;SFL[WEMXQ92OW)ZDCYWZ_[E&0VVLI M&Q^U0["O0!^Q'=WR"IYF7**VW=EG3/@K6>:=M&%#@L MR/QIHGAN!_ 2&R9;V_R=;ENO("E6]O4*'2W:@1)*IVN4W4,Z.C6.E(JY:NND MB"3$O"6F$G@H_Z1'$\IM#2HR<61$RUAU]1M1P:(@#XE(&U7I\SG0GN30'.NP M_4&>^_B"O6?\G?K%I1%+JP8:.7O9Y[0<$<2:.R$V9YH368Z,]5J<=5Z1*!"G+CRH?@V2\O:J?ABD MUDNI/@YQB&FLFZO6LGB%>/8&L (^[:4\YDN@],Z(-5H]0^SF''X[)]V:G@;' MLU!V3ORZ:4?#CQQ.V4 #'DC9)WU:,=>>L\L3X0K#^?LEVNWT\/7YBH63\Q9W MKO/2]8"P;A=9 Z1;DN,,D*;) \O"DB5;AHPL8]!5T;\TXD!MW%E2ELIA0&:+ M.W@[?IC\1Q!C08?L/$66/V[N)K6RX_D5N>'?86_NBQO97A E(8YRMC"M5 8( M80-(A!I=+D%N2G MF\4"^3Q&;IK>"FEF TQ^%#P7]5W/C=^$=P@6>#=.'_E^DF))_O)M=TR, O* M41#% G*>$5'63SA((H$ [1=Y^"2-9OJJV7,A[]$7J+;RLGS';.'HX_@%8W_R MC#&"Y8V\RH<K*+C;=]P1.@QZ(MP31+C]Z.N][;;7=N_$_G5#0''06$BT'N+)IK(Q]F&$A@\N+^' $ M_'K@-]]XIYX&I0^\8)%B;ML,I\KG@U*]?!G/*HV82!KEV5L^>V!^+)*#^;-\ M$G/W61J1/Z'R;7TO2&<:BZS3C+4E0C;)4K@X!7]''E^*C)HT@L2W4OV7"]'A MO](0#RG<8L7$;D]BZR1T_.V?*UM# MR%/QP<@'BN"0EHMDG(YGN&?_M2*H*):Q![-RHWJA_&7M 2\H1)IO);C52,.- M($PNQ(E,W7]!Z@D>E/=;)%)I&X??C%UT.L ]CZ)PA(F40.'1<_E'F2L"KH8K MN)2.P,4 ^^'ZZ+R 1S)-?5])6#0O,O3(JAS#0T,:.;ZL5?FSQN4LQ#A.%XLP MRL05)"P1\AR$N;YW/F'@ALB@18'$+142E/F0M;_)1;/9X6$_*@PO^[/[K;N<=NEUJOCJ/GQ@4<#/JV*1*S\98P27GSX9YWG& M;KYD_G@2<0$M/\7%N'8A@D<3!M(1B<5P-:Y=5MGE*(V=K5;_N5L)-!T0&!.1 MVRR&,OD8DZ9S,M@M5 MCJY'H0%H@&L;8$<2Q]87:E;E=]*7!ZT4,^^1BG1S!,B]+R5WO)KD],B?NL/7 MV+SL;5]T.'GYFAW66EGLT>;E2JBE$[4:4,LXUES>($U(WTC?SJ-O9\JV!;*= M?[T?BOB1B)N]WD=.#L\OO11T*LV,9B;9S%JJ.MG7X\R\":8X/^\7]XCUB0R-TVU-WJ=H:.K M?;,*_G:U'5-).6Y,.>R3*,?4>V*3NW^S**S3"ZV41T**08HAI6+T+Z 8.BD& M*8;LBN%[7JQC:I=PINS/LJ[91!1\ZK(V>3,WR7K9$Z1

    YB3BY) XW:HX[6@6>[K];H!@>^TU0">)DD6B3G._M]5 MF3TR4+X$3/;NQ%K29Q>1/;'I[K:W(..J?M&I:Y7*W91X7 MK:6/#YN;V+Z^9ZNV5>U1=UAH:N\JS$O$0$FW2+=V1B9:TZU!6Z$(4BUI)(U4 MZY@0S7ZJM=5#M5J_FR.UNKR4D5H=$ZMJ:\>R-.$-&@9Y@Z1;+T.W=D7M6M,M MO:TP':F6-))&JG5,^+(-;]"X'F_PQ?530)^\#IBOLM;(Q7X_#^M-E?(YMU;/N*.8 %ILOF1"G#@>5L/6S = M9[4#0OF_#=K5VD6[VEFQ(2W<>W8WBIC[XX[W:W_M^H_NBR4ZU'XIE5GL' M6V:U=W IN?=;*;GW@,[!?'3YNJ[D38M$1R+>_Z[U7D+XGK4N.]B7YS[$[BX3 M;.;BYBD&=^"2W\5NUAQ6M)4:HXE?:]O2;2@+JYD*ZQD-7#=JA,2J$1*K*B0[ MNM=X@3AGH#!$[-Z-)OQG-9VJ-E*^OO_3 5UP7A\FN]9NV;V*-CBFV36L[8T] M]AU*T[NPV4G6MX0FU6A2%K5XH0$NUMY$UZZON\?F]B;4V6-['$]>GKX-XZ25 ME=X^ZU_N9ZP>8R/R+;!K+]'L;QEO)(HMM*WP(\[_!;BQMLU;"A M.?.NUJZ4QTQ7@)4KP!WH,NOG_;5HP!Q.W6B<<"/D_7,;7[IC;8P*I)#^29/\TM3,"3R1..UT FU>6W&P#TB"=-UF MJ34?L,_W.;NM""'% 7>X@ EH>)Q&S\HH#"84 :Q7AAU=#T[N_#G8C:R%/ PZ M:=^48!WN_.$]# F3_,+4S/<[D33M\OWZ_(*" H!22](I!:DMYZ^O=8:V.G!D MZ6%^R_$_#IY<7X!)J? M#/I&9ZC+GYY%2D9*UL:1Z3RIR%4M,SM#JQK-:1PN)P6[O+R]. 4[H7ZU=I"T MA+MHRH\62["6M"A:U/D650.62/A/Y<^E136B2>T[*<)_H@&.&^"EX3_EJ()* M#BA(&% W@31#&%"$ 4484#+2C3"@" .*(FA[Y&+LZF5[ZIM73.Q6#;H3(H4C MA6OQYG5O>)I^>SWE206ED<@7IX+-,EE/I(,[[V6=SE"O(B/0O2QIF/P:=DH% M:^UB=L"]R=[5W,O>9.$7 4 U4Q;GLD'+?\8GYHDZ;J-5EN^HR/@H?I]6C2=2D\1!/)&L[/42[,S0(/$IN23JE(+7F(?;Y M+JC+ I)XRS%$ H_:4QD&O0N[ADY+3;SH''Y3@M6^:SB@X.$5B5HCU_!4LK;+ M-83WUC1&H]BA3()T2CG:[!E6147K# >#HQ&-*3:XD^$$'46Y)@UT_L+MDP8( M':6I Z,ML'-*[KJ\_)'"G4SA6C\7# Q*8"8-O'H-;'1>NE KKH'9&6KF,5"\ MI&'2"-R+T[ 3*EA;-PP#BSN3_4%;%^T$+$5P1;2H6UA4#; 4F@@T6UZ0NMQ& M;(>:.K.YY17X#UB!'Z,55)(9 \IMJ Q0W(@IBPC,8@23@&\3%LUAR(DR0^"TECX"=\ "8_$HN!0:/Z9>'\8P_XX4;EL;/5ZC]W MBWU@-\+8N8L_?#>.!=5PDP6RU4;R%#=6X.\(20^+A9WN+O^G%V=,3Q=AP-F8 M/?;,CWG]7V(8,N$?*!.4)9=S!W_(_RG^CIDR]0(W&'O(^ 2^0#;':Y03F^P? MZ1P6.U[S ;3U7?]C\,#BA ^3KY)-?GU^"T_A+IVZ_J=L7N_@==]QQ=]AN%_] MA[X>/J!9"/-Q$F19:W%7>K#R. M \_=YYQ_[=.%#_;:2\#3&>]!*>5T,]GZWHDWG8(%F4;AO([*G/YL[*:@ $AC M+XY3%A4:4N(2$;,SG+D/@DS;L%AY]!#7*LF^XKO% M@@6NCU1L8HFO NO1T;J&WA+6H]TU^]MQ!^4&"WRAP&Q7 _*$&Y4">]0_1M'? MA[A/O1BLIWVCL^#X%2E"A%B;9@:6S&$;=) VI38,*6O\#BN]HO2//P:)&'T_,Z+QWX8IU$UO&KU>D+Y@&AL\B;)/L/! M5H.NQ6!*E>YK >(R#Y:OP2%K7J1+%L]=KA,F&WMQ$I=N)\*I$KF/&#F$P<$X MJ,%B$85/WIS?K$R]*$[NO$#-_L)0VZL/'S]\_ID_VE4P M)OTVG /AGI4%S#2+!JKQBH?SR!*9[-P\?8#*J,G'G[CVN M!"8] =G)N0;/L7G,/X;I/'@3O); B#2&NF,,!D9LDHYA*2G,6?P8?A0D//"/ MW\,ZO8B3"BR;"&'/P6I4KAFVWM1E_#(QJL M%J;HK;CHJ[\@LWH56[W%",MF;DNFJKBL]-9-,-YG3]]#M6JD\&O90?.0'IUNN5KV3=Y\(G'L$*,Y\!)F,$'+^J@#>+!Z9F?8UZJWIX0&.J.#Z:4WW=8.HY3FX[C2'<__#E0 M_C/UGQ6'UU7J*K_Q'868)H,%QE[$QF!C8Y$@\X!))O#]ERA,0N5W=Q2KRL=@ MW.6/*K^'P?W==Q;-\3-,2GF 7_IND.?8/+JE84;/?*3L:OIO6(<)K)R%_@1K M ]U$<95O"\9K93\QEN"--,SG6_E'0.TWZ7T:@TT=Y+/'U)DX'<7LKQ1F .L" MD0HF6:I-Q'C9[1XOQV_?!$&Z_>V?W&=%-_BK3>45KJ[F935SFJ81O"#*?RYH MSDF(Y/H9\WB\8(REW*(4$/:SD4AUXO.,EQ6O/"R#!94\1K-((_R+5PVZC\#" M6.')%JOCX^KAOVBA4&)AB1LW9?&Z"J:E5MZ8/_[QH9)A46AE68_>1)$;W/.B MYU^?*XK[!N?[!U_HY^F;8F[\=_&;-)F%$0("[;?1]Y;*/^@,3:-7"P>=45-% M4H"XS;W FZ=S!4NJD>$1\ O$'R @4 'YQ8K*GA2?2642%=XR95YG<8'U] MGCJQ)'J4!J**?JL1'.BUM!SMIN5HG9;OBRE^X1EJ*Y2[B]GX]22-'F$+BUE0 MD$OK=8:PR+S<8M7PB0K?M:KVLNIDVNWZ7>5SIAU9N;:Z5=]RFX!2B2K!"UI% M,EN)@K)KA7$]6J%IG:$^L+=I15?YLTJD%38J,[!X^&]WY/E83 _TO8^0T#'N MI$JXX,7*:O9/Y#+:J*[>.ZHUTE+-$I*R. M2[/C!$M +H!?\/G<2Q+&L (_SSQ=&K3<(()2Y=7F& <#"> 45AX]WU=&F)0Z M^A=X"[GFNDGB>D'^\Q@WF-6MM)"")*]%LKG7&"A@(/"A&!A7FTQ*2X=(P:T=LGI9Q4#38TY/8E3!.>MLTS M$JMZK&WS.DL.V:OBY]S#@N]\3(2ZG_%Q%L@%OJ5C"G:@?&"C*'6C9\$CGED> MEG>&;");(<\"0.5O; MTC?OWA*+]>>5<\*J)U28A1#37N&%F&6;CIG ?Q*KY:+;^;C\7+"E\S-' W9%NNG*J,T40K4 MDQBYCE8YD\PP$%K'X9G0U"?/.6&V#LJ>QFR1\"1FE/Q'8:,S943T@=?EI'ALR.K0P?>)0NXU@)P+F80WI N=L?0@"5IP&[O2E1\D;S59/ D".<>:^B;JB@AEE!TLM M.WY\*_4]\+($5)$P#Y]+"A267%125?%U-G&>S,XR] MISN0@&16<9[7!$$ +:&?!9_Y;"EUF9PPX9>@>==7*GEF0<_3HNU65AS\^YR2GD[9#S2\$,(65ON68)-@G1 MJ94VJS-T=DK;LKQOH_^[4[DS)Y@7\2E)Y')N3=SG_.%UO<<4)_&([^[UA,0[ MQJ9H-NS>^#>38>;UN\:WDI.Z[ M&<$*4;:7DFQWAF:WVJY) 8+X^=&ST4SM4\VTCS.M8C@7,\WQ26&SPS 6L=8 M$6>GO+9"X"[BDC#>O6K>U.9+U4ZU5 ?,2ZM,Z9]JI@.<:8TE7&<*;%C-64(% MO_4%OUJ/*GYOHN)WP[6K7GOM:ESLVG7+]JQ\%N&<(Q" E\7,]=:'OR=[S1NT M#'" WE#FK/>DQP%>A^>-TSD"1_P;7E".CRENME(%3@ %^L-6(WIS1Z>&7E_2;GTFA'FJ1(B,6Y^7 MS/HC"W3CEXX]9 M'E:#DO62%N$MFC%0G7XUSMH&1U]&.>TA=E4[SJ[&C62CJ6TU.T-CT#6.[I]X M7<6ZEQ*?G!V'V=#=:Y5*5S:7GA]H1/&$_!';,TW>I.K)'CO9>)K&$XF<@#3&0N$ =;21NLI-'M']TJH%Z#R<]^!$^S=2MYI*N9$1\SS#_6Y?WO8T;[G>' 4 VK6KYQF!TE5U,..UHC&TTM MJ0.6M-\UCNZP0/[F?OXF3WLG;_/\=G19/'6X'1W D=T&.[H'BA+YHU=D1VMD MHZ$=-7IP4NEW^VW%1,DC/>0B;B5'XQC/YL5=PIVL&KFM2S@#+^%L6[7,TX=+ MC_9;95*5_:_:ZE9W??*]91N"!IF#'@5NJT1GJEJGJMD-;*FVI M$FZI)1%ONJ6:G:'=ZYI'G\=.NJ7ND5Q\'%#AB4$63SW%0[J.RE:$4#ZBYC@O M2PB7#%%H/R2A2BW9>9&$#&L+DE!7^1!&RXID=;G6#'=AQ,;AO(# X4X$S #^ M]UG!YI,KT$%Y@;, O3*!'.+ZMO#J'6(->+_^6\Q-T$O;3^"V9WA%+%V:BFF M DE / 401[GTV(7/@"(Q0LJ4P7@X/(^ZCIN4D[Q4T\S+F7#8'/5H%:)#BC+D MS0KSF">>N\+4EQ8O"KN+BNYW=7!)PI)'I-$Q+]$=(8/ M0 [$_J_= ?O@W6E=IWJSTVVY@*P\_7+:1]&5X$T&=J '[6"2V.V MYAL7[F[)H41N?@!F?LQX^74#:)F!R-Y=K0KT\I-RUQ@?JR_?^LP>7U\U(_:G M-3R,MO-32#T:JXA%PB'H,)%R?SK&WJC>L=>IQ\_=XB/H$!TK? MFS+E%0].M9('?!-:?/+8:YT8YRQ!8.KZV")R:2G-1F=H=W6K$OP^W-3OD])- MHL!C8KV>5+)@[BT+-^[8%W;M(40H.@1$/U&B]?6)LHRN>\ZO_R[8M7'WMCI# M2^]JU=0_R;WW!DNT^1('U7:=$CCP+U,5SNBF-Y"3/LA)KUM3$BNYI]Y@B0Y? M8@TNPDMVUF'%W@3AP)\]YI^J$O-2D&V0Z=<+OI5 MLY_[Y;+QW^KMYK^$N6'2CG%E"6!O>-,/O*H3:8=&N<%A= VO=;; 81>=+\0 MJ3_U0O]'&&"J%1.93?'W,'']\O?8+/>/,/D?!J\=A_>!:!I8022WM,[0Z%8] MU@*1'!N>!%$Q1#T^?R0:]&*24II-2UEK7U7D@;%\-X0?C_#18FB>0^96DX<. MSA8[&2%%2L^',,H^PM_M<<['GLU&5UL7=Y%;)D5*5_WUXM=EBS$!J?HGMAA3 M9)CPAOO!NIYHRJNOW_[\N>B"%F7=5>[R]F2E]FAY3S6>S\,S:HY+=.0M&E>( M@/)QYSW=S;P)[#VO43B,SI#W8LC(6FHRM"F(95P\/=(RSY@>^;=]$B-Y#FM] M1VMUE:]+/@D.>X$R37V_P4R[:RI '1?RC@L:=5RXY8X+1FW'!7-7U'U')FHE M^KXTXWS;>0,^^NHG?!_:T>3 LJXN+[74Y*"^NR>U.Z <4\HQI78'F[Q>GEU: M@2^90@U)(&?=M0=;M:>D3M$JA= MPLDPPGHG:IBPO\(<4J=G]3M#PRDE\+ST;@H7V<>HE<+FG"-R M.D.][ZA6KWH#1["WIS7%UH5,\?%UT]: =V 8'&V/KPL1]Z*GA^55"4'C2F:" M_YL[-H>:8+N'( 2Z:NK5LP!!YMZH#5X5F4-LL(W52+VNU99/3)[O9MFBY@Z2 M6MZ",0<;7[TS="S5:JU]#OF_TMO>4D>(@PRO )(JK7\"-\! 382V:*&SP_<@LP8LDC8T'3 M2EZMUZ_=^3&1]S7,&?.K0.0_3[_S20@7]:V[0,/Y>?HK Z/ZWHT"D-4@3^7_ M/7QDT>_>W$M67=FI]P0Z]&\6A74%;[;3&?90L_"-54. !1*77]J?BT6QM)HE M#! 4KWIGF*]*Y/+#.6V5H6/Q2OQVA"]5&'\K7W)>[X$/85%",!$BLO MT>CWLL*2.S0E%?NR*&E#9DTG#.8U*55M9,45!3YU^1DO+Y<(7)\;J[Q.HF9@ MI"/'VL6EH'GW%AXL;QWW&B@N:CYP[5WE>\T,4.^XIO*D<9PGF)4?P$D88N*) MVZC\;?EFM+)3C<%RXY93/,\7L<2F!C:70*M!P,:I&"6-N11P-$^8EQOYX2HJ M<#O8S,7.4[)67"3VR7GO:]><\[[88)\IZ9V2WBGIG9+>-SESE/5.6>]''P(H M[?WH^/W@6N/W?;TSU)R>JO6K&,.4]DYI[Z>+^0^N,>;?-WB#MCZEO:]L9-MJ MTL^4^][6V^VNM4\M>A7. 'EX9W1KCD)XWA;5\NL8 3>BWMH)2OM/<>XEQMOGX?L6$'W7XUP9A2EBA?_T)9HYH=[NG3]&Y*4ZS*^QR?J]_N=X<#NFCLJO6\Y?[X<"QK/D"&^B_DCTIA$L\M+'N8Q/VE:;!9FLA3E:NJ MZT]2*CU83MEW1) MV;_62TI'[PQU0U.=FE9*;;NT1[NQUWD56;>ZZY/\K9M!?3ZNY!>.C@%;@5W7 M(?>BWG>#5+3FZ5X'%OX<^C/*KCL@NT[3*P25_L984SX&8S^=P& U90U-MU.M M=Z47EHX))L54#;VF5H#GF-^+FW7%C96%&R5YCK*)V/JU$MO>@]BPJ%#QA':+'B3+Z'9!\G9* MEC3CV+J>-^.9QQ[8Y!W/Z2\==@2!XL-*F)Q^ZR5,IU]JN:1I'[$HK]M52*%AD40I55:1!9Y@\ MAE6"[>C2,^AUAK'WE'F:=[STI*;2J2@^"F30L7;* @>:A#JUK2RPH0X-]-TU M@W&*]C77$KY?[5,SF*F3NU.ZUGI \8J])A5Z?VN]-N]O&ZKR-K5QW5[(3QV2 M\@Y).G5(NOX.23N+*H>\NJ92$+JAK=+>#93$'EK3/:E2+[ST/WEA5)XUXOKB MY:5VJ!M*20?FU962+J(0.[J*,X6[7*&2Y@7]>(#;5+[+ZW\%9[+Z_OWK3;D1 MQ8JAUYOQ&NJ,#]6>[AR*:D^O8(!C:D\'UU=M^0V,P2=A#-ZC,>#&/C<(32XH M6^.$]"3;]Z;R]$)[#:0R7TPY[EUIZY+=Y^O J7^9-R MUSR:8$FX0+LS-,&OJ"[PB.JWEM*=KLI&MJ0#MH0BTD<1,:J7VC^]F!RG]SGN MG^]-F?**0]ZU@F]^$Q9^0S! JQ??2A?EJOA60@5UXIOSY#N+YGO %PZP4U-W MV2^PP!>[VX&0IE60&2^Z# 2.ZSI6-7+95JWRH:"JUV:3-[';EHC==J_'V>UL M9/>M^]V%Y7T(,<[N>\GSB=+MK\_N2NE9YPS[[X)?&_P*NX>)TWK7K-YHR>Y< M-UBC#FLTNC79.Q+XUR]4&<[H8C<0%$P=U6J58=--YJW[VK!<;X(PML\>\T_5 M.DI*UV1_V&+G_++\+F/+1DDV.\-M4DRNZ77;LIW\MW;S_^![JN/Z05SE&-1^ MHB]-^PF[9W>&3M<^2?>)#;#2YVD_48&!EZS]A-WC[2>,2OA&M)^0H9E#_2U9 M3L>L]<27-!K/@(P\7[P5(/8->=XY^_"M^4OQG?NGUM@H%%>76L-B3(BJ3ZT! MM<&$QSDBYJ_!Z6=YA^^_??G2;CH- ;E3,HV4N3"43$/)-)1,(Q&I*)F&DFG: MBPSTI4LDL'L#3"30!S+&PDE^UN3GC)'%?>5'ZW6&5K=7DXARR'W10,(%XHU8 M5ZN&%U[L'8#(MQ$GL%,EW$@9 MZ4G="7*3M!TSM#N[LL2:S-3J!8_R&,UGM2 M,=K8@]&W[+%2&LJ5^:3[W[QK)LBVU:U!K)# +7VA@G*!:^T]! 5K 7K=P?7Y MGPW6B.4 _>Z@"MWW8EU02D.1TK#O2D/0^I2&]0&DKK:2B;;7U^ M70G$9IM?>9NI;3FTRF MKFEJ4\=A/4=S;,UU[.G PN_2))C'^$"5,&"N\MI/VR(Y=T MW?U_Y\5C/XS3B'V>?F5CWXUC;PJG''X(F,,Y*:FF'F)TI(#U>Y-DG^'8JPF) M;\;C=)Z*;%J.),:!!B,V@U,&6 /$D [G3'GU>QCC_=&VFMEZV#/Q5KD2'\5" MQRL+];*%^KA0S!7F7WN8]0BR-@TC&"!0QFD4L6#\K"1P]HI]L5!W\J\T3C@8 M,$]H#%C"]"L>\&#A#(8%D\KBKM)*1NL*"P4' MD7\;LE3Q\'G-6:JBH1^GI%N2YG GDT>NC[GB*_!O')R3<[$VD]1WI& M5YWU]ZLX86,KTQ&#HVO &UI,LZKJO;OYU:SXAII1UJU.VF:4F]M8UR /K*8U MW*%0P]SAKTKH"HNL9Z$/.A.+!EO[-7RBK3H#K9*R4'&^&FI6XZZ1 M+:0XDBK&]RYU]^&"OO03>,MY#-#[L>8DL0XHU/=_2\[=\ MO-^=1S%BF#F!0&LK62N;15QO1IG:74ZJ_:"19Z177*/5;>#SV/N54W0]#2C^ M@R781?7I39)$WBCE^0+?PR\N&)H]&Z66M@IL^*T:-9U21?K#%7I.MRM?S5QO M7=_3X3A4TJK"9'>&=K_:'N<:_>_;E:)F0E3Q6B]BI?J=H0%6JNK/DI623KX: M6BGSQ%:JH:0YG:&FVC62=M4G)]V1U*T4.@#T#O-^'8>\L/JXD '=Y?JZ;>$YO<_9M%89U"#3I#G@JO_W*L M\=XBWZD$YTSO# M.TDDK*6X)G^OT9?4$P6^9='ZY"[O!+$KYGE,:'._Y,1;T[!=04^D^(:2MERQ MOH01KX9LX;1G&.U&/_=..)4]XG KPGFJB.FQ8EJ51+.ET"F)H&0BV&ZX]S96#P!TP7WE\F.?2WZ:3L4 MV7I6@FFU&).4YO*7KGA/$<=L7_CL%@.:)'Q7+7R[@J#M"U^_S6BH--)'>2_G MC:VV+Y=.FT%6Z7-:I/1R2TB7V.JT.<;EWKD*-P;NU&S=TIJ(9KB8@[/!/ID# M\-9-U;*/R79KQ*,+!5Q(L4BQ[JQ]D_6/5RRK!XHU4$VCVNF;%(L4Z\84ZXP[ MEJ7=X([5[(Q%*D?5'WH:8H2#7]PY^8] MVQ0[19MBZ9K?:KT#N]^*Z-AW]VG9!K?:P]0RJNUN+:/:[C9K9PNC8>G0 =UL MQ: UK](E;)N*448W>,9NMG$Z^A<;)TH2YC4?B?N$I53SU$^\!4CLO]+(BR<> M-_NBCRWV0TUCWFN9Q0GL'0EV6<7,0MAE(C;!P28L8=$T7CC]V@O(+E&V&6_]%H?UW97JV- M8O?^:<&"F/W* C;UEN%7>RE[B*S=K6Z="C#4Y]#.L*!&4[-;FQK>U7:K-Q;Y MU%0@:[P N? >F/^\Y%%M[]NSY%XZ?+QTNM71MFIV(]NK&PD,GBI(Q9M5=+*5T(&8GBIDN?<3#,+[0&[D.'K;"WX"?..&!>ET?.Q_%H[LBPB?]1@\? #/I-W MV8S>\3[=,&V1%U9'&[NW0=5STNPOK3,6K$C .D6!R,(( DUANX?=6YFD#'_I M%C3DG #",F$'1!X^#H3ES)YHA@8*GH#_@:H:XU&.TWBY [,GF+DGMF'Q?;C@ MU-E7+W<8\P.T4CNA<-L:"+>]C8-':&7_E!,'#]"PNE78H':TT@L.U\IZ?IU! M&8W.4-M'&7>)Z!&J&!24PU]AB0OC$ *K[FXR",%&8[]U[>(CCTP,& MC,3V'>>#/KA^=BIP?3]\Q(O?N+MZ?)#M*+#O]HU6IY8;(IF@8,G$@P&C>&G0 M_NQ^ZRI3!D=A\#7BQ$W2)(R>Q2M RL^P[W\%_S,8>[[GBMR)#V(RW_*YK/RX M5ES-+:D>[5G"X^>)7KU68VDV*UHAN* N*7 -O@^C6$5A\-,)WXB$HL-?Y4,A M,E((Q31K7K.J-Z"1B0=*\ P\GL8L0>.$D@4:-T&%0>%ZG'GCV<[ M5"GQYS%,_0G^#.08Y=F%OR>I6&"VY6:\Y3&I_B]QS98KMF)0TQ'H*F+-\ VB M5%2)D^29['X8W-]A'&3EU]EV[X['XE4H(D!/'CKD![-1EC,4SQA+,G>N?)CF MB\%Q8&CP$3F_P(UT?3Y\Q$0EYVI$!XY\"=IE;^4,GKN?.$+$%F&$8EM:W#/^ M/DO25\+R@LHQ'-#V9PQ=XL+AM!B%L-MR.JUJ<7T$\A%W!'1,D\V/E.X51/?NLYH0S8+I:.8:84K_ MG17W& OWGMV-P$/Y<>=.89ZO7?_1?8XQ7%RVAV ,R[1;7_;&Q4VGI["/XMIF M@A$?SN/7*3@*$?X*IN/*, T%W)FI<'+OT-K91N^)/3T9FM:=)7.P[UR2P1B@ MKRNZKKG#.GYM#@3+%O+]'("5AZW8%/9=7?IE8#3X^?+_=+]V%4WIO%% [7T1 MZ@D?O(GP J,5QT19I%&O?*K\Q-$V^:^O O>/6;<:*\^OSKK[^^^1F&F[G! M?68QP5KY[F,,ANQ9<;E-7@86)\7P\"LPPRP[)J]\OF*P,14SC>K/4WQZTS1) M(V$8'UD1U\?Y,^'EB\"V!U9YG!G- !CELWLO[]SWB.N9N3!X%GH#ZDS0W$[P MKZ6Y_^ %8.[!6U+0U6,V7\I\NJ JX_MJ@Y&< X_UL&\K"'A.84 P+PL7#P1=<1/P= M_@3.<+!X-_L]^)' (:#4/V&5H3B@/>'VK^ ^B2'."&DZYC*$JT&&P_X5XGL* M=KOK9/;B,A.[^VQA^UW"80!#VDLX[M"%G!BYYGVR6>?O-4ZG\,6X.L:"&L+)7(GD<_\/O+[LURC6:18' MJG-DW\X\-E7>/[%QRBW>Y^D4=#,""S(+\98 GQGSWRR/?.C5\UN$N?L#-/C5 MV\_O/OVL"BL>LS@N_13^X,DE/-D=%!:?*)Z'V8_"-!%^KP]2X>8N-Z@>Z"7& M293FA$@7,,@]"^\C=S'C%N.>7XV@-^T5<52^V\'I!1[@!E:8__8ZQ"'(;A.9#!NYH9J6A%'AD8,C=>M5H3!D>1<,'%&?]] M#T89<1=7)ASG&3QIO*1>!+R]R8YV8"F'EC=!#95=/"3,@OR M^4A\>OZ(,IN=>T2;6S>/&!01.K$!B?,+_S6JL##\^..'?/_B6^N(L0 #39:!*,$X_(D PA&L%_$JAE([8LDCCI;MB?S!L ASBE/6R@58 M-E,\Z1=AD+R'[UV^C0JH4GPXBS'BG\71+1L(Q'CLQK/\Y)?_J, V5;-@21Z) M7 HIO'J4PM:)RECPGPY>&PY>%AV\;N+@U)%\/QXOFU%_ 5\(=^R0;+ M;!(JXWKE'PJE^'JII]V>T-6L\#![<_9U%[[Z>_5SW>[V^T[M5[VN5OOYIJ$T MISOHU7^U::C-GYL]^X8G979[5M.7GV52QM:A:LM:$?R^V&GU M1\3O_ ;PD[CY>U^]AUU)!=]5S+MO&KBLQ0FO>( H3&-PT;8T=6JRXOVRC&F M,PUP+/I28SCZW5CQ9[('@[W,P&!RH"$;C951(-D/:J10EKX-+"8__22V=LT MAK6QZ&.>^_2&Q[AYSDK3RLD^XIMK/;6O5>L_#L.4E*9DF0J32>UJU<[H75[M M!$: 81T-!4A:)XT0DM9MU;H=79*/UKJMV,G]UK'@2>,N+X"D<7O7!U]DE\/R M&<-2>S50.+(IW9D:)Q:"L^WF]532DR88.U#GN=7P",@>O]OKA=\#OX9>0E[%SX&;X))SH>/!1OP=TWB M+HYL/:NH-]JI/<53"5U5N+"[LSD@P;HUP=K@.%[O;J+E[-] IY\;,HH%KB1)VFW] -W:4T6_=-6(>=\=7/>7'CLA=6 MTW.G@R#F?=5VJE XLC7":B&R05IUFUK5J$5 S1%B0X^ -O3+Z Q-=6!7T83W M[Q% FB6-H)%F-3Q#G5"SS(V1=U(M4BWY5:O%RX@VU,D2&]71A\%S-43-9T = M;6B*4DZQIFT-U?B7/Y>RG%[*25&-O]0U_F:CVD*J\9>YOIT&H!I_JO&G&G^J M\;\NPE&-/]7XM[#NFX@6:4:E"_+9R[ :DX:=WD!)(W;N\_V178Y3,'7+=4VY'Y/JRB1Q! M Q T -6#-8C+ME 1-G!XNP#]^ P>JK*41LA>G%8U+&"N'#U.5\ \P%M,M5\3 M#:+Z9=*LF].LROGJ9)K5[_4V1NQ)M4BUY%>M%B\QVE GK3.TU,& H &HJ)VF M2- ! T@T:0(&N"RT #?O*?-P 6 0,0,, -#4# 0,0, ! QP380C8 " M!FAAW3<1*]*,B_=G[?<0<5SKJ8-^6WT'+A^BI8I)4KNM:G?QFLE^S^@,K9ZJ M.Z1UI'4O1.OZ%T0&Z/=:SU GC;N\ )+&;=.XR^]RV-C9UE2]IN&&;$I'R #' M3X.0 :0]2K9;/=GO8:-MJZ_V![(T2*8RW',=C]H6I3X"[IN3I!TN M?]N2Y'2&AJDZ X,DZ<8DZ;QR- "WU=)4VSK:;25H ((&N*C_=^GJQ;Y&_;)O M5^C.7#);%2[LF'T\$A )EFR"M<%QO+PUT\F:W:K07=J6&3+9,BKQIQ)_JNMJ M$&!MH;)+,SM#RU UQY2^M(NJ)4FKVBE$KAPA3E>(K%F=H:/V!U4$#:I#)LVZ M.)E1!OJU.\,!ZK5&NP^E?A?;W$Z39%*_*G$ M7Z))48F_Q"7^)I7X4XG_#0U )?Y4XD\E_E3B?TV$HQ)_*O%O8=VW$2LRG(M7 M86F('-[KJ;WCF^]1Z:,T4DAJMU7M!I=7NP&_S3>/!VHEK9-&"$GKMFF=V;MD MB;_>>J8Y:=SE!9 T;HO&G1I28_QZ.V10G1SOJJW2>PB%N3I%TN?]N29':&!G@; M_;:ZX)$D22))YX6*T!&9RNRIMC3X-3=^1T(E_B?S_RY>%*M33^S;%;H-GN+E MA4ZZKM@D=*=V*B\O= X)W8T*G:R($_I -I$C: ""!J!ZL :!V18JPHP>[Q=@ M]=N"-KS\U2956;XXK6I8P%PY>IRN@-G0.D-3U?HVU2^39MV\9E7/5R?4+'UC MQ)Y4BU1+?M5J\1*C#75"E#A==?3J3B6;(TC8 #3%:YAB(VR _/$[M,FO#3LW MU%XP84'R^DZ(]W5D6RE*V]EA!R:IH16-O3A1%A&8O0C>I813)7(?%;",\ HP MIZK"_DJ]!7]LPA81&$@>D8'/YPL_?&8,!IGCJ./1](RJ<6)^+G(5!RQMR)DE4#BG'B.,2I MP!"/7C)3DAF#20@ZDLW AG!HO^P9+L MU_>1.X^5.!W/8'2%^6R<1&'@C54D#RP?'U^XSW<+Q*3PO?$/Q9UP)LI9#4N)PR!@XF(X3)/8PP6PZ,$;LVS"^?23D!-YPAZ8'PJ!@!$" M$,J,TMDRX%^3=)PH*'XH/L',#<:,KP,?8$\PBXSB_'=KN8>PN68Q7L[I8;[= M_I'.02+'*S8B$VX3U:VJBP7&QT^=E:9'*B6?9W6'- NF MH]EKA"K]=U9L]@OWGMV-(N;^N'.G,,_7KO_H/L=H;LNV%0QKF7;KR]ZXN.GT M%(9)6'+PO4(1[7T-WA*+A+'\ARO#-)19A(XF7DK$WMZ,C2M.TO M-_[.50VD&].]4=+_\7=W6,>O->G.O$O;=L!IW?SMX$[K--LA]/D MT8T*.P&& TV5ATH#!DI)8X9F%_\=H%U HN5?@DU:/I4/I"I_I:!YR3.:_#3B MSW!;R[@9V7\?VK'UQ/!F/CJ:^W#*^'X%$\Z-X92Q%5OHCL>8 ,6GD+A/?'2? MW;N^6F/ZBRV,F]3N+I.W8O&J*&BKAYO?P^#^=[!W$ZPF2.)?GW]CN)4M9M[X M#1B"F,OF=QC@5]@=?BP/-&9'87#,6:!YBU*V5<#.+TZ\F%WQ0Q1J7!QRG^&6 MS7? B0>;?+8+HN@+GP"X4O, [-E5PE-\9G MNCS$QYX@7#GFUC]&T=^'Z(DT6-P.*;D:&KQC<)P8P>YJ: 4=FN&/74VFQ!:@ ME^I6]WH/63@B''DL?,ZASY\2M>NZ?[BNT'R)IB\S^-T?[#&91F&U1EJ?4W5CF\&*T]^)6G$K6F$?D:-P$;; MCJ;J-5TK*/WS%(5*VP$27W2-GF8:9Y3\?F=HFJK=ZTM2H4>EGJV)D7E&,7) MC"QUT#\:_(X*/?30@;3!IA M(^W:HEUGW&/-'FB7WE=U^^CRE'.!@#6Y>3E#1/'0/#H9ID9W67M$@U?S"]=S MB?:Z:.>EJ.]+U\X?PNA-?NG\/=QR__Z5W<-O-ES 8WROR07\55PQFV;7L,P; MOV*F2>T[*8LNXVF KS0W)6#NJG)Q>,]$UG.8'>N@51F>SD_MT$0DIT#9>=FKA0W]%QKEBI,^5,T M,\HYHYRSEYQA8^V%!EPRK'D@K!(':QS+1MA[5=./Q@6F!#12CU.IAWTY]3 Z M0T.UC+9:"9)ZD'JTKA[[8U!2#U*/UM5COSY")U$/"V'V M#/MH\"+*9:92/NI0572;?"3S+;06BEU61:IL?;K=W2HU/0[0]N6 MI24-24UK4K.CANY(J<$4=X/*)&Y.:G;4F9W24<-\:=74'$F$ZL:CVZ)HHB&D M#)544-+WNLVX7-P<'*.AIIKVT1:#ZBNDD3Q2M2VJ=KD8O"6:%0RHE(E4[46H M6INGIX:JIJ,?W#?:@B,A5;N\Y)&J'=V&^22J9G2&MMIW3.E5C1H;T!2O88JM M%AZ^*T'7O@DF;TK M7N7&EH-L7ZIU'#G4"^YJD_*25&I(0UPW !4:DBEAE1J M2*6&9[([UT"J?4H-B50D552$N 6M?JWU2/D$1R6'-#,J.:22PQ><%:_O2 R*H7QHXDQ)/HA8UZH3FRE(F07I!>5/1B M1ZK=2?2BWQEJIMK3J/J6%$-:Q=A17G@2Q7"X8E@:-4FAPL*+*\".$K&3*," M9U\?GSQ#14"R29-Q?FFR>2Y__WB0#Y(FV:1I1];Z2:1)0\B8WN#H'%J2)MFD MZ0(Q,UM':3+[1\<&J#)Q'WEX&T:+,'(3IOP9N+X?CN'/R4&.W[[GN2M6AQUU M"ONI0U7BC<[0N:$0,4F+D)8=#7H.E1:S,[3:RJ&70%HH/G1K\:$=)2:'RCVV MCK8I,$J"+ZO@FZW$A:J";X-[T%;5/<4]]\#IF*RG4KDE#C4]?[RXHLIFZ[X) MU;_ 5:'=!ZN@6OVV@BZ7+US>$HXA'2,=NT1@TT$=:Z^S..G8Y46.=.QP'(Z3 MZ!A>;&)GX;9N-DG)+B]SI&2'(W"<0LGZ>-_KJ+U^6\BSA+UQO:@1-$69L#<* MM?=B]_X^8O=^D"&6$!CAN $(9(921EX4R,L&M/(H50ALA7(BCT49> M%$%(=N3&% &:G7^QV2&.H$-H9M)"AYQ8,>H=C8_!OY@(\WX*?9PM88?<>&:7 MM:-&*S.5'Z)P_A:>Q#'_Z26SMVD,:V/1QV#LIT@3!,Z&_YM\=Y\:A_#USM#L MJZ9&?D)ZTKB<[$@;/H2=F9SBP5KRL%_R)'J[=_O%4^N>.9%]0^HP#R'> V$OZCUCX:JNRX DXOXB\8[Y4OD!P=?18AZ9)-NBY_6>7@996N.C;%%D\O'-]FC"7*)Y:X/D46ZS7B M\M=2C@D:H1K'=TRAL[ELPG7YNQS'0FC1@4ZPQS_$W%L#LBC$4+[S0G7 MY:]$G#XV3#);J]^GF.)FV?BO)2P99&>6X[J"<3> M#=[:\05M-Y8J_ +AUBX?TQSHX(@8EMH[/LQ/&(?2R" IW>%@O>=0.@.43K=4 MVV@K#XN4[O(R2$IW.'KO.93.1+=74W6[K=Q:4KK+RR IW>%HON=0.@N4SC)4 M2Y=_IR-T7YKB-4QQ#W1?_#>: B](.63O"@AM)M@F(L8NPMC#'[R.F ^_?&!+ MH-B?5G%[LWGWEH^X(UA FFQ^I *5=59KJ5D_(7K_*A9O^;\X4S13WL!UIJ[E M]":3J6N:VM1Q6,_1'%MS'7LZ,-S_AVT-LX=FA7U8N/?L;A0Q]\>=.X7%O7;] M1_^E<:"&?I$=P; M/F@:N.#:) PM=<#M,+86+KTK3N #9%2-[M5;N]IR?H=&?4#5O_H1I.[W\/P!Y+U6T'] MBXKU]I3=I83@5NO"#R:%%$2"L0B9'^'NK8#/#%(1P[=NHK@@+R!)"OPR"2-T M1A5@^CB-(AA.F8)_'//?H)'0&PRLKO(1B CNOS)VP>M7 ME> %&(^-$5E^_- M%\ ^KJ-Q.IZ59MI5WHIY+(F&,RSF4/(&XFA^-:NO>GF7/F*#WX0 M#Q:LF>ZQ-ZC80>*1 >'A?W&I\S!&"X*N\[;] OM.>#Y,AF]N* (E7<>9OW\: M T7N&7@1\[DG-MI7W]Z__;FKB'2RG"LA_ID)+9>/8OU^'"I<+969^[ DN^). MX#2-= ;:H]&"D?F6G29IQ')>=95_HC4)4*[N@0*@7XRM_495?% LG^_F&!YX M\!(02=C6>;@!Q 0GA]@K\*N,96_&X#VB;?6?A97*MGY\#:@U/ ).98IO\#TQ M0BZOFP6[RWTN'T=\+*2'"U<\]EUO#O1\5K@E2;A"C?S5TFP#^YXS'SNRH+,>* P#T*X8%^- MV ,>MN%?WK^%/Y&/"_\2X^2Z[7$ABV?N0C2UR30-!AGAC_'I<1;BPUW=Y3_W MO2FL?!R%<8S"&#VCS-[G1/"BHE?.^'GL,Z[2,-L036H\$]8-7A"B#<87N,H# M.,@LP8]6YPJ68.&./%_8IVGJ@_%"ZY7,(K[[N$C($6@A7SDZ]X_H6*V.(0Q3 M;N!2)^ M!D[/A>F?@:CXP@3<1_RYXDBQ^A .DRT.]3X?!.S*S(.]QT4/24DYZ3G1.,50 MG*+(K2%:PL8SOE'CFF'76:.O,,=QSD!7R7P&6#U\[^-)*.$*@M-:@,?)LO47 MXS[?L0!M_J207(:BPEA43Q0X L%9+SMTB4>SY0A!8"!% M<]7B3A+7&.Z5N_\">17L$OHT2F-X'IC%!0A(]^"Y7(X^8J0,Q/ANY*+CPMX* M.G+Z);@=GD'!Z?'NP7$PWBEOW[S[&FGU7 M3*000V .]P\B[G_ ?, %OP,V_6"XY6?SA,\?T4G@2[!;P3JYE.P6&'Q^'?,5 $A:]D94%R[B8,^#H1,@[*JJRNJ(30=:>7!C%U< M+SZ$AA:H);80EGC4P[.'1%N#FZ,T0TFW+,1&^,! MSN6*SRT84M2#5Z_O/_*JTC^SM< 6"P2$/8:)P$DIU),=>/\,>!R''\- MX&=@X +E,^P3:%#T+'"B\D?>XA$H>/X;[%DAN&E(EHD'GK9P=A<@"B?6)%NCAQ>*(A*&L>#5\<2)GH^7'Y%+#@B< MHV"E.-^UW;Q84EA6*F&QA.2H&;.$%[;.!KX7SR8.15WT_\WU)6*>UV9=Z+L9YS(N[5%P_E$H# U59 =Y4 ME1*N$B=5J79>'#4S:4?10F/.=XNG1:X/Q5Z$ZQ'$OF<@!8EHA(FB^+33T_((6SG='*&7% MBT&YP4#C$/=^.()U[^W&EW=3_SGCLS"R>#XTLIFA0Q<(5XROC0O7JZ74J5PJ81K) MN/NS%-MS_4'^2P0NWR3WV-[./#95WC^Q<N'6LOJJI9M T_XC//V]&^PB&S*.22\LH[T/TL$/FSBI'/,:@L2NA7](R2 MS9O(B\H3<#;G"="5/UWY-[7%F(/7 ?ZRGN4V+8W1WX,"-H74\O048TP.K,O48'/SYW4;^0#Z# M"7.3F8IW$&![N%3R'X+#$3Z ,WEP\-V0,OC^?]ES*:7D$P@E[DZ<4-\C/$G) MF4*RM0&@Q'[%:K "'7]^0^#QVT@0_<<0SQWWD;L 1S[_*3^@WN?7IQ3?H/C& M"XYOR*OE>3J"TWNV/3MT19FWAHS%_1NA+]6HW6LK)/0N8 MN#'DDK*\&RGN8O&^IT@0+*6&X4=Y;AAX?6$D; SH,,;]6?&2+/;/@LS8HXE/ ME'M7T#, H5^]1(A9YM>)J!![@E>N7 [S"8V>\S<)&XUW-[F Y"-D&1L\@%*8 MEM?[JF^>X7Z'3N5KP\Z+C;P 7>37=YIS"17G1V:[*$\YZ]M7*:*970LI(")( MN2=>CF[!!BCB22O7@2,1242NA; 7+\.=RXADQOI\5XE_(9ZURS/D%-@8P9(\ MH0$H7K9298N]LDNXX[]2+RZBI^"[L]_Q-SQ@JIFPVH%)'#N9EI5Y!(HB?*=M M#'KC+V8N3Z@5'+*(0^?4J?+VO:].?747W@3+,DK^U&_PZX6J_/[[VXR/?6)A MRRS,SC-ABLF5WAP/I/F^EL;B-N9Y;3_+'%J>N9LER#ZRT1T&C/'BKIR/)-0. MMSKB6[M\XXR:E)W$+'^I2+'A.8QQ+))L&E_F;='4_P-'ZORJ4.*3X6IIDTBC MCM,YS(N[7Z+VR/LK+?G]/)E^7!0:"6=^4;IVS'^QMT>-!3@#<8ZEA:JAOAZ>;G1[8D+C@S**WMS M]G47OOI[]7/+ZNJV4?M5KZO5?KYIJ$'7L,Q&(VW^W.S9-*^<%#Y60WLB;B;/C\.2/T%R'=,V%4^P>]FL?*>9Y;\ M9PK.KM%3-^)"WRXUOGE/>]#B&!%I(I/2DPLO&_:0DC.H[S60RCQ6H6Z-("0[ M!\K.F)7UW"ZQUS,GPGX]F4@DV4PLK+!>A&6'DGL)HD5&*PD ML22Q5R*Q&8 I22Q)[+5(K$#_E$UBS]0D[%)4?[M^N;#/B>V -!RCU/AUI M;XE2EFH-#MM27QJE^JKC$*7VHY3A&'4;1?/[_=,ALM,85S)S^WHE^FDAK MNY(-6KE()N!V%P=+6V"RXU04$:9QGL>9)[)%;!S>!_"V25[U)KZ-%UGY,HSJ MA0@[]\!QQC(,8EP"ZENERO'9Y9=38G>?C=97*$9C78%8!T=0E M&IK:!(ML"5?K!7SR*<=XF849^JB;X:GDE8INDN&K8,7RS%LLLB)E1,GUQJL+ MR==0+@?,(,?BK2F".'@:LVGJBQ(A^#TO^H39LP?73T6)*<^SY>7WS_C/ HHN MX67 8F4"7+A4E[H"QKI2UWG9=$P^V/Z%PV]#40Z7";6*Z=XQ0F^$4T_P7'SP MB4]=WD33?!V50C4!NX38>/BM^[@L]P%)_ROU%ERX)VP!FNEE1>]LOO##9R9* ME%D0BTK:997HB 5LZF4IJB!1XQ\9.F'Y]VJYQG,,TX,7AF#-9@B0@X"7.5RD M&\O-Z -E)$W>$5U(H!A)\MJY]KG[Q,"[CWRRFUPYA D6>!'AQ%#7-U\[6()\?*I M$EV BN5"*75E %$]/D:(BJP5 %:B7UBH&_IMGPM']/T3NAQ,XM8PR[FR;*YE M((:U&GH4+XY!Q-QHG*,5\L-)<0H1V $""<"=P,X-(T6BRT?^@J[R98-AY1C- M*#"H^&7L832888#OP-.!.YXMNU\@ML$]!Z.0V/"AG2F.+IP@[/XY0[\O %,$ MZ-82"CGDE4[B2%;%/B^C]2,UP%T&5Q?^B@U(:ECJQ>A351V[EXJTU,PE M)_&& U[MR4TM#FPJA^$7C2'@'YN/;DNCE EYAE?"MRMN1_+*6PZP%H4!(OES M,1="XS[?+;#&$(C^0_2%2;R8;Z )1_^/9^%C.6B2&ZG\A%CV$\7"!51%/JV< M#&N.6JG!!6^?L_R2-T,JPD1X+K^B: M-.+KAKVH>R&M4#9-:(=N%(:L\ $13RF#L,KXN89^5AX<1D#0G"7HLH#W+56C M8^APA@&Q_/<%AL[:S]:&+7HG3,.2!YO&W+_DL%]YE"W_$GL091'+2?&X*@ . MDV=T.].(/R,VMEA@=KWE2UQ_R?+U^/]96% XXEEK,G$(=!=<8C!R*UH<-$R\(40]3+ MC5]=2LA2.K+X=Q@E*U'BHI6-"!4L':T,9+T"VG!5QN^WC;[VQV-A,J>,K5A,[ "5IIR$O8 MW80W1IPJ4^^)A[UBEMV"Y,B@R]/VC+>&ZRJ_YI(><#;"W@"!GDOYLLEUAOB.=PX? RP59&*X62) PW9 M+6\QU9)HE?$AU\-MA6@@!F.D+3Y)ON-A!4 RL\+A@/(/S@^\6[35*)W41 M6-W_'=S=>< &+!,&$L_%*EUP),Z'HD%K^1IX5[20OW]]ULNW\ B2Z'N<71?S M:_WBW5EO4!<5[)ZMK;5R]ZV*\-02_T,Z,4+;5&^NT\R1S]7YYS)28)SYLDB91#L*9O@ M_H^."/9/5O".V%\)78OGA(<28@H&HA0]9:.6;G:XCUM XN-/>,\;G %OCH%C MCMASR _Y>;=@899+4*O5$5 T5YP0KC69BGE!,<_2A<-*BV_F>_PH(MJZNT_+ MJW1L8R_\)Z1$EIR!'R)X%->*E8[ _(I$.#XXC.\^*D([2VV2O?G"S:[9JBO9 M+/]7.,G<9$VS;O5BLX]Y"AV_(A&^?#[8B&&;W-R6!@P#<<+ORAY8-KHOGL&A M,T.9C=ZH4=Y5 .=I9M>P!JV K]E=W=!; H33K'; _,SNH+<=$.[\SM3Q!$* U QPZP-5,E :@ M 4XC\<> P^I:L^)%Z9$K"5UXY0J61RV.7?C-"!W7L;B/X'&C.]C9$WRK5]68BIDHD'JJWVS?^7FB(R.X*71U20W.+Y(<]4'N.18HB'6- M4?9WX$E13J\HJMXS24^DX\N U$0F=FBFI?8'-BF*=)R!#<4A39&''YHQ4*U> MT[LATA1RO5X:/\#UPZ**1W8W%G:Z#V^TW/ M9G2)("-O&X>:IJI]K1KKYXF;I++>BL\U%33 M:IK 1?HH*2^E#^F\M,30:M?[?9"&#KKVH.?I>7J>GJ?G+_W\J>Y)A?\QD'>W M^\1[4>)NQ_MDN_Z6[6X/M^RZG"_=5/N'PO!?AAVJIID>,E'V/HA"(7/W2UIQ]X)T9ZH2.KTC&FRA9ZR2(K8D0'CJ;;= MU-T[I"?R,8:<+JG8 7KB M-*X_(STYAY[L'P@G/3DY.UZ9=J4--^G')1G2Z^KM^YD[@5>G&#J^L-A:,97&5_6'+5O'5@N2H'_4S+&Z ZDB/P3/P0_;-4:-$4S M)D4YBZ)0;I)$_-!5S3JP[0;IR6GUI''E,NG)Z?AA6*K=HQP^^1@#BD(Y?!+Q MP]#506,P8U(4VE%>&C]TU1[045X^OCB2'%!>; X?]BJ+E8CY;L(F2A(J[,E+ M1$*?%R_"&&. X\1[\!+OP/+=JPQ!:R:U,9./*[T&K0[IXNSD[/C?_\O1-?T7 M4A19.4/*(@]+:$>1D2NO>,MN.2Z;B2593473R!\I"NTH+YI8Z MH"9G-\)-\EBOGX=:3U,UAUS6V^"F,6A>>T8:*14Z66 MRAI._AB,PSE3IE$XSX/*87!4ZNC-R*HZL ], KJ\W6GI?NI6>&DTL#O'\U"J MB]];82$DCK?!RP,@^D@=Y6+A*TWM&-C_P#X)M)&N;@X4*W& M%?BDD7+RLDG1/JFCE"S4=-71;=+'FV"FU;R,D?11+A:^,E1#;PX;2JHH&Q]U MJSN0W5D]56:RK!'DS\F,18K'X\BJ$K##&@I=)1Z&IO8/33>^L@NH*^,+M>23 MBAVJT;B=$*G).=1D?\^6U.3T!W_3)"61CBO@DKB/AT')WHK 6A;M?M-#VETF2 G+\T&.S'=ZTG)PKYJ-'9R21WEY*5% MZGCM+'QE.W3)?OU<''0-V>_8B8F[,]#LQF%2TD@YF4GE$E?/0LU2>PYEA-X& M,^T&W:)('Z5DX2M=-?4^.:M7ST?-[FJR>ZLO+2/T2Q0^>+$7!LHTC(Z/(5_E M%8:NZH<"7]+5TDG3%!HCD-#]ZRG5Q-$I34%"OE VCTSL>&7U&\3D2$'.<8#H M-0F3DHZI!+Q]?="K&D8D=KVS3(H]+ M*HYH>A.D(DH*;8_T?[ D"^.=)M):*WPR$> _3K1N:97-Q.L1NJZ\B3L2HT$! MXTDO2,Z^\I\VWC<<*#YD[F[5W%DF)1+?BKF3!#^/S!V9.SE5Y)6FG37%EPS= M::X@N@U"%*?E(MDZLG5R"HJC]@B*]48LGB$+%"N9.S)W:VG?.VK^$3-UI^.BR<;?:,SN"W?DG#\XV[DQ@S7 M.5^P(.;MHQ7VA']S^$ _G<"W7J D,P9S=A,V9T$2*^&TU&Y:F;B)J[BC\('Q MDE'\;3*+&%/< +Q [TF9PV1FL<("'.T_TX")$(?14Q6]IUO\=_"'J3RR")Z* M81C?#Q_CUX5GM9NLG %K,@!4]-U%S%[G?_PR\>*%[SZ_]@).$/[0+]E@F<18 MBXIGR3U/\?4OC]XDF<%+>UW@S$^=(G$P>W/V=1>^^GOU<\ONFGVK]JM>5ZO] M?--0@V[/JG]BTTB;/S=[-LWIS',RMXYT\/%@RVEJ/[M) US+ #O2EK>^<%#Y M64V,80RVGD7G/V;W:_>K[WQ+^22VDO?%5J+ +G+( ?S*J?$-MM7=M-A31"2/ MB[Z:X/8=Q<(1"=,8_(6X$FXZ2)FDYS/Z1ZVL]&B[;WQVOSW M\X4?/C.\N$"'?)%&XYD;,V7AN\$Q+9NN*W_(:(PB6,]EV?.]KHPKO0,K+X@K M)^2*;35MQDY<.0-7#L7;./O^>%UQJN]AXOIB<]R2JD 1JY?AH9JJ?FCW<#I1 M79Y]+U%>S:8-1TE>I6'?BY-7!^QK4^^2Y%4:]KU >;4.[3]P\HC56NJ>IF_+ MW3OH$+7'\RUD9-/4KG5J-WXT?!O&"2:B1^R!!6GC,^!M6_;KL-^F?J!W? 4^ M!+E4_R);]\.0[9+RD8<:/R-6A\J]"2?-WXK?MG4;L8W.<7"*5* MPY8@:^CY"SY_XR,9WR0E[8'ZX0"B+EY-CV3+*5IMLV)213'QY.7F6Y;WR-Q:PR/7Y5NE.YE[@Q0F&2QXJ M=VRWZY7IJC[0R5N6DB\'9GP07TZ:Z6CJ%SK%$%^V\L5R+F3';OQTV7)E0C6_ MYV5D(C9;M\1ZUKPRH='2+W26('F]67EM7)E \BH-^UZ<825F&S/>"NS+MUI>]<7'3Z2ELI+!;$S8.11N!UV )682_@NFX,DQ#F45L M"M2-_-$=0JG:1N^)/3T9FM:=);"G?.<=!\*I\A;>@6T1_O%W=UC'K[W;0;0C M47RPUUX"HCM>67\]].G;<+YP(R\. US+%I3MU5X-#5HSG'&)];OQU[42H4M, M>9\)*J-G)6*+,,J:6;![S%'@),>F&MS(8:!IY@;W+%YKME%ILE'EVS<:ZD-" ] I^W%HFO-CF$UL1ZYP/1/V*GE;#]K MI[G.;71&.&$3B5LCU=$-2*ZP%=%;?ARAOD,WU1"E$K&_S 8K/9U^XD$3G@NR M'F6@%D0D1B1&)$;G%*/;[&%5O]A,40XKW=\;!JYQ4?H^>:8T,YK9]U/ED=&1GS M$JW.S<2:-O1I3*-P\9+P#TS5N!0L59L!D)MCC.8T/DFUP98K\6E>I$CH?;5' MH!@R,D;K7@)QD7157I%XI:M]8U#)(2$UO21/M%Y7.SM+6KI,X>_5'7D]9Y'4 MT+1)#Y4_7W7YLV98:L\V9"N /G/63RR.15+[Y5TS@PVX8,GF2\['U'97KXA ZG],HCS(J7C".&,=D_H]!UU3@1;X7!JH2 M1@KL$@74JD\B#CQ'@!ZB2SP]_[L(VZ-XSA7-">7!]>!2G%\)Z?" J?#A. M8^ =RPM1VYKVKW5@0VJ)B/S1E:SX,F4UO:NOD!837UJG[=?E;$0.AC)AQ13T M;G]U!@A;TO8,/F*!5\#!P9:!;,[=J?L01D"\9\6#<<9()N#O?VA=(Y^5,DDC M4*+69H/832[,(4[]!"L&8:6@ P%(2!2Q8/P,PS\P9&.LEF4/YIN/F<#O[N&O M *<%(^"'OT9>XL4SY0N:#PX6A:16UD9?^0SK!<&HF](9 MWIQK),J3T>W]I$RC<+Y9H1HQ!LU@A0DYKY:F )B"6'RE/> ^8H]HFKUXW1(+ M;<#?SKTGG//2OF;C9J;OK]2-0/=1Z?;235 <')5WRV'WWAC4$X;&1Y@;!;DU MYX8^%C0JKR[&]SQR%S_B$<0$1 [V/BY@YKY$81+Z[@A%(WD, MHQ]=I;RY+EB5(YS::'X'/[5K?>4U+R7(OD443E(@ OZ(P/KV1A_3!UVK-2"S MIK!_YP!7HSG1G-J=DTE@?30 #4!@?0361V!]!-9'8'V-ETU@???M3Z.-L"<3O^G!MS+YJ:A;AVDC'&,/J7@)NZ/;+'\CJ7'Y9YD#M.9> MJ"2KL\/J#,CJD-6Y4:OS2E-MV]H?>H(,SAEX8G3-\W)$CHJG*P\OU:_T[1]O ME4_N>.8%-:?!O63X*A%M;$T=F$W/4 0U= 8WT^H."!&,1*)$*DM3=>,20D&Z MND-7>UV'=)5$8@451.WW+@'I2+JZ VFS=Y%]]<;O4XQWRI?("Y)#?>>K//_I ML!_3_8.$C-&L;I\B@202:[KJ4 \,^1BCV8WW8]+5VQ:)5[9-@6ZI&-+K&F?G MR"T'F[_-&$N43RQQ_9<3:C95X_^W=[7=C1I+^J]PLLG>F1R,A4!OGFS.\=B> M7.^=%]_Q9+/[Z1Z$6A89"100MG5__595-]!(2 )9EI#=7Q*/@'ZMJJZJ[GZ> M1E6<9Q41[R%V,ZHB,ZKDU0N7"+W7/(1,*$W=I*F'X-E2FEICB:@JKT MM!)[0=5#&4I-]W *M;K'O)\L\S$XQFM!))+Q>^&\.4=.CU.*!''//#AE+= + M8;4A9-I#3$ MG85UU\24*:GS[)8B%U2F1)D294J4*7DR:9\R),\:JQH;82B+,LM M"*T\=HO=7MFYX? YY)BO_" #04CL=&>Q#PJ*;T%SG#HT0QN%; BC&X[[)PA- MW[8:C^SQT3)-8S0#E^0;T10%0^T"ZD#6NE].G5^+YJM.QB.OO@W#RNNA=&DN MLPCP.P,[H;GXTD$(LA(;?4(^XEG':#[3V%%A9QX8.L\M,9H7041,AJFY^RT, MH@@YR(;>C,:8__")NK/:INU#+)[6->-0]'Q).PK84=L+%)X]H[%C_DQ=4/,M M5XY,K,] Q"JOI)SX+M][^%/N]DJ:UA&,(,N\@GM8Z7 Z./7\;A&5*IM M--)2D0?6>= F#BPFL'B3( N7 Q_C/X?Q> AO(UMG1A8'C8UT>OQC,V.NQ>*@ MKU'@^XR7M?#!,KLA!8$3T*<)&V PF/^"RH#60]U(!XB#R_R(S+>^:\[28@\F M,9G$U\#^BKTI#00-C.-Z8V\V/\DW&8>XD4W<8:D!*YJ"M4;M8(:!-V+*6R59 M!6O!*K3 0]TUJRZOFT^5Q.-)K)AV"TE$RW$=VUB+;>,J7)(<^:@$YPN,FT/F MYNH1592!LO/XX-J'<0;]]AF7*!"N>R]"8X$3Q9]JWYQ'%AU3?T$COC/J+_;I MUAFSZ&#J@:2GDUQ[(FR/QL1,Y,BP)6.]:\[G)>.>+3OKUP4RF:9,@+Y4U 2J MFDD%KEX7TJ+A*_A]XD4H;-%1:=-7%C$G!#\!DF!;%'GL496X=NULXV9(IQ'JG$"1X01QA)5[DC@/LX,75%PWZ M[_-<&;SG0!CBNG&(#:[02WU)RA<&-R?JS9FD;1Y5>XF& EX4!![/^?Z H MN,&=#]\,M&"Q7<+0=E+Y+!M)8B(DR^?P]=Y*2Y&M_ZHZ[:IU@@PLC6OYR#=; M(<"5B%6"&B(J$2C7^_A!Q)U/>?ED;8'(0PW]!@7#]^=:W=@ M60KT'EZ5!^()7;'7=*55OBO4Q/S<%/ETBYU8ZB]8U.C(5J[5X?A!G30V'.(N M(;@-,^=1 R-+>F59N =96LRS=(UMM'_**:+5Q4Q,4M+*)*V\84++Q7*S%O*R MW'ES\E_"N\ERF:X\*'QB04'!##T713>:!>YW+?8](914Z2,+8?VF$>#/@RFM MU 8M[D*BL9)I.IFH I+GNLV8@;2WT^^ADSD[MK[>[E*]E;:$7M6^KZ7V?=6^ M[ZYL_ HN;=)<+^+Z>>L]:I^X ;@J, !H=7*-5+A*53R-VEOSQ#N.6L3,_\WSJ(GWT3A0FS"_:G<5[::A__'%FDHP& M-TOB]INH63PVX-'I\N^6;?3:Q8_ ,RO\?551/:/1*OYB54FK?[<;;=4FU:9: MMJFUMJ2M#SL_)^NU*D 54+,"2M[3+KX88E8[^EQP+:1>I.\K_<OXCV?6D\ENH]EP#NV4[67-E3V4P6\M_1:[;M]0:%(%1Z^BJ 5!T.5'F!0 M$T8\LQ?$$411T1+,]%;*4/M)7;HR>ICEM?;C]!.F2]8"G*B!4P*V;P%[/<.C MQ*BD&!V")_=0G16*E"LQ74L&J9:MGQM6Q/L,Z'"@1^]SW<<[F= M.3/I"L(6 (#'BQ13JG>UQ>]HF@V]UU'XM_6;F6YU9F(%@*O,SI&8G49#;U0F MJE%F9P_ 55U%ZJC,S@LU.^CLM X$5ZVLSIJ):6V"RWN)1N?%Y)J*.WL5A\%T M.[J?HZ2.:C7T9K?JVJDXO?9@]7O&(94BT;)TNZ=TM7X3TS054:82 MB?QA$TMOFHWR).9*3?7VD*?YHZ6YU#8S8R"0S 7M';A^90.\N9 \(\^A%Q2".^.X$ M*D?<8%%^5F[9]BTB)ZX4540@C=$%153).\\%:85:"3;8"7T-A.@.^D>F6^ 7 MRQV/L)X'$EPABGW"/O:@Q'@Z'7OX+>(?!YY+,&0$L\U[X"7%$.AII,&<#2)$ MB@SBNY'@)II,0P;:$&'AP7#(2\,&#&&T@W">8IC=A,$L&#M]%,W90Q!^YR"5 MR9A/V?)DT42 #>KNU ;55^,D,#B9W5'!P)7$M6KVC-;.(+*J LKM [9+M4FU M:;=MLA4,G"I %:!@X!0,G(*!4S!P"@:N8K<5#%QU9:C]I"IX)04#IP2L!N.D M8."4&!TK#!P,F,* *Q[!5XT:IEKVDEJV)PRX9S8FQ2' M?\G?V;L M1F40!F5VE-DY#K/SIJ6W&ZWRX 7*X.QC3HP]ST@][LP<>7ZIN*<7GR^T3XX[ M\OR"<+"4#!\E)(IIVGJG6]5=5V U>W!GK,J0MFI:]N/_FYU#H'VIF=F0=N@I MA:GAM)B6WC:KWAY7$[./B:D,7UPO2+1:^I'6I783>OYL6R_R*",AV]3MAJ)C MJ=_$F*V#I.+5M&S0EZ;>;:L<6L?\9 M>3?^SJ+=-6P6'MYL4Z"/F$FI5-0'QVYT QNYJ7M=K2 M4+-2NUDQ]8:E,L(UG)>#[6R]Y,3CE]F(A1LO$[VX,,0V5OUEI&(HEMWZS MTFPK7:G?K!SFV*J:E4T[)U5=>C4KSS\KK8/M9[WDS./:>^B;.OCJ2!VJ];NV MJK0==5>ESA]!Y/Q2:!T(5[-6AZ:G3.'/P3VD.J4ZI3KUBCM5;SZO M]WE&%#U'UY/P9Q%9SP!I;GRD4'$TD_B$TL>>K^7N;R<%Z/S57OY5Z:!E6A,R MJ3@:II?S[^9VU75BR_&<\7B.C#@1E$*M02JOC.T(OEK"%UNHQS+L_ ?2K2&9 M48Q!AS07WSD 2TXB22>TZI]UC.8SR0<5=N;!='AN"8FY""*B]DHGY;UC-#2QJ_9YU,VE' L][$J8]#8/\WU'J1D^=.W;2AU'^?N(,H9UGSOC! MF4>XK,BJ!'HDC]UBMU=V;CA\CM" 1RQ@7H.0Z C/8'%E(;X%S7'JT QM%+(A MC&XX[I^@2+:MQB-[?+1,TQC-()3Z1IQ<(-874 >2%?YRZOQ:-%]UXC@KQ1+Y M;<1RZZN[8&K@3]G&+++TI2Z L W)9_>@;]@+3OR(JRB4G=034:FV8::EPL/0 M>= F8%!"6,YIT1!>"#[&?P[C\1#>1JK(C)T-&LMY#G]L9GRC6!H2( :^SWA1 MN??U I9!BJ GL'1-V CZ8(:H/%0-7+OX;@R/R(9TBNP$):RMD4.3>*8$$," M^ROVIC0*-"J.ZXV]V?PDWV A/*'!+WPR20=.3 U=Z$S MX0MR?N5L9-31%0;K8<3\G<:C=9#\KRQB3@CQ"0[>)><^QL7QH.(?RHT:9(W* M=&"G(L[)9H<@5,MBN5JHEV3*+I)N2597.4!]YA$_][*WLBBKT-X@MEUCI*S"+Z]C$G/ NC&M%*=_D_W.-RL5-T2QPOY_T::+ M^Y1RRTCN-!<"32>S@[#NXQS^QD*H="ZB94;JX>0E1BCHHFP_@-?!3@;!@X^R M,?0>X9$3@=Q$1?._;CGH@W& V*;"VD2N%68-9FP"U85,,*=C'SC1O>!.Q\@$ M'[$(@FRJ$>0O]K&-KAO&+#,'"?TZO,<7%8U-IN-@SJ M#%2#"^S4F>-R"C[N M'TP;.0/-#X2BK1,)J Q4$M2]POIK&ZN3D_72"V[D*<8!08LHPCG88O,'BH$; MW/GPS4 +J%6>%'FA&;,DX2Z7)T8/.9=C!NGNI67(JTUQC4TIC56J1IC]+TLE ME->V,8>M*O]_ #";B>R^*0A@Z)@I,RN^,8^$ZCRWBXV7^NJ;%6W8FI_C0Z9J_TUM;^V M*TM?S(GYT?LK]@;>;$[KW84S]?@]O@@TVCV:E#(/L9QHI'T ,WC85J^_)CE" M8XZVFIQYDJ$HGN!2\6\,EL&,NMB-(7:C0N(")P\-YUF%KHO:$PM)I\%,=QB)C9W[F^=0;^NB=*$R85;0GBW=04:_XX\S4& UN;L056%&S> QK M;_[F /^]8QH]J_@1!(J%OZ\JRFP:C6[Q)ZN*6OV[W6COKE'6VJ*V.);\_+3& M-2I@P[7JM17VEEXK.+-?+[[F6[ $G[@EN$)+\$L_//TUL095N'8J7BL_&$CH M $U1&'%_.X@CL'71$FKH5B)4^[E&VZYHS,L.E5U%^G>%MG HM?C,9MQ5H%@+ M/8+^7-JKRC*'"HSA=5S,:W;U7F5 ^&.XF:<$]F4*K-72.]UZ74#<'[[CP9>- M-W%$NUAO:C451T"=YL32V^VJ>-7'A==U<%,@ M+($V]'S'=W>@_$<)*?RFV=+-=J^\]BNV@9Z!00_H%7..Z=,=_G>"WN@*DW%-IM#>?EC=G9/XW] M*W &IW3Y^T+DGW>T6 MP 1@Z0;B8@,.M!:R 9M,LX&<.#!V:1'\4B<_(,1Z M$ZGA]TX.>S1[K6J F/;9V&-XNICN>^$IZ$>/I^A7"^\LN&/4T0=O)M2 WZ2; M)=?N)35Z@#&$6K0H'@X]U\.1HMO!C%?W$(3?>6UBS(JU#F89&A R?G@>YP.: M.P;)GM'Y-1^63,ULBC-LQW(8?N%<(1^Z[*K^^7*:M'82=)$=)Y0G/F\TZ#IN MWFQ4.WNXXLJ%S[+;%6 [NO+E>6?P9TSOH:PDE\S\P#\A<:4;6CI^/(X)_6S MIB%SO>RB8.Y"(%FFC@PLM?*287(MC3?(RME)M.23J>.%7(KQ5Y)AEL&6< P3 M^=;:TEUD 3^%8UI\-W+(Z,[F#"]4B$/Y>7N=Y.%RUX^E2W)CS^EC:Q);*.ZI MT*VV&3)QX/NP#J6E&EH%.;!:&6Y ^7MG%>2@)^,2[%X.NMF"4EH.6L\P_E96 MZG9"D7:CQBM4*;F2;I"TMY"MLD!$2Q[33J;1-L3^8SJ7.72C!=DV$W:AXKK*J">V7=QW7G+$42.V=L:3BZ%=^4[E MYI @O3-;*=2INUW==#0GF<5.3L_*K]E+4PG1G9TOB^,^["!ZW&B+8&E8Z,>3 MA4G=(Z1[A&UUCU#=(]SO Z[!0N" M9@G4$@[40DE8'@[+%6RVZ\V$9J1H39'Q3WC+IF-H6=U7YA+"TDXHZI^^+"^7 MM3FM6O#%L\K.\M*]'P$B<^-%44RE+PP$?[I!L+S!?_W@]9SNT&EU&X/!T+%M M<]CMLD;7[+9-I]L>]BSG7YW>#X>5QN)[3Q?H72'^[[GK(D(108@*U*(:6]P_ MQ"Z/,PBF*%[W$+@',<$K);V8!F-,1T<$"HBR).":8*&D?3P22['.0/]O9_ # MES;$HH)RP@&)!$FN7"YHH>M-$>%3P,N!M,%S-A4X5EC)[[Z'_Z)"27S/$2[3 M=;0WOQNWAO;;^?G-6[Z!PYN6QN S I@:ILV*LF:)#'D$QH,R[,[W#& *M.#/ M>'#',NP9T+U8N-@?0YF3&LF"90R M@X@I-WAZ RJI75_KVC4\TKK)1M6Y[\<$%3 -X#ET_D,03C2SW.7R\. ;6L#NLU:VH"O#$,+V0+< MA($/?[M\+NMK!D!F0)Y 7B9"@7!9H\[D%%;NC XQ):LLSY'VSQA^![=]7B#4_]Q>9EJUE!GJNV5@IV&49QS[$?4)?A@G_[[D!H0V MU9U^$,\$3K+VU8N^UT&JBOOV04!P72007'5I;K$2G,/@2B"$:/42$+%LFS8[ M&)$2$[$4*7Q%3CL%DQHP/X#(W1$+W )$&2;"\$!$LD6<8QJ"92 .%YD-"!TF M#XF;)=@E8%;M/5IO<)=O\'@.?_$J#H,ZN_=?LD,FQ*2$TY*<-4FW.G!0G<$] M"R,&Y@+W#%URDA&P>ME]N"0$ [1!//?/1-A#H&%!X72<#P:48.)G8H)=M"DW M%RL;@V_B%$$3<#\09Y.+ 5A&W\DW*6D("NWBL9RT6>)X 6V0B.T&Z 2T,(K[ M2'&UL%&S!)^7NZ%09\%)7%I$;J/P$+KRX(2X3>-#Q.3B0(59O_I!&!(,$+DZ M(P;.GSC>,26+6R 92;AR"& MSQW$0>8"0>89X2D#G6,VBN-TU[B0;O M8N2QH7;UR-R8%OHO>-0/HG$"_:-G6=0DGNF@IB#P?,#8((]UZL,2([(=X%QB M9D)V K-Z!]D(N_((3],1UMX@OPD#:\Y]TZ\Q**II.2=FZPU[J]%&"E5SFQW_ MO$K,R3F_Q&CV+!N=8 TTCQ3T#7DQTEMOWXKSN]0+?Y#\*=3413HMOF12)!A2 M_&=H[^F813Q-X/99*CXZCSNK#RM?F6 P1'8%R]4K-6YMF*J7'7;T%C/H6O$0 M-YLU]-# RR/0_0C*H"0:=5^.U$4RBZQ>7TXU03/C*$FC\8$4D<@#YL5PLRM$ MWV_BS:39S4TIS0#F[]A YVU&AT;/D!(' @P>"\=_( L"".F8'UI!51#U(T4: MN"T.ZARN4][0RW)\:G,8-X<[:G-8;0[O"S2M&@Y M1&(;M'42\UT_BA6#R23V(9B895C2\LJ6G?W<>B5S* $8!M,0 UZ"XT8,5C(/ MXWG*?H%FYPXB-AYD"_N6V=):Q)XK=H$RG_N:1^KCQ*4AJDAI4/BB 5VL0V]6 MHN2&(ICN,^83689TE).PQD4G7;F364@8)ITD]X)"3?@ ]PE7^1K#MRM6H[?R MOL):?X&O.@9X41+Y'0@FN'HBVE])(-W3'U:YKU2U +.=XD35![&9M"@-;7 M"?'^0!SRT_FH!_TX\BCFR$Y9&-KY&/%@[T82B0^YT9C]OLM.6(NZ7,?'I%*? M=FR1;R$YU"#N'.")PLP-'PARB=7;N=3I0:#Q0GE.2PP#AF!S3OHPEUM#'8QG MR5EQ.O8 Z]L0;!):)S)+6087OH^Q%LIG>3Y(@#>(^=&(,!DNY^X.EZP9&DK9 ML& .WA7KZ6(J+,G6,0$"X^=&N(@^J*2"=6JL8.<&;0)I'T" @K#&RI7?FX1F MHR_5;+R36T\_F>]VM!.?[/3C+A0Z.W$421$\I9:'O-YDSSZW,B]MW*?D6?*G MF"5P0Z_/%UXL.&WDUDL7!!;UE;BFH?WN@V[B'2AT%8CB%@?UBA]&NLW?9OV= MVSIA_VLLGU] O%@_C-%&V\D!1S(@ >YU0!\&X#;S.7=B,- B7N?GS:1#:RE= M+"5KTC(II7K#'XD3-H7/T)4+ILP_X5)-@4527;1X-DZ<=1,BO7Q 3%[,M,10 M0^'B)+LPN! ]W/,L@\_N@AD_%Y?6(U)P#K\Y)$J7NBL-!K0CGG(Z[89T12_9 M0/JQTY8.B(9L JL3.J")?^IE(TOKRKI1&@30;URBQ($[)@X?.2Z%-[1"\8QA M3%N4Q'*W8PU([\[7$3RL,>9)%QH >?)YJ9Z@5,;Y@A'E'PSCD [N M\^.$=*V]4)AX)^$M-'6<;$_',-''^,Z/R:)APS!#QZ0.9#,PD!S\XL%*;D)+ MR[%H3Q:/TH4:9& "2QFRU,F@3P=L2ND[&"CP!I"W5%@_.8C%ZH58@4"YB9:>Z3Q%GUB&BJ"#P4XD&&"B%T?68C<,TVS6CV&EUZO&(*,:5;-&V64( M,-,//(1^85#LNM!\ M0.E-&-5D0+4WJVF:MH50W8J=J$Y@C.?@78XU4SB!B7_(?TU\PS(T3UMA@C_7 M -<*_9$V')M+P(\*+%2!A:X1E[JAA2JU/PZU?]G*?1PJW.GI9K,J,8QBAR@S MM.CX+3HK^)O8,-K.52G#5/"T(:R7>%(6;AB]SO&S MABA=5+IX]+K8:>L-2[''/0VYD[9$;C6$R3"F!>;0#SI!S$D64: ME#HJ=:RY.F[E*M0DG_!4!WXW!#N+-#K'GUX\3."PBU%]059DEZ-26TE[0M)@ M1TI8]V2#LC4J2:&2%,^2I%AFMBM[_\*J[_T+R] NV="A.V&_(X##+?.]()3N M7=3W^/-GNE4S8R$=U4^@%9YP3Z9=WWFR#>T3/-%NG2&;S67$P1

    K !6:CLG)F(=B$M'>:"#7[S',RCW1B>-#S.H^./LC%CR8)3&$<@8ZOWPI-/# MI:AT-9\#?_N:.C_\*M#%?SG-U?CKXK]U&.D!AP;" \);C<*W<.+/RC:M^X1! MJ%016%%^E,V(10U*^[&(;ELA%%_H/LNL6 MRBYA:_ASX@V4WD:F KITYX0AODH7^!;T@GLAC:XH^2N[0VP:[/3MR3_>;N]T MF858X2S[";U6YEK?[=JEC2JC9U M;*/=[>WJJEBCM;ZH[:^*%5_B G8H0YT-RFK:2.&)5=2<1_F@#=8#M'Y2X*1 MF"88DV(LMAF$39LNVV04#S%.R[XDCI-EF+N3C)U=P.$CL2X&8VSGP]$J&8+E MEF;&!>O= 9LFPK+1;#:-SDY/'QX>#&BA<1?#IP9LZI M:=M6N]T[A9::9L\RFRU8,5NVU>J<#LQ>K]ON#=BCU10AW<@+!\AIDX)G?&4$ M;00_XHP)K))K']HU#3),UYLP ._MH]./='QHX'6OY!6.EA B#RPCR- @44_- M,B2J#H(Y2!$"OQ)$BJ@A)>Q(U^';$_/T7$^6=@E[Q+0P$C*;Z*$M1:.[,P-' MHNQE-@Z>O@PHE3Z<2MM6IV/WS%;#;'2;]BFH\HE(S\@*2QI-"@3JMC,EYS#I M> 6@2?D'LU5:[\T%O?];Q/6Z>_*/1*M3Y&I$UO $^)3/JS-Y=4K)42O M0LF;S4:S8W=,4/)_V7;+M-H;%^WW\Y./SD-4I+TY8/3DH.[GX)Z#P)DM2B@V MMU[("Q0Z\)?+5QK\PZ]F8Y=.^-]->XKKW;#;K5ZSU6B9;;-Q M.IN '][JM#L#\U_LT6PDBW8&8'TUF8X#HDG5SN]")D"O%Y=<3/GW.;Q]G\T> M$'MQ:9G&A[>X^#01"6UV)+:?%V6EQGUUII\6ZUV.XU3*[%;?"M$RUN MEM3B[O9:3)KVBL?6>^T#4-**EPNQ")&AH:RX9,5M9<5?C14O]L5LD1(MRI$L M66C*>WP,_+N3;\@- [^!,&-(AM!VN;2)[+^5]\;L57L>&WTR3:FS9=8Z6:+R MG:6/CU[@V Z1WTOL+ZQC3IS&882,]*@ZMXP?/K,:S>2S6R?L.SZ+3KX\CMD< M3W[]K%0%5*7.60BE*IM5I;E159:)1)6J;*$J3;6J'+>J-+=95= /K*I*O4:[ MI"KM@#6,D\W*=&%GX9A&O9N;<"8[H29\- M!BS'JBRW)SF"_?;G9SB$>302>7OQ]U,-MO?R\":(1V M@\1:Q5'0&WZ?>L89I62A(AYQJ,!);@UGVSSF$R*?9>0=\;I\P3093,\?@.B< M6>U#W+O]^0/M5"'],P:"Y;A#Z]'RGS\DUX%+-']O4"V%%\'K@-_2VPE^B]E2 M^"TO"+]EOY)9#%)P>_W;Y_-OOTNN3>W0"6ZD/#(FRF0BYC29G$%CY!$LAIK9 MLVQ=?,AO14)1(X2KB,=SC3)T XY;$'*T JBFS[0(9H6?(L#T79^-G/$0SR5@ M020EX@5$PF&QCY!56%Y&T%V%"?HH@ [LKM%K5&.R7564U3.LUGK^V;)%=0W; M7@^:4-*KW*TK-O$&@S';[TJ#[MCB>9PGN.$+J[=I@:BZ(I]'IPKV99XP(]P6U<*C!K,M 'HNB MM<@2LLC#$(GBS!6;V$MK]-Z;^>8F]'S7FSKCY=:]??*NM++ARH8_S89?.K[' MQKCY&$\<=[0=-I(RXT)N:C.6]1\QBOU6G"TB@O0WEQAPG:#[/FYZP80O.'-I"6;N[.\XVM"*K8:JS-=I_U@,(?_C6:3\:__#U!+ P04 M " !Q@_]:NGQD]@T, !:>0 $0 '!R;&(M,C R-3 V,S N>'-D[5U; M<^(X%G[O7Z'E97NKQB$0Z%RJDRD2DMY4)1TJT-.S3U/"EL';QO)(+#Q\^_\VR?K]\O$-]:D, M!CX6+F4SR[I09%9"I0^[#=388E=]E9!SN=8_?XQ#IN8]OJ=%UB88>, MK>Z)W3HY(>U.^PC_,CESNL?'W4_'CH6/VVVK8W^RK3$Y[EB=3J'K>;O]W=#-;01 MC_6]X,?2Z)XPY28:'S!\O#0\9%=3'8WY@TUE3VGOXZ>@P&2Z9 M>07LO8 +'-AS]HY@EG@-"<^G@=M->5O*Z5B'+>NHU4!8".:-(T%N ((^<7'D MB_-&%/P98=]S/>( OCZ1""X-2-T6F$V(^(IGA(?8)F7LN_B D/2[-PLI$RC( MT+J8CY7.G E%UD :HSMJ8Z%"3X[D,%29EQG?)+[@\ILEOQV\<*?1+"\UXM8$ MX["2Y#2-EAY?J:)!$<9Y:N22R&]60F?)2U:K#6!OK,,BC*OID-"]48?%5D)\/EAXUE$MNI M(C,9+C_DR,1!0(6BEU?B:V'H!2[5%^"2C)FS)' >B9LLA9F5-EZ76Z>GITUU M%U9!18R9S:A/B@X>E56C&8,N*>-^1:;24KUA\A(P>@23(D(V Y M^N5MD$ X+)O*WKN%00D+&8?G#0XX^$2[:)?M=XA;U7X@\0+O+V$]/,&J6@\D MQ/^_-]S&?E7#@<2._$VB7I*/X#[RG//&%84DLX'DM6^/MP5)A1*J1R?L$H:+ M"+PX5/^UD+5(2"VDJ#XW5\>N<(DX<1Z""_5Y=4['Q/&0 L(5KY2F6YY$N63Q MQ<1[A3X-./4]1^;AE]B7Z<%P2HC@%?R\CD.![T]/N^U65_I^")XC<^;\=GF9T1K'9YL-#')=[_J"EXD!>R!=*\PG][X]'FS9UT^)R-LW0KS#[@BQ;9&8%UB[H%' M!RDC2L.31VL$Y)-, #UN^Y1'C, 7Q47Z/\VG1@@\$AN4[]FJ.>$%DP&C 7RT M=6"6!L/ QHC+\2HNFB%:<$3++&L$T5"2#%%"ZY(LZT15#?88[]A/R+W!$L/55O4\JE-H'PZ7 5%\D&*$4IS MJA$.]YC]( )## Z)'3%/]I]*PY!+;$2AM8K"@@U:\*D1!K?!$RA/6?D"9D%A M]'9[U=MSVAIY>"BH_0,22N+(8AHJZ6H)[1IRH^^/5GVO&%F*$TJSJA$4D#=& M,ZD%T8_6G.[)'>7EUZ"R_(Q@=5;!2G&.']AYG1CT4;*O4V]-VSW"+Q6>%&D: M(Q+=[)*E/*W(:^3H(9G(=.21R/U@*+3*KU>KA$:79ZKOF 6:\ZB1W]>492.9 MH90/^6(NQ8ATNZU,EE10XJ&/FFN=5B%3B581K9+LC+!ETJTR=5\=\WY;ZZ/,OR,<&6V6HHJ);B;"$ ?8Q%[ M%(G\W1DG\HE^FRG2UCVX<@_>AL*E[_D1K%)SX@%ABFQ+F+]1NBE"VIE]G\(( M2;1)WKV*]4$/KGHGP5:57*Q3FA.HE93C-0PL4P&]\3I1F;$Q'#*ME5(U>MU7 M#A,.BTF\>D<-'TUQD+#8=@AL(-H8))LUV?N:3BJTX+SSED==!,)@*8WDSG9?Y1!UR^R#-KZ$K,=;8PAE^E(;1!R6D%+:9@=_ O2 M6J*TFBC6LY:!F-M"K!H_A4R,L&>Z76L;D37$)Z^-.)Q"\(X(F\&TN*-0U\'' MO'%58=R&+"/:F<9:?F\39K64;$EY:OI+X?K;FF;H/CB4(^ZQB#]1M_<$'I&W M;R@;8A]6XK'8;GA4EV8,D$RC;UV +&3+A7\NW0+QEI2/I )U#Y%YV[HJVAE" M(W"9_EZJ95Y#S^>WNSZMZZ/7O>#+]_A#*'_V;'"+)RK/JBH\ MC5!F&G\%4&H1*)&Q!W3NG.]$GNA#G-X387@BBYEHIIQ5^0&Y*7\3T$>9_ET! MT(DX%,M#*8%[U.>>4E>W.XMS61JQS33C"K!5M^H]ATON259%M");(ZJ9[EG% MOXS@+>)>5I(Q"C(-)5,4 MJ$Z2;A#'+>3Q*UI(1TK\/BZ6T%(M3O7-^0UG/<91,/J(K.&XO0"J+-$:* M^27_E4A)JX! !S17 HUH3ASM8R8-8)^ 9;:G],.!D]YRV5Z4E!!BC(M,X\H4 M%VFAJCF]M)VTCX(E@#R.)Q-&)DI#^;Q_(D%4O?VUJ0 C^B7>=EM!?TF@SBN4 MR+\Z\I^;RZ=BZN]+)V?*@#QB2Y^XY _PJ!_6>,7/4 MC\6K"JK*U?TJ+GC@B+^+2AX$-!'$B&+;%>=4;J*$$G8O&OV?((5(3'B/SVA=$H/&_H MX9X@LP;2)P_.CT@^$XF46[@M>2W.*_>6WVXQ8E[(C/ MTLMW;_F9L;&7WL1S1_QRC5D RQU/WB]4;_OUYN\?7@^&O=CXM!NTRG&L5."P M=:/U%6 /&I2PMG?4_R>PA;+_0/Y[3V9C>:QGOF%K!K\C< Z=82\H8<>0N@*6 M,I(<5E]LR+K1NV#)^I>+Y!IDRQYZ:EKU7$'8OPAF-S1B:^?EFWB:G:+/,A?) MK;$^?Q*L)V-/5(K;&0T@>6"O)?R4O(# M0;$9Z1$[H?$L].DK(2J!&$3,GD*F(5W[X+I$KD4#I<[ZYVM9^G=:,!.B$J:" M)C)T\ 22JI'^VPJ1!.(*AU*Q!_>2@+[R(0#3*G!^(URFSW?TF; [;^:)M3YX M.^,*4[5B((1:MW=SS[0+ MB!!]+,C\S>Q=0*2$DN\X3\*X)MW:@[QG3ST"=44_BK.TQ%J=L/&MY3U5!.W" M@WX[5FTM+ZHB:!?,Q+NS( M$/M%%+M@T6C*".D/8,442L. ^/!_L4W%-+M@E?JK3O<0L;YACR,S;A>T5^41 MQ+\3V<+0'\H=^E-M4%O[^@]K7GSX+U!+ P04 " !Q@_]:#!H*C.@9 "* M]0 %0 '!R;&(M,C R-3 V,S!?8V%L+GAM;.5=67,<-Y)^]Z_@:E\7%N[# M,?8$+5D3BI!-A22/9Y\Z<"3$"C>[.%75E#2_?A/-^R:[4O!?.<(NKYI%S^^8-_3%SNPB&UJ%I]_?/'[IS?$OOC[3]]]][?_ M(N1?/W]XM_.ZCGG[[QQ^C9SSKU<_>_9 M5_OFIB_B8]G+?_WZ[F//IZ-HY?("\4_[\_I"/AG/R_(/^X###WB7SUO^'8(/[[HFX/#.9Q^MM]!_O'% M83.E+\R*2MCO]27P1S%>?SI8]^>S]X>Q=XT,S;X8&^MU%^CBT\<_]=IYP_?SR M[V4S?)M)SH5R/! =F28R(*]]!$$ *.C@@U0\79ZQ,KP>Q[<2;/9]6$GWY(4O MRU2^A/G0GWZRFMS5Q#X4T_$\5QGSS*FL1 J:"*,MD2(+@H/"I9B4YDDYRX,= M;WB71W*!,[M=W&D['#*JL!<[7Z"HFQ-M=HS%=_$:F2ZOI)-OO.R7!P>K9Y)F M@(/3G\]=>S B$X:VSI0?BQ2'LJG,;QB/D)0J$)E0'0V11AI4P#02BSJ16USN M*H;*HK^/RSCFI(*W) ;5RE?6235EL!N1)>WS#*D/71T.P1TV,$^+/KF"-ZB MLWP []J^_PV&O?S)?YTI)2G7N:SXF'"=/ [BE+1H M;1*-**QJC/H @V\6D'[QW0(#K?X"Z->0F]@,,T5%=A9';D!Y(AT&1(Y)=*UE MA!@R4)%J*Y_[43V$-^)Y\J:R2*I1Y8+V^Z>?+V'FOXWP'B(Z-7S%/VFDU[/W^A[&/J9"0PH"YEP83*.Q0M4-^ ( MQ:%!E%YI[VN[$:LWU\'_:HESN1AFV6B#P0[#H!5UI50N$>=4)"DK:M'P&JYK M\_82@"DYS&M(]II_L_;D5N/GRJ\ZQO%;NX@G4'QB: 4QNE6>8G0*$HBW#JUC MDI9I9;B4KK*<;P0R)=^V@KPWG^QJCHYEE M0C'$A& LFCZM/0F 2L9%-(!>%8-8.P"Y"\^4?,X*@J\V]=7(\*OO_L08*,SA M(Z":6:4U+VB: 5"5)S^ MNH;^[6+PB\\- CNQ0DC0; 7J*XX#]1DC89$$\<9C8!R32L$R%Q@;P];?@.4A M--#/AP95IKP: =XTB[*?^@Y\#Q_*!.[EW_MC4#,7:=0Z)!)9L5B9>^*#$VBV MK K.>YX,KUU%4V.OIEI N;^VNE/+%+7EM%)/9 5'.,1RJP; [80P6 M',W&1&_<&#L\]P.;4JYC0X;&\_0;P 5;;C#>,UQD5.)628(BG2@&1 M(IZO2CS1F_!4!J%J^]CW@II2(J8R1>H*I&;]2;M<#/U[_ZWD!TZQ*"N%E!KC MP!0$D4HIXDQ6A%K#C15".5,["+\9R90R,?6]CDVGOO*VX"D$3KWT H>![HTD MTFI&'/44O?Z$B^<9WYKT;OMXLC?'?;?2O9+L&-S"%[PK+'F#9X].,- M "(PE&D=0_*B,@,NOG]*'G(]D:\]PS7K6@Y]DW[Y>@B+'DX#N,LCI"%FPW(@ M+ &:6!4-\3$!830((R$+;VI[Q ^ -27'N!XC:LNCNLOS 95-F','7BFY!#7HT8U"50T$*5X]Y/_"A= MS5((*CMTP6UTF4B&*BPP7G(_/"@:BR*KO2]Y(Y I.<$U3<:F[PRG?=MV;Q^;A@CZJ,"DNC67/9$!D3,A-=? *,"\J,]BSR MVM6Q#P$VO6W*&O2H+Y,Q-BAF!@Q3(6?B@H03OGK)20J9VQB-DFG$G8D1MEJ2 M\*7,+Y0C@;&<@"Y' DTF7%NE;:::N]I*;[U$T!-L-CQ*VG>N_[\=S90"I5H%UV]^9/D(%DMX@XL$)W7H?!S^:(;] M5\M^P,GK< [GR](TJ@27^"N5L]4T@]%<:&*IP-#2:R!6.UPXRL5@M<$0LW;< MM0;,*<4QZ_+E^FGF<:55\7AS/^SE<@QFU4,%NJ,F0O^QG:=92(:;X-%":IJ) MI,X2JTJQJ_%2TUC2$[7W@&Y'\\A ASP+EE2:_/KN['F?AAD.(7A(G!B:RE8[ M0[I^P:R >J?G&)?6FPK_5(U]KRNL=FKRP5EVVRGF)BQ.=12*U2\0R=/8X8RH) MQ46 VL'8K1[ T^9J:@M[W5FNO#E5QG%JFX7OOKW%Z5IEFHJU;N?SU=0,T$$_S'1R*F8;B5;.$)F](9930UR&R(0! MRF3M0J\1AU,E-8J/;B]3Z&25SZ"T2*.4$V'*WE3.DH2,P9K)%F.JF 7HZD=1 M[D0T)?=R*BR],>5:1Z:C.B.*NTR!!U+:^J%79- ARC$0C?K)F)(>L*.=<[K- M&7E:13Y91FTHO?HT.G-# E*90F"EA[$GTE)'G 1*-+(XI)"#8=4;9=SM^3U^ M5!]A)2J,&H[K",\?/:-">)Y8Z50:')I?;S&"M*5_DN%"V*!C]?VIV]%,2?EN MQH1K_4'K2*!B2[L>\#&E'. U',&\774S.-/@&52B-)%H(OID#L$%R)IHSZ0N M5?-0O2SC3D!34J%U>5%/#O5"(%C@".>(:#<=-(NF'\IXC\[,>PHR4(?#-3A M(DM'&^L-CEDD*@RC*>;J[63NAC2E#A3"H)N+[P;ZU\"1W4MI8BU=>36LD-/ZYC5)N/3R_^)B@=\O_]FWG[9 M^/:8FQ\Z;J' S=@KE0>4IU\IGD;_?>B:B#!.BJLO?W#AF^^A:]I24]*5DJ/7 M8J,QG*%]W?2';>_G_^C:Y6&)SIH^'BL"2.=Z8!:M M53&$1'+.:)]DPN4L(1 6$XVHQA+GM1V#IQ_UE-(T$UZ3U_H5/+G@'D77FB%" M@?V^:X\:5,(_?_N]+\5UQR6Z)2D6,:0]N3PI>!_+O7*9IW)4R2D2LL*@5D>K M),9,LGI3JH>CFY*S\XQH/Y+XQZ9G.7[=#Y?Q>9^HT:KL;EBFXJ_K'I>993NH ONJ1%=$"TCHI(JCUQT3+BC<, M",!:7;MD]>'HIG2,X/G3L"%,4I6>"0WY03:B(7G&0P/@(94,; M89Y2'# 2#V](#6U/S..=*[J2954**$3'2112EQ,MG'C!*&',H?((P;A8VW#< M VE*OO:6J%532#53X5?X?MJ6J PW, O),TVXM!+]]8@61[-,#.66.^="I+7/ MH]T)Z)$N\.B;(T^CD=:5T(BDN=*8;T;1,7)2:Z*%08_(*T<0*2.:!L^,%MG' MVC4$]X*:DH/ZE-9L;4'5,U<7DUF_M<.-R:RR/5.VPO<6?W0XF:_;+XL96'*3B'>2$8&FVL? =*:UZQT>@FM*[8NV MYCU5%E>]*]GW?0<_HW9-Y1@S>G3'6*2V$(W(1*2P*MUBQ);SY"99",EJ(UGM M$V4W(YG272Q;(DL%D8Q637?IJK&S>\9F.$H-T09BA BE[U<@+I6;4W56467P MTM0^6/DP9(^\O.4OX7./(+.:O3B[E?([K1'ERC/+ 8AEI81*(;^]YX* P^'B M)#B3:Y<17,7P$(ZXOY:*V4@,(U5GRE5]*$?'*5I5=G^!.*I\<>:SUP&"HB/L M#SSN)!2C?RT>K"^!NMWI;AC7:;'460'5#()D(HK2&99Q(F.YQ)(G4R[E<0&H MC-F/8OWKN-9#^B#*;:V-R)/EA*H+=0N)Q@OMCX4L-S);3FQB)>A+G 06 M\#?/T!QC$,A%[4#K(;@>1*Z_?K)Z0X&-2Z6RL7>AR/LT*G0Y@QZZE1W!%E1)D'F]$=SH$ ]\+;%"2: MNLI4NQ/0A*J>*-6&P'2ZESAV[Y?%GQ[>47K_O=%6K7Z1'3-40FO M;F9[R3&?G_M8J>&]P^/3'0FCK"Q3(-QH7NXYM,1%'LO1\NR=LT9"=?TVYH"> M045&=1TX&8(\Q?D*ZC'.XUR0+%7$F^)!6E]Z59K>.IKRE O9[SU=LMO;/ MMHW2,JZ$>9Q$ 4N9ME:7SN*F5-L <5DHPGB2D6NJ/*V=&;L?U3.H\MV42W>M MP@JBJN[Y?FIWX[^730>7-AY1(YSO/1H7>,[1$Y.B17P>U9'50( J$Z*0+NO: M?;T>CNXY>+?5.36.[,;CUNZ1;^8E8U(<;W_QXMG7$(89,&I"N6B)TG*45)E$ M'&2*M @^X<(P.M:N_7TDQ.?@\X[.LHI2',4+_M4/)WA6VPS'Z%>7U,WG_5Z^ M'?[,RQ!*$S1">>GP81PG#D=!$EC'#(O!LMK'B:H ?P9>[9CV=#L"'[=URMFF M/BKPDW18<<4_QGU(RSD<7UBR'%8OVLOHH3?1ES/Y\^4 Z>R'W\-Q0N,U##CF MM=JMC .D2HN6+1"@V\LG4(YCK[WET ^(#]?$ M3 0EM9.6H'9D1&:JB#6EMLMFSU"A^A!K>^F/A+BI@K[E==?>LY+:C((/5DE& M=/":2.%*YBT[$L"@/=&.<55;$3\*X)0"F#&Y=E7KCB?%NKNNQ0+X^04=T>\. M0]<$5 YH!SZUYVF.$^]FM^O*">OC/)Z/7"C.%:&^W$,@?"36^Y+=R"&&;+4> MHS7?AJBG=+QQFY35,&]Q6(O/#8[A.$=P;NJN_L_J MZY_V_>+T$1NX ".@J&+_QYZ=2L;_3;/ Y?&N.2I^[V4O=QNB"M- M4E!4H;?O:EOS^S!-R8!7Y,L-^U7U1%-SG_,V5+LQ+@^6J\W:2\>LM&1>2,B$ M)846HG@1W@:%!B-)8QVW3-4N(WX\RDGE()^&537D-Q43>\OLE&'53U ^F6V^ M8>9_PUG^] 7F1_!KNQCVR[XSMUPK1U39B)())R7HB.ZQHR&7HDJIXQ;5[OV( MGY%=?PS7'J.!*XMU*U;_.N;_!=^]:9?=+-H@J?6*<%D.N4EPQ"FN23:&4^^B M<;+V6I1@ 7\# \UYP2(61$X $= M)V[ W4!&J_XSKMY@.YL'>$R MTDSK1)+AJMQM6D[_ A ON)+)19#*W.=I;@IB2MN-(Y!KJS)Z0O/ZZ4L[BT%A M_*<"T9E1G)\5^6,BP+S)D:5@JM\=LA;0*?4VFHP^6T>(3\DW)!#,0$A*&>#B MB)ZA[PF6>$\3<8DJI96TB6XSDW,'U"FU/)H6YQXMR'%3.F]\T_W3SY?P*_A^ M>;P;U&^0B;GS>542* ]'7"GO<9)R.7UMZ9,V;\N;9SZ#]!CS$6>51C$6ZHC MB2A).5 ,HJB=G+\5S*8ZZ:3/]I7NVC>-6@0CAM_ MWO2]#>Q9C==6,7O5QU_+.EZATF4"G7A!Y4A4/Y3*IGZFJ&$T.TNT$Q;]+72U MG+>:I$PC3CNGJ?H-[H_%6%L)7GG?^3[?:B/Y]T4'?EX E$9VQW<9?O)?9]Q[ ML-DGHFCI39\H.HDJX2K,B;NH,A.B]O4V58!/ZG#^J/2\3ZV.+_?1[/9#H9<^ M:N?0:8:<&$]E7R02&94G+EM%. B52JB=8W6'N ;P25G\Y\#8]<6^?4\3?205 MP$6BHB[]JH4F-CA* @-K@9K(JN]"U/0TM[75\*2\JR*\[3N@YZ=GVFM'92X/ MI+(+^O@7C^:$;C@'([FAMQ+*,*9-\D"@W,YE2XNI:7_\0[S:6@Y4]I$&TO/P-(>0:)*QTEAG/B4K: Z1Q/&-MZ/ M0SRI9,\8_'NICYE6WBF5@$C' M#)%H!HCG&2T#?BZ,9EK:[:[<1X"?LH/YI%2M*_9Q/8#3FYR^;6#,KSVCBEV^ M&UDE$WOVDK)K%IQVZ-O+)$-,1%K86D"FRH7:MY&<&43-G:W!6R@]!_YABHF89-153(8=[T7F;67 M/_FO[TM: 5E^Z]^5QCO>:"X5O>LAG9*9VR8[K]TD,;ZDZG;%_T!+?_)Y^2WX'G[Z[O\ M4$L#!!0 ( '&#_UHFUS%*1#$ &8S @ 5 <')L8BTR,#(U,#8S,%]D M968N>&UL[7U9MD&?O2<;LG9+NJKB-B2E,ON7S\)4ILE42)%')):7F0M]#E?9GX ,A.)Q'_\WV]'PQ=?<3P9=*._ M_<1_9C^]P%'J\F!T\+>?_OCR*[B?_N_?__*7__A? /_UZM.[%V^Z='*$H^F+ MUV,,4\PO_AQ,#U],#_'%/[OQOP9?PXN/PS MW?@(X.^S__:Z._X^'AP<3E\( M)O39Q\[^.OZK"EG98AU8$1(H71!"Q@C:)>X<"B5D^#\'?\W:6FULAF"% )5, M@HA6@5**1R:#$_2;^M#A8/2OO]8O,4SP!8DWFLQ^_-M/A]/I\5]?OOSSSS]_ M_A;'PY^[\<%+P9A\>?;IGTX__NW:Y_^4LT]S[_W+V5_//SH9W/1!>BQ_^5^_ MO_N<#O$HP& TF891NG@!O3Y/S__C933ZY?R/]-')X*^3V?]_UZ4PG1GH3A%> M+/Q$_0G./@;U5\ %2/[SMTG^Z>]_>?%BKKDP3N-NB)^PO#C]]H]/;Z\C'8RF M+_/@Z.7I9UZ&X9 0SYXP_7Z,?_MI,C@Z'N+9[P['6!:B/Q.Y@M(5SO^N3WNY M-J9# C).)Q&!?HNC2O&&&&]Z^OJ8SY\%&4LX&4X;(K[^[*9XNZ,P:*G@:X]N M@';V(#C"HXCCEE!_>.XEG&<@KR*LCSP>=]-N&.+DY]0=O9SA>]V-)MUPD.O, M^GE*7^M4.^G*Y\,PQL-NF&FB_N5_3@;3[W>#/QX/(]0IEQG)9BA7>/HE$8@K M@]&@3C_OZ,?35U2T?0F#WZ8XRCB?E,Y0#+OTPX>&=4KLSFU(;\;A[+?[)Q,X M".%X__R5!!O?TK>3?5,**TQKX"%'6CF< R=L@.09.IMB,3I<9\#DC%$E3.*, M Z>O>%FU^Q*'T\G9;V;ZGNEZ,8JY;AO(]27$(>X[9V54.@+CBH$JPH+W)%V* M//B4T$@E^I)IAN!'>2[8LC<^D^QT]*VTB)1Q=]34GM.NF1KGEB+0/[WHQL1B M\IOH3[,IX:]IV$TP_^VGZ?@$+W[9C:;$ZE^&LQ?2<,6#^DTS)LQ'T>ONZ+@; MU3&V]VTPV><.72ZE0,Z,'";+#)!'E< &(V,4$8,U?1'C)D ->7++PGX+;^YA MZ$6<65OA-U%H339@Z5"#<2::%%F6D36V_C40+2U_DT=_W>P-C-.U MU.QU4[-U3;V7\TR)8?@Q#/+;T>MP/)B&X2FXC"G+I )8QP@<.@[1"0[%6AL+ MMR*9V-CLMP)Z#!1HI_$>1OXGG))\F'\)X]%@=# Y195<\5X+ RH("%(Z.3H9UK#[P_00QU5B"KCK OD5 MWXXH/L=3H"5*A4@>L,BH"6AT$(I-D&QV)?G@G;TA([+>I+ LN,? CWXL<9TR M/HWS$WV:I ?OXY([-,OO33Z<3.N>1]U(V@^:<::,@X), M@3*V@,O9$]DUDRY;X9L['[?AV3PW>C7F8L=T/4OTX)1838%*/ M=NO!M=G+_WTRF?.,HU $7P!E2F0\UDK MX(ZC-LR:8F3SJ/G^>!\W^39FR>LL5#U->/\(PQ.<_>W#<95F\LLW'*^(RW77@0&*",37,6L8_M]O15!/FZ^]6NSZR33&YGJZB0=KT[2 MGY T-QE,\3..OPX2SB7]A*D[F%MT)O1^5LX:58>.3PQ4C"0I2P@6"XN\>,>: M<[)OF1XWA7>*$=<9;YI,JY_P^&2<#JL$>R.".!V,;W)/]G-*I#*4$*.5H(14 M$$JM)3KCF$FO\)D MT,$ES%H&P\I62/4$9K>^['2=4FY=2KW'Z3S?^ZZ;3$AH*9F.'G(N"I1& L,] M!\.CDUF)$IKGW7\ \+AI<7]=7S>\7]?PB_+^%1L!_5"^A&]SGEY5T5Z<3,N3\1A'Z?N7<2"O,,W,-\JSGX8S)_'"O3P3>M\YK;*KF43#:9X-.D'D MY!4JC$;E(+-OOA[V(\GF";QI4JW Z0T1HH<=AT52_3$BS0T'_\;\GS1!D+/P M&YFHBOIA]!D3N0_3 4[VQA0"C0XN>Q/G7B'_._KQWD?'?NNZ_.=@ M."3-S::WMR-2XL$@#G%O,L'IY'T8CVF-_DH#8!H&P\E]#I"M_(X6Q\C6$ZS1 M8;*]1(8;8_ZURH#OZ&WY*HYWYV4_5IH>I.1M/Q]_T_/N^S M+#$4A6!%K(5=Q5'PZAQX+FS"B-'?FH>;8/KYH/OZ\O2)_G!APXOW/63K MW5-K/61E7YU,R)>=3&8>R&2NP#K1I" 1/7FSRGCZ8LG#C9'42]%C?#AN:6WX$ MZC1:D60 (4LM6DN%YCT"6G)PSO&LM6^=G]D24>YHAK =GJRB_H;\J.G,_3WY MYC]/XN3M*/U<_SWW8K)GT67@*M6FNX=E=2 ==SHXL?O_F] MCL8VZ)HJL(?#AVA+?1%H5>[[86%_D_=#XZU:!Y]!(DQ@](J@J.Y&;A7C">7BK)\ MIPNFSD5YQ 3=!>/WT2GDJ!M/!_^>P?M0KJIN7P0N#4<-G!5"5[2":+%VIN#9 M^,*X:+Y5=SNB1\RPAJ98>(AVLP4'9YF,[IHTLX]_.0RCLT?T6))P#Q2;*%I8 M5SG;*&L0F<68)#%[ULV$2 <4-SB0UO/,121EM6X=]7#*&E1(R9FLH 0EZT$E M![X>66)%9TNCGV??>AE_?&4-JS"L;5G#*N;;=EG#CU[SC2J]+. LHU.R4=X% M#SIJ4J_A#NII9 @BR,)-(-F7VLQ<.:99"M[#3+:OQ)D;(Y[VMNLA\+D%Z@70 M]^'H++6T#-R>TO$K0MU.^[&KNB< MH07/2X"4E-?2.!%%:P]N,9K-1[J]&O+J"=TV5NBGC>'QR13'G[LR_3.,\8HJ MSD#JPG4]/^!-[0GJ0@WT:X>K:)E708N<>NAG>#>PQ\V:]K9IO;MXANSL"K13 M2-%+BF6D!!=8W4Z5 0)' 5Q9XG?4FGZUU/;BS<]_G%9OI="&:=-:D?6)I,79 MJBD$M];R JA]C5C1DU"J@.8Q"%9B]'&I W5WE Z>O_#I!$GWUW,?QC[EW#(P M&E:$7WKUYFO [ZG\J^9;0W.-:WXOP['1"ZU3]3#J/J)DB;Q=RR'Y%"RM'G;) M@]O;-N ME=QM[;>*PAK;[7?2U-')V;3/DN Z%PW.U08"6BD(6F9PGG%I)&+! M%A7Y/[QTL_6^]U9[UT)G#?WI&9#P[1(06I;1:$8D=$G4(),PY*AI]792&.<* MM[Z%\2Z_] $:[]XZVVPJYK=Q[:W$*"JSR=46;:[>6N UA!P81,MU$4QSI?JI ME%F,:<>WB-?9X6AJCMZ*JV[$=^DBC,L;W?O99VVT\< +3Q08$,&C(JHG<@\U MSQFC:MV48G643Y-2+4RVV3GI/4[W@S&&U\(+$2CF5R88"*K6%S(?N,J.$\;- M$8H0/4WRK&J*'FJ;%J/[8X+E9/AN4'"?L<2B,P)"0?*.HC<0ZS$HP9SBMK8( M]*WO%%@&UY,DS3W-TL.5 ;\A1<$M*VP^S4,QK/NM;]CF)R,Y_LD:]3* MW?J\%E5ORP-N5+]V_L)3GV64WPU"' QGC=I.0>0/HT^U>5MMUT8?>-^-QF<_ MO@J3P67:U7O[%.? ,'I:L70$9Z(%9K+W-GN:>)H[#RT%6'O>:P!FGO5EF%,P MCE9\78]YV%#HNV"!5(K<2Z55:=UJO1GX357&;8^[UZ;,K=A]9\KHSJ1_]7TF M_T5=A+63JJXJN)YFV M5&[7ACJW3YG;M?M#XG7*63#++>AQ>_="+__'L;_PNFO)Z-\5GVHC.,QF Q%!@8*,T*PH5[VS4@P M+A+B4IN4*Y#D9B3/A&EEICX7QU??S[_]SP&.Z26'W]_A5YQWS6-"!#GKK*4J M2I4Y."LY9.FTD2F&;%J3:3EDS[%$8^OUL7UQ4RKM.M[3,;8,V+ZCA66 ;CT$ M:&;Q1:3JS5Q]SF-+@58<>\EHTF]MYS>]KBUO#N^ M&]1:Q4I]4FKF&TQF&N"GJ[:.'E5 "ECM#;F(,FM:H8\BH1N@B5-HA8M,JSHYS>%3! *J0>1LI;569]WZ6L1; MX#PU@MS'"AN:0>09=[7Q'&LAR6R3(]<;8F4RX#3+.3N>>^C,M1C.4R/(?:S0 MIV?\ZOLE-?PZQO\YJ?V7YF7O)G#%1*;8L%Y+S6O!LTB\=JE67!4K.#:O*[P; MUG/CJIE(&XPU+H";^L!5AO3+N$"M[#+AF*JJU"1YEZ5 M3 &N0KU.03MP-8&L1;)'..T-_:7Z/XYV@MKZEL<4*J[86ZZ/O M19@\-^:7NK]+"&[7T-@V&-$'[MQI\)Y<5MR6\P3B]^VH\E1Z4X@QPR M#2*G:F5_X! DS]Q859)MS9YEL3TV\O1BDSZ:$"_2PGY6B8)+7R\IPD32:TVD M-AJ"*"$XI4/1K3=0%X)Y=.QHHO4-M1J>5P!4+E_0]O-A-YY^P?%1H&6]&QW4 M;V_ZW!KG)5J\ML6QBN;B-SI]<:DSS,*YYL)_8IYGY M--;!$K V=>*A/[Y786EO?]0G2[9AU=YVQLF3EK0A0 M:OI-"3;;M?:T1DC#;*TP;MYU?_>9>G=GX-TFZBI&[8&@?WS^K?N*X]%,,0=( M(*]&S&=][3)3L[,6 2GR4H21PB^G(-G@BG$"BVF=DU\6V^:CU>TQH-N ^7KI M-#P^[L9ABC>"2TJ0\94"(PLYOVA/.XEEY)XI:4N4K8.E6P$]84*U,U0OD]7G M*4&K2OK8U8V-%(:?3V(>?!W4Q> ,I4:?;/*&9G2'H+0@SY?7IH V2I^*5NGJ M!:<-IJIED#UA7O5@NAZRLW]\_C*>[91]?]55A5VAOQ)6B1PX6(L44AE'Z(PC M=*$D+[(U*K;T1M J7!B*QMBCJXYL6>JV+BF^&L5^8?(QHJ MPRK ;Z3VBPLY;<08-3)(-"A .1V 7J4A^(1.>9FM;%TXV@3X$V9B#Y;=P [Y MLD+4&V8OA."%U*@H4G$U,E=8& 3+%'@TFF.44;/6E8--@#_3LZ5E^]B$7[98 M0$7FM-,11&"D*>HSL+1 M,8XFLTX![\.8@NK!5UQC@W[))[?8@[^/$*VVV0_#&*^]>H_>/#J8;2^^^G[Q MD8_A^RSS]6<8YPOJ)2&D5\40*VH)M?>)?#.6("7-O B:(LK6E33KHVYWH>^= M6":+P,PW#HVW*7@705L605$E+N#C,(SJ?5NSC1PI3;2TU) #(00M 22%]SJ!44):D1F)U7JP7W[_]N^I MVB@#ND:6Z"'F.,-REEM: DU/V_L_(MG.!OW]+;/ Q&NHM7]C9Q>=3DJ!C0KK MR2D!+L0 C!GM.=="E=9GZ3=AY#OVMONR\2K:;'VIY%EUY]M1HFF*?,V*C91_ M=EZ?ER1UH@73%6E!<5>K@%%26*&<+)X >W67([W,BS8?7JUCA*XG#?:1N9RM M//3A&6NSXTGG&B5*4>]7T00K2@,\9"NX$8F\H=8!]F4 3WOYOK\M>DC*W%\1 M%V*,\K51=+=,/7D!?&"*QKPI+FG3VK%Y.+R]PSW:<=JN8MK67M8OGS]^/'4'7&UI4K0$G0*Y S9& MB"4PR%DGGE-VH>2E'*J+9VXA-;UU W7K:[<'9^N7H^-A]QUQEL_]<%R5N)5X(Y@GSI:VA>EC5/N%D.AZD*>89 MM#_(,I-/G_\X+]>*PF@A06(F^\@"=BY^"*4&&I.XI78-&M@)Z9U-!@ M/?CX'W%=E?SS(G$J$8FLU#:<@*LI@P!BNBW)U3Z]U]=,"*,\, M:F*DAB5U/U[QGJR55DA%\6V]))H+6E!-B"!E1FE\""XN=:9TF?OLGVZ"X/XZ M[\/P9\7G2\!8)99?A@+M)X6[P^XUE'_5?&MHKJ$O<16.YL(;B1:$JK=A%*\@ M1AZ!>V^\X>3>+-<1;ML&7!!_MK??*@IK;+??25-')T>G0)#\3T-^ EAM: D( M]18*;A%TR8HY)DPLJ8'E?GCIYE;DM=3>M=!9PQ!P!B1\NP3$,>LLE@0VLUR! MF+I7A& E*F$RT]HN=?WS7<:[_-(':+Q[ZVP;.<5%2__[DPK_0]G+>:;O,)R[ M+%J^*]LNWX\'XTCW7^\5$5VJ3*.9IZ"N#"EPT$M#*I L:ITOK M2QB:@7^:C-ZXV7=IUJY]R;J3VN*U.VUO]7$\2!0#%JPM.M^$*9(_B0YY78*$ MT:!BK:LF%4.*4J=HC12F>6.I'N5YFBS?!7(T3._-=STNI[ _GHS3(4E0TU)G M"$\'IXU>H3 .8F(4$'F1P&ORSH+*JI20;0Y7HK]%&T[+O?#),*PW*_1P/O;> M<_VY2'/NT_\^ZD9S87%<"Y[V40?AG&+@=";)$M'?&0JZC* 80*541//N8/U) M\V3(NV/$N$YYM7;AVW#V&ETM,?J,/3B=O3V/ ?^+@X)#& M[MY7'(<#G/VQNLCG/:!GMSL5F2(PHTGO]0:-$$2!F$-!%XJ58:ETZ":X?C\1 MGX?##E'H^HBQS:J[9GUX\&;IWW>CKS3.<3[D)U^Z:1A>_GMM:?*^F_X_G-UM M?C":)0"9<26*: &1U?81)8'CJLX'GNMHE7:V]3K0FS!/;A3L!BVN\]WM+-_G MX_W7;GSZJ_HYOI]0!J.\!2^$!26] (^"@4S"!(\^6VR=:=NLA,\C8W<(='VX M^+6R<:=!+ZU;'\J7,#[ Z7S?YW4XKE5!'\HK)-?OES >D:"C,U?P7?29=;W9[0;6\]-)B='<^^_>6N>NU_57Z^>%<78]*6@AK0$GO:%%,TD(1A;0KEBG M@E1*[,S^YKO=:]XCG2JIM@$H%FN?[T3>>>("C#7%^8@.5>L#U4^R><\*+.VO M><\JQMZ5YCT_GLHT3#%?N(.0K0.51 &'VH VD?FLI4[8.M'PR,[_K\2!6\__ MKV*+AW)^>AF9GL__KW3^?R6:;.(@]7UL_%#XZSE/(5@/PL5:T!,C>",U5%\[ M1"^*TAO?I-@9WJYT_G_G:+N*:7N@Z^(3Q\$ZD2PA"44@U!L_P).W Z5PY;B3 M,=C>\IZ/]&CX2K9>^FCX*H;JH4Q[T3E13"2@- '0> X*>8+H5RWBL)Z/-X6('OFN#&0A$Z@M$TDD4\@>!8Q1!7YU8W.Y[;ES?*> M][9$#R=AKOCZRZ!Y*FW+5[+,[2VM[Z/6_MN6"\,Y+RH3\:.MMRU1?OXX1WXZF M.,;)]%,]NVN5=\L"--#J9G!WOI5=!GT+M8 *NY[W]G:+) M+O7FN$G >H2N=JJLUQ7P?6D1M>>>PJIZ)%DJ!B%JA)!J-X?B5>JG(4TOTCQ- MYF^?&+O4SN,VR?[1#>DQP\'T^VQ4:^U$Y"$!<]&2G%J"C]Y!D#YK&[P2NSWY MWRS6TQP$.T25;5S3<1\1WPR^#C*.\DQ E3*7LF00V16*[ 6GD" HB"PI:5.] M%7[C=QZL*]3S2-@J31;F;391<3[[[5Z:$OCI]^9%YC<^O;^Z\KN%V9U2\NPT MQ\ +9,8S*$O?N:0*1"$$N"_=\#^SB#*M5ACG$4DND3#U)Y, 9+\$$)BS3 MQ9!"GTO)-\K2_DK)5S'V;I:2*XN:?",'3"J2P$H.(9 L)G@?O"LE-[]#X)&5 MDJ_$@5M+R5>QQ4,IQ5U&IN=2\I5*R5>BR29JA MP2EEP4IKI=>B;J0_6=ZN5$J^<[1=Q;1][&HNJ#&5W)?DHX)D4P15"JMUJQ*L MLJ74ZVAB^UN9'W4A\$IV7K(0>!4C];"?X"$(G:6CFCCJV;@3[N$JL MUHD'[FV)/FZ=^Y']RZ!Y*B56*UGF]O*;^ZAU R56C+$H:#UC1=3M\AS 1<%! MUIP+3\)F\=A+K!K:>!5MMBZQ>CO*)PG/IZ@S_R4Z1])9"]JZ>I"IUH%J6H"< MB]GZ1 L]+K-&;B956ZU\MHJ[7O<7@I$KL)4CKGH M'8(.* BF0G(XK &M:0Q$'RTZ>R_++W[G(S-_(^7N4MW ^VXT/_7\R_^<#*;? MWXXH_CB9>:\?3J:3:2 I1P>?NN'PUVY-#D]VJ04BM0-M M<.=]9)<'3Y3.:(L!N!0>E$4'7JH(R4JC,]=%8R^WX.Z."A[0U+CE5.D.4/!! M98*65\=^2AQU;6HB-'E;BADR)7(-C):SDAVG(*27,^U;EOL!C;U=(/\.#N25 MF/N@1N^JEWSZ$")+)4,LA2RI#8*SF@'SFEF6K16A^3&X71'^>1SOYCCND\,/ M.*%\MR*L\P'12U*$M:",KJZ5,^!S-K)D4D]Z.(-Y1>&?!_-N#N8^.?R ,]MW M*T)29%0[! +*V@G%Y-IUSFNP-@AC@LWY:OO$[:>^GT=I+Z-TY\RX$CD?8HK] M9(R3)>8J42RWQ8#EH8"2EH-#YB ;;Y$&H@SNX:0,5Y'\>1COYF+;&WL?9F;_ M;AT(I3!R$4'7@R,J5F]#.PU%",Y28(8[\6!&\'TS6"MZ2C.%PB6>(,AZ$L]9!R[3VD*CBCE'9%0B+^7IM$;V@*:Y M]9+LV[=KP[B\H3"7[@"/F)C++@$W48%**8"S'D$G&3S&;!C +T@=_EOF62 MWM.N.Q-OSF7^4*Y)MN_J!9!>&,BEWN$CI:8%C;SS0HXZRTSX:)>C:7ML3XNH M6[9MPZ!K/7%F7Z[+HB1#7:P"+RSIUGG2^Y*5L48PVL/;L] "68A=V0+I+KD?SBE-0::"Q(($Q1C-Z=$6X#(4-(J5P):;!]=% M\DRZWNQVG71V:\F3V9=3<>:3-M]GA47CZETVY.V2"TRS=I3TG6%&9)%C45;N M2A+D!OQ/AKE;-_YU(KL^&HWOI71R=#(,4\RS%%>5[GVG+<-06.8,Z:.4 DI+"IMN"] M\NA:Z^6^#+0K?;X_3TFV^J!Y?K_*UXUJ>G_6WHH$L<44"Y[54PG(ZGTHG %C M4FMMM%&Y>5_;VP!MJ^]??S2XNK@V,T?]E6ZT(&QAS=5_E'I;H MH1W3):!?*&J<#.<19/[OD\FT#IRSIFI*,T1>-\.* "5L/:-J W MZC6=%+X* MUQ]?;D&V>;+T9-K%!&IEEWXGG/UMU<-ABKT/K]_N3:?C03R9 M5E_^2_ M3C*J85S>DZ'Z:#Y86_D?=D-ZVF2^Z.]SKVG<^ )<*&*Y0 ;.&0]9^L!]CM+F MYI6[UU!L@2%]&>U:$+V6QGM8LQ8-")(6!P>CUR=CTD/Z/EMU0YI9873S&GRF MJX_=>/:'&]2Y%R?3,3UEGSN**;@W(,EQI,DT1' TJB"KHI(B)2!KO?!M1=#' MR^3=YTT/B_"'-'B%A23\A&D8)I-!&:0P+S$^%>(F].0Z%"V2D_44B ,*I BU MT1H4#QH#XUAD;,WV>R'=/%T? (VN$K]_#O0PS5\%^RM98J]+@[F"I_--SUL% M,$QDSP,'7T3=V.<:'#E)X)-@1@:OF;&-2;PVZ&<^W\WGS3*CCTEY@24G_C\+ ";[!^;_G^LU:9\DT [2JENE'DI E M!C)';IPU0NG6^9[^I7IZOLF6&-&P.G[-14@ZSJVF"(.AC*!4MA B0T#DDH:M MSJA:]X!OX8AL8[GC.O,2N8+ 4=5:T!J0$*I%[$W.0-"B<1T1:HIK7RZT)^>G-@7W8LH^#[-<3)<5C M]L@T,!%(&X@.HHH!0DE:%$6PVG=D6I"::EO6]WE>+_,)CZL]1@=G5SEV9?ZK M:I?3SZQ3VW>?U[0H\%M;O$95?E=QO!W-#FF<2G2:^=4JHJ_UIC3/$^U1.EHA M:=H/Q7GGHK4V@B]_VZOOI'^?%0B5&Y17WX*/WM1&OAF Q M0C*8@W4"@_"M5;$ZS$W5]C5GS[74<,\FVKFROE*K*+?U;:'U/OEZM3Q)>B;>:=F%B2DP1S"<;ZWOV(+QZ3NK_>NN=):W_;[R\FX.\8?\206!O%I;S2OE#F%A=ZA-IF\64;S MB\(0P+.4P1$HF41PJ?EV_0(H#]':+;7;P_[))_R*HQ.LV<;7Y/+7]/8_!]/# MUR>3:7>$X[>C-#RIE[3L32:T^&#^$K[M*T25I#5@1.:D!J/!*4EJ"#*2&TJZ M,:TS??> N36R]!B7V/IX\PTP'A%U6BE[X<[ZIC9HWG6C@W>#KYCK>CN= MQ.^_87'@[17"P9ZV:Y9]J7];M[<2_1-;N4X)ZQ/A8)@%LCM"2%"3+I> MT!>5+"Y@LGW[%;NRE6,DCQ2U\-H@+X J7$#D+H,0T68O.5/E>2OG_NQIL96S MBHD>QE9.[?2="RL@K#0TD1 MSU\&S%/=REG)4+ M;])C/65L,OLA!#.L% >*%P7*I02!X@B@-<,JYKF6^:D4LAIDQOOLP&CAZG4K M-*U+I#E9L>A+L,QA./(72<\PG#GQPM$< M+K.!2#$Z2<(T^* C)"^,IRG/FN6R'O262T2CGRY(=BN !Y7E6,7J76OM-W2Z M9J#FDEV&=%8SL@2H5;(<=U%C$9#-9CD:&JKK2\L;HT!6Z)-$":7&$TI%!][I M##H&C5QI:]E2.XB[9?H%V8Y-6WX5Y3:T>*J%$^/O^W]\WN%GF#QV-,@YFJPBCO'=4/_'OV8R^)D"7>UV_J8U6!-YGL"/0>XVR">B2^ M-E>BN2K*#9#41/8-BJCY\01JLM<6_RIZF>LUS:9W:?>C) MCE78T^34[@HFVG:R8[F=2YL9"NL#H-.6-%A;I6KF:_4"9FZ\LJ'YLOI82CU6 M8L-*I1ZK6*7W_?YEP#S54H^5#'7KQO]]M+P!T_N4H\U0.".&UV,%@==#3LZY MX)E-)C6_JF?'2SU:6GQYY6ZNU*,>&:% P4$R@N)*1E&]1VE T-2&QM6F[VE7>*W360V')@T)"%.OV2D[%+92=:ZB>$RN'8TS[5. M'-C<'-M/< TFX>!@C 36BK**'T4P$T2H P3$(*L[:Y=;6MEF.;/YY?N MSYX62:U53+3MI%;=P?HX[O))FGX8?\;QUT'"65@FG4\\UV9*1OCJR)&?H#D" MAE+JW?4NL:6&W!T[@3>]^R&EK%:R===0YXWK-4[Q3&B=/D4T.748EP'5L&1G M(9#-E^RL;Z/K!F^DX(U97UM7+WNSP'TVH+RD2"%$"9R'R&00@L6EVLSMEM5O MJ=;9D-%7T6OK7-7;T7_C[+Z-W[MA;9#SL;J(1_3]^=61S#!)OGDTM8U!T D< MJ@0\"YX=D[)P%HRFS,!9FT"'FKQDA3';^BS5XVG\N$Y. MIF]CK9IO/OUU_1+#!/_^E_\/4$L#!!0 ( '&#_UI_0ZR^X<@ %8'" 5 M <')L8BTR,#(U,#8S,%]L86(N>&ULW+UI<^0XDBCX?7X%M_?#5)D)53S MJVUFGBF5F36REY629:JJ7V_96AA.B=TA4DTRE*GY]0N0C C&10((D%+MV'2E MI"#A!\(=#C__XW]]?UPZSZRLLB+_S[]X/[E_<5A."IKE]__YE]_N/H+D+__K MO_[MW_[C_P+@_[S[\LEY7Y#5(\MKYZIDJ&;4^9;5#T[]P)R_%>4_LV?DW"Y1 MS8OR$8#_:EZ[*IY>RNS^H79\UP_7CZT_+?\*$84QCQ,0^X@ &'(&$&48A GQ MDH3YT _0Q?U?:1C'8113@&+?!Y!$!& 60P A]+ ;H,07?Y&++K/\GW^5_\&H M8HX@+Z^:7__S+P]U_?37GW_^]NW;3]]QN?RI*.]_]ETW^'G]]%^ZQ[\?//\M M:)[VTC3]N?ET\VB5'7M0+.O]_']^_?25/+!'!+*\JE%.)( J^VO5_/%305#= M<'T4+^?D$_(WL'X,R#\!SP>!]]/WBO[EO_[-<5IVE,62?6'X6D"N(?>S+1R'>/K9&KIW0D.PZ1'N M@3D;Y?8+]2&GRC]\$C]U8.1" \JT M@=.I[AZJ['O-U>Q3]LSH=2[T^7V& ME^RRJEA=71)Q+*Z6$MG+QZ*LL_]I=/L"LP3#@!/ TI0"&+L$($P8\%A(0@@# M%%)W#S+F8_$6%26HR7[*J6)6D/2T%=M)2:!'^KQYPIP_] M/W[>4C()GY>OR;;U=TN+52TNH$'&V6+CM.A<.-JL+,@.Z*4T+XIRGQL%L<"- MK4!7@AT-*SBJ<,./;O6?I;'W,UO6U?HO0/ZED>HS$/CYX-MS6:[I1B49V:;N MB9])(6RQIQKL[!@OBT=;#*H+6U^\=C,%XG]QBI*R4MCH1YAP($)?L_L\XQE! M>2T %*N\%@;];;',2,:J.Z'SW@E"_[E@,:>A'R,0NC@%$,,4)#B* >0I(PF) M4S^(%K6Z7E(#JR-4M;X2^L*(O*!L$7!NRR(7/Q,F;RZ5GC)2Y*2: K+/'SVE MTX._PY\. ^E1;4BZ*0&=5*'J,V%% M_,2L7)/&"D/OB+@XI!U"8*R#U4 "2R/,CR@+F<4]%,^RM.['HB^MCG56U MX-'2^96A:E4V(N_\\;YX1%E^^CL]R(MAV3Z#0DWA-25.66!/D#(DD>*5GC2* MW[:2N+_:+*)V@H2U+)WZV.R4?<]P_96159G50@0OGU$F/EVRCT7Y%2W9G?QY M>T+$*/41(U3<;4($H.LQD!)Q]$8$4\X2FJ8LUCEK=8!/+7;D@=&5,%X+[DBT MG"U>PI!=8P9X40*)F]X!K,5DM6-X*M;IR;,"I\2!+']W)CF63;A@Z7#6 CWK M$6W"E/V#VF@-/0WT5"[QXFO!ZV^H9&N/>W=<,1@)90(# %,J3/F$>" A& '7 MPQ!&/$741RJ*9@#&U/JD ^H\=5#5-,804X85@R52-<_S-95K@,X?+4A%,V6( M7-J%:5KOR,1D[P!3)O\ZE]":=YPG5M;"A)%WD;IPJOWM_^E\I:= :JO;Y(.- MPG*CP&V4UM"KL^@F!=S7*DCE44./0G?&W_#/1?[,JM;MW6RA0/X=JAC]+<^D M/Z/.GK/Z9>]@]D(8IAY-@>^G!,#8)R!):0#") @"'*4(>E3+TW 6.C/:0QOT MG!Y^H$'0:3!TUBAJ^B7.VP]%?\5L7-94G48,GM2:LL,J6\Z/\Y"9UREBA7$' MSA([J^KI2G&[6UP*S4OO'N]O2T;K\C&G'Y?H7D6SG7QY8F75P'3NLL?64\HH M$XN(7QA54TBGB1[6,5;HU5,;ITEU_I"0+:B#4:J.2'C%R$_WQ?//XMU.N G= MRO3I%6<1TU&"UI(W_J"9X?$19>7O:+EB[UZ:B,G5$E75Y?>L6GAI$D$212!. MO 1 Y*< 4^H"Z"*":>2)RP[6L2E.0II: B4PIX'F_"'A*5X QCFD=LI;H5M3 M$M5)UH]KCI%C*WQY$LZ\4LAHMUXX\S_-QA$/@I<@7YQL-0<*0"RAVPX@&:>)!I1B<$K2IS[@- M;$<"!]>YTX'7.^N&.:9VWEGC@^:9M\>";,."<<>?]B&H1*.E@W 8UJR'H1+9 M^P>BVDLF#OH'5+9WS:OB\8GE5>/MO"Q+&8&4'M-W+]M';M&+_%-C0G_XUTJH MF>N\JLO&LUK=U ^LO'M ^PSZ=3H]0![\X_>PT%#NU(,[I:+[H>RJ=ENP+9TVXTU'N-*0[DG9'$N\TU/]9 MOV0Z :DWA/?T8; O[$E\VGQ39!75M_6W '7?@OOF6T#EMX#+;\&S1&NK=1RA MBL39F#/2?%/KPD'RPWV-5;(VDUA\SMJO:-;[BA;;KVC1LJO<"(K!"L)X=T*=UDIBA$EU&@8+3J\X6+!@EK!\P&'_8T+%"A-B7C X4 M7GS*.#NAY_3L& M3#EP]YBL8::&KG-2,F&1O&?MO]=Y5[E1"1-%ZKN%%W#H>F$, N@*W>.E#"1> MB*3+-T+(?MH#E/+3@]73+.+S4%8I4+NEJC!>G\L ;^H[RC M;?AR.\(7;3VA3*LEY3 .;U:-H$S^OAI0?]'0!-G+^][+"M^6??Y2%E7U6RZ0 M6&;_P^@G\=L[)JXD[ Y]7\0\1#X*4Y#0Q -0-D;!L2^4A$\19Z&/?9<:%)!; M04Y)B,ZN*=\"=R1TIEF_:6<;%.V6V;@Z5<');MUY@Z:SMP$7#FY0%9? [Q:M M'9NLLV4&6<%I7OO()AL/#">KBQLX3THD^U)=EN6[E^N<-A=&9;_)D7>G=IFT M(/O1 RD\,CI L^>,KE1CWR=I5_">G$FVIN-DG.+.GV++B3) GIG_Y-B"\[E. M!LC9\9H,/6=FK7Q I2R_D=[0M1\U(XL$01KY"0'3HU F%L,&QEDAVV$>J9D&9U.N)XEK<#+2V,8K+YP&I+T3>Y B2R?P M<1BSGJB#9.Z?D,,/&Q03T'_<%3+@T63SJA81]%^:/*WK'ZNJ;B+@=;$3-/^K M1O7 #I7CAYHQ@7HR=)HV:RG+)ZDQJQ+866F^ZH!C!.Q4!1Q]0%\:/J-'1C]\ M%Q9GG3VS&\XS(KZQ'W/M(-KH0A-+30/?V2#@K#&X<#X619T7M49L;9PIXP)E ME1]Z0C;."LM-B;3H-1+#\=5G$TUE0OOBJOZ2J5/\6>C4HGQIKHD+'GLT(:$/ M?(P@@!&GPL8,70!EQ;#K>2[W?3T/>'_YJ>]XLC.EDZU!ZGJ[=QBAZMHV)4_7 MC]W!N6C=0#8=ULFRA?V))L(YO>] M]@KO7KH/MV="&M,TB;T0((X2 !/N@Q33$ 1Q&-"8N,@G6B%O0SPFELY^F7@' MVMD@YO0P:YP4W1.F9?AZ&Z F[#.P54\K&'%TIKI[(Q99+[C7P^*5*NV-6'6Z MQ-YLN3.MA_=919:%[()WB:NZ1*36/4$/5YCA.'6V4,4ULH-K41X4J+-]U!Z! M]#KG[FF23Q[" Z^.03.DX;!YG$IE3Z!]WUSR:"L/FB#B:M;U@*?)#U_!3I>+P83!3&Y>U.,P ;JJ 2/^KQK[+GS4SGTYP2M%,/)M^32OP M6 '4-N9W(7LR$50].!]&6*%O[0U2:LN8.PYD7EMMD- #4VSX:8/2U&A=0.K7H">HQ,D^Z2Q^G5J.4[FVZSHCI+U6N#V ^6 MD1U_<[YZKD',=PJKAI\T3"9X?%H6+XPU1V1;9M5]=0*8BEM?D0@Z<6#%Z\\3*1AW+ MO+Y?4);?Y'\KLYJ]+[[EBRB* @@A!FG@!0#"(!4_,0_$,8E8FF+JNE"KR[TA M(A/+__7C$\K*MGJZ7UO]/:L=E(L+0>?A*;C#$VO4D8:\ <-:379T!^V>XQIN&T05YZ7DHEN*- MJFWSLN L";T@2@!!20A@A#E &+D@%K^Z"+N(8[RH-^.$QSWK!R"TU,*)\3,P!J.E[-US-GM<%A'ND@#$'A9,"6 (4@*I.&92SOR M1#YV._:L)WW/PISC$\P'V_Q2FWQ1#$&=1:G>(="N?^%)V_>M M$!H;,=YQFFP%F@X!S!MD.DG@08#I])-FNON&9&U)Z!=&9/_Q9K!IXTW]S.H; M?H>^]W?WKFCW=N'[. X@%OH=QDR8@:$+,$I#0 ,>LP31* RTQ@B9H3&Q:=AV MC)0Q97$(L+R2=DV6B]^9\X.XX50_KBNPRWVD]83=< ^2T/<23ZA'$L4)@'X, M 2;, QP+(SQPH2_;4N=,\?R8< :RPI?4,D9CT8SF/4_N%QYFJ3S>9=R.9N?B#.$ 9C M<5L@(0>)GPJSV MAD'A(*#FM 3(*,"<^.M1GRFIV>5-AIV+@P2Z3-&,,%O@S MQ:!=VT$#!8AO;:SNR5" QJMG3YCJS57_6(I[-\O)2U.5',8H2/T4@L25\RLA M3D&:0CF0PTV@&_$8Z:4L*L"<6%7T1\AOX)X[?^HD_]1T@V6NZ.D&(X:<,YUJ MC$3[]'YO%>\(\W* M427*7LK:R?(7$M M (HGN^Y3M\4R(\(BDV&>3XH-GA57F4ZX.N#.NE/9&GP38VT"5E2<*97EELZ: M9!OE$JBL/UM6@0:Q_?P"G=<,F[(NFUUB]'C%1%>OLN"I'X>$10#[LB.\&X8 MD]@#/'0A(1%/&.5:'>&5P$Y\2MLM6%+DI-IY;)\_>FIA-,'9>B&3'L6V&IJJ M 9VW8ZD6(PY:DNJ];:8TQ(J/1=Z(3P.FNES5#T4I6YLN@ACBB.(4\ A%9D? M#( P;BZAM>9TW^$U&HU=NS_(I)JZ!X41$RQ]U?5@S_KE-V++OCB8+6)H+3?+ M7JU*&8_;"$* _"A$S ->&&$ ,25 _.8!&LO\"R8^#O7&)1V#,O5AUT(S2J0] MSA5%0_=<6O740 ONPEF3.X6P#Y)DRW ]"F->.W6(S .S=/!AF[TT%"8@=E6J M'XN2LZR6[HWKO/41+8+$XS!.?9 T_;VYN.C0!. MW!"P.$S"%/H40:TAD2I )[Z 212SJJL:-15@7XKE4E@K\L-% G$4P)0! M&,NV+*&7 "P,"1"S@*! \-%E6F&*:="<(P!JUK1IHFV9YV)W/K-?[V[7P]WY M0V+O=.C;;"$^*7_?R!WO!))_JFO>,*-MW_1&H!G&DE'U(/\GC<=GM&P/D*HN M,U(+/,4'PLC<_4/OR>N<+%<2GYWV..*-H^UQJ@7VF$\\Z ,702@]]0%("'8! M3X/,6;Z%=]SDJ"CI(QKR26*;=!+U1DA**< QH+!O)R ,G22$%+H$^)03'D&NU\U4% M//%%<=\1.[UO6C.-8 H^V?!53Y)@H$OL3.[KUTE#T&6&KCO[S&0%RK+%5?', MRLT7.D%N&G-$09PB#F <(Y (O0 H"1,O#0(,L:NB(@Y6GCP=5L!2^3Z/T#\L MT&=1I6E*J1*D+* GD1\H8!'OM,(G?MC*W.%*LPC520+64G/Z ;.#=;\!AFR- M=UF0K,L4:L/)@SU@&*,\I:XX<6$H!SK'D/(X]0.#C)VS$9LG M/Z>=XE3U^N\(([YI!8D(63VNVD;+_<_5VM^G_SSND9FW-PW4CI;Z/6LOJRZ;GTCKIL\5OWDY+ MUEAFR9@['Y]9K3QK[-LW_^PM;.[^%G;GWNUV$U?=9K OD@C"D/K"6DP8!M!% MXFKI$Q\D7H!8$$#L$;W"*E7(4]N5IQR0^AY'-4:JNPNMLT??U]=P9L][)S,\ M-QD2*KWMC7QV6L1;=+BIP9W=6Z;%CF.N+KT%]+1)5=:+7]'W[''UV*7Y)'Z* M8F%5 9)&ONS[' #L!ZG0&U'$/!*A@"BU9SI8>6)MT,%2D_U#LH=E^RQB]&2W M V,Q:>DD\D.R)U[JR9WX;2MSA^O-(E,GR5C+S.D'7B>!Z,-W5I*LDF?^WUAV M_R#,]4MQ 4;WK/N$W98988N8\L +202()UV_7I("A"$%(80)3UT_"%@\9T:1 M(MX3RW.'C,.VV%PXWSI\ &H16G_*G">)4E-K0HOE$I65C#ZV[N:9RTY4MUW- MFGB#FZFGSVRF,'WH?Q?6Y#@=/>M/F=-0]':2FC2WX(UD.:EB_:=*>]+<"MMY M4+K@#1/ALSRKV:?LF>W7-?]6,;Y:?LHX6[A!F*21N ^R$"5R_C '*"8(\#1T M79JXGHNUI@"I )WXQ&@!.1)2ZB<\"A,MPU0=]L2JHBV< M8UM$*H<7I8,Z="KIR%T*C,"RD1^3W@8ZC%8T!:=AGZ8YUR+1]?%JT;APUHA( MODE4.KUC>X28 0=L65,:D.>UB/19N[/Z5@"0D(8A1&'@,^Y[+?:U6*"=!3:Q:MH"W+3%UB2;/'>T X9FN/"T"=R M\JM" ^R-7!+ZA*M?#W;>TF]'_;G(;UGQF167S_>-:2S=&Y>/M>J\[E/O3WS4 M"K#@]L.-\UG\;^T$;"W[74=CDTBC/K_[)#>&)=<6(_3DU0X/M/IOCQ%IU'3[ MY**S==H>(ZO?7GOT6>*Z<'?F?DQ2?;P]TTB#7ZBJJL/]L758/8_M=5YS6S>\UO7W^1M;IY MU.C^[2YF'L$C<2=Q0<^#Z <12 )( >X%$4XCB-/1PHU:3K IXZ ME>RGKS\Y]QM,''3?3#"N-ECHW1>4V:EF^T_!)#VM\-M79XN"L\;!V9L)/T'C M55W2+9G6RF!G-9-UF;%O\FJ_KW\"?A2T%3G[PHB$]/)^Q>X*H:[^M4++3>5D M4R'YCN6,2P-:/>IDLO;$>J-#R5GCY-!54Q2\C]9ZYO :LPOM()418\=MC:EY MJAF,GHJ=6B;).3PQLE&, ,YFM)S#CKX5<]8Z1C'N+^)Z[[DX]"[+\JY\S&OZ M<8GN-8+8()5><,<0\3MA?C'GG8[&ZQ';,N6R9D[6_U1)!O:O+E+NE=MMY M(WN@I[4Z]O\@T?ZQ;26SQ7S;++5:;U#W?(/]A;.+K;-&U]XU:@:>6KIY38GI MK)>U&5B^?[^; Z1^4\,/ HWZY>L#6S994RA_66#./!1Z'F >@;("/@0HQ3'P M2 )Y3%D0,:6I/,>7G]@^:P$Z#42G ZG>XO (-X;5XODTZFDR+?*T&AZ>IL*H MZ^&1Y69K?7B:E'[_PX&GS$RI&]G\K=>'5,IJVWYJ$5*,W002$(4T 3 B/D@) MQ,"%J1MS'(4LQ#J.V=.@)A:O!G!;C"?>?NQ/N].S9 :8I6:(V&&!GO2UU/> MML9!"]:>/3!.FJ7C? #0K*?Q.,'[AZG"&X8Y9+6XP,KK[ T?Z&8-TR2A/!#R M3.7-)D44H##A@+A"D!%GKI]J!5J4H$Z=U;7&H4GKZF'Q[QI-L,_@J9K86^>4 MG@:PPB3]M"<=HFWE+RG!G#<128<-!QE%6B_K*8^GLIOATZG M SH>5M8AG!9D)7]M+L0S,& 'GKH=V%[9\WNGZI@@^U7LL.>G\[6_&I6MNI?/ M-CK,C;\^BN-4H6&MJQ:?/MNMD^\Z/R^+;MGP?)]PGB3#B?$@Y@'X4 M A3!%,0A3X((^3%T]5JK# ";TXIK&LXVT&W8;H=\TS;9SN+&&9::'B/.L<]. M4FC?+#L$]5K6V$FB!XRPT^^/]K_I1=Y14MM?*H MCK\]L2RU=>-WV:.\0OWZ^?9:AN.K3-"KDSIU@O!Q43J?9CUA&B+7:JK4,&%F M143'EYRO>FB0I)VRH>$G#>>Z]$V\578AO>,3[U]EC'QOV M>7]&V5(:XQ^+\BM:LFU!L2PO_A75W6]_R^J'++_)V=\9*C=##1=Q(*ZW492" MA/@I@)ZPOE+/\T :^6&20@PIB;1ZP9^%SL1"]GXE[W2.+'.5 VL$GYTETYW? M?";#U4RB^=BH)^5[70?$=7"-*.!%"22J_;FG%TZ'ZHMX)IA9('P4WM].O& MJ!>;9*:EQ.*,E/YAYJFI-7LLT5-;VY2N!O#%)LO_93-PWF*H68E(6P'G86#S MAIV5"#\(/JN]92;RMV5!&*--4=Y6N]R6[*F]B53-P.?ELKKAIU73 I'0\R+" M010DTD7EN2"%D (6P81'.'4)UDHRL8+5Q IDC6-;4$L$-D[)*'OL1L7*,_QQ M@[KT#C^B\I^L=0N;]FZRLUMJJFCV/=#36+OLWR)XX?10[.;."R3E!BC89O:4 MG%7V6=*%=G":565:9>.^9K6[N)D"?L\X$XJ<;NJ>^V5=K%[X"1>73&%J^;$? M"Z.+1UWM9.('+(FQ)TPP'=4Z F]BI?EI4SI).SQD'PASHVN,>VJJSB)/=&^+ M'1.V+1?VZBMMIO@IDFE)V8Q!FU6-*)*^KR!47]-O//"^J[SXF%7"=&C=NA_% MWZJ%X",)"0Q BOP P#!E #&: H]3F)(@B!6GI0Q"F=J/U,%U6L!=:,9I0*NW M(SC-HV&QMD:YIC";$*W5I&"4**->!:=7G:UEP2AA_"ZOC)1:(U1.L(W1.T8E\F*SST@?WUIP_?_ X44<3"$\\ M:AA]:585[UY^SZH%"GS*HL@# 4DI@-)YB"+.@1=YH>NFV/>(5L[@SNKS2)MX MS/E#@M,=G[O#",4@AREY1O*E0)E^=.$8!;:"!3MKS^O[/T;6@2O_Z$/&PZI7 MCZNEC [=E2BOEFT6P69\P[I^V,4)9VX .(LY@"ZE(&5"W!C%7IKZD&%/J7>5 M'MB)!4_PG?6[+I:LZLW MY.-X;NH$K='U&&)O-K8*T+GG9&LPXLC,;)VWITV0V-0]^ZD;,^F#2MT0 LC= M!& /A@!B%/FNYZ8QUVKGI8O U ?]@5=XQVG<>)&W2!F7EFNS75$532B,2 RHF_K2GY8" M[!(74!Y#'G(6$DK-)EHII@$\SC6_4 M8H#UB8QJT%]IR*(6:T[/3=1;QM!P:MH +%"<>H$?$Q!'<2R,H"0"*8R(N'EQ MC^ 4)6$R@\TU3^-6VY>@C.45RM!W^6%(C9R(SJ_JQ MP[A]M65I5?UH_5V):);??WUYQ,5RX3,O9!A"<:-(FGYY#. >2!"?N"RT'6I MK^3_.%AY8B74P7):8.IQ^%WJAS7+633I*0E%C:3?_"BOL2/3UD!"W? M%X\HRQ>44P@Q)" ($RQOZA%(O0@!&F/735E*?:ITN Y"F?B@ZP-T_FA!*@;L MAIDS?+Y8(UE/U^M1JZQ>E:@94G5B@9Z:$[]M5=SPVK.H&R7RUJ*O]K!IM_:" M_/.ZJE:,OE^5PEIOI;]1(=5Q7;.(8$HY(S)MW(L C!,$4BPNI7$:0LH@0C'7 M"W/IXS"Q" M0C\)<:)G==TV$I.7;/J=K[AILF*)A.NTV&)B0E=.B<]%:BM7%<8MQ M>_9=.(B+[9:)29QE]:JT:>B9L\=:1WI]#&9N5&_,HL/^]>9+&><]E@):K^SF M,J?[T\\6A"#$DEB.TDF%[J,4 AP1"-+0Y2A-.$\"I0E#6E"GSD)J<>B7QFVU MFG:JHP(3%0-ZMEFC&>_KN/)ICRL'HPFMIC*J4VPODU$!YMR)C.IL.)+'J/&R MP?0Q65=ZQ\K':T%+7F?/[%9\;01;_2Z-U\.0)BAB(.6QT!"8A@"YA .8< ^F MKLM&ACD@%/>%=_R!>=A$D68 )^',8!!%(.4)#(+&V%AX*1A%"J-Z1J ,;'J:J$Z M'=@+1P*6/>8D:-TIY8?\&0],6J!:3T\9$6PPM_PD26<,+S]<<^8)YB>).AQC M?OI1LVO'9U;+ 5VW9?&<44;?O?Q622?LIA/3)1$2OYN=G[K,\RCS ,$^ C!$ M!"0I]0 F 4]QPK'/M%H@Z:,PL?!N6X2A#6B]>X@!5]4N)=/R2D_DFUE[:TQD M/.T'B8R3Y3\Z6PYV"+U7JD;Z@=]4\34SB;_.G\7B1?DB3Y!E(=MF M;TMS?.XA&*07SO8R> M"*M@A9;+EUN448VYH"/+3"R? CJX_7#C?!;_6^=Y[2::=>@X$A_MP:%C/!H6 M9HK9D?R.JV6T29D^EN>U=67 MK[]USF2,O81@#X(PPE"Z"CR /<'ZX&8\:1XEI$[TX9UWOUG X F^SK[:5@X\#F!*7(@P0D+$0 ^IX/ M4!0G(!"W<$)33E+F:Z4FC4&<6$]\S'*4DPPMVUK['*B\.$<#A&90D_A2+2@)PY#+ M>;XX<0'$1%C^.)!^.>J&D2^TEZ>E$LS0F%A/B"]5.F7#@PTWU?3%]#S24R)G M-#B0B+U6AX-]QKQ*9X,-$F^XH\$^H\[K9'"PFFE2T8='5MYG^?TO9?&M?I V M$LI?%AYR(\]G"4@09P!Z4012%$,0NYBG/D\2CI72IT?@S)-M%Q3@TK&XOTZVD30](-$HT&"3LCV>CXNC,G' T2=YAT-/RXJ8BV54Z-QZ*M MJ[A9U970$#)'9)%$C$8)CP"-* 8P\J7GD"&0$$C]("2<)4I)1FK@YA'8KJRK M06%=4^3TL-"5W$$&J@JP+;88R;$Q1PP$6H70,^1Z&.D;B:<+.*#RWOGL8AP&"7@B( M[&$+A64)$IB$@$$7>1Z'D":\V[T/.?W3[-T:U_-VCC7_OL5M4SRU7G,C]$XV M"^VJ-@VI;OI[V"+^!GI-C?'TM7M&G<3OS]'[:8R]UGHXC0(R2#%XR.^O\X\R M;G%9W?#?JSJ_?U_?\-NR_'OYX5_UR^6WDE;BS_0ZOWHNZ=_++EE&->? )*]EX[A>< TUL[ME'ZRF2D:VC!._WPJE7K8.\:XK7;,75:_YW%7QS.1L M7?F01LJ"*>N'-?!<7-=3LM,QW&+NDPW6F>5#F *=+T'B3+;L9$RN!& OL\!\JD.!W]$V2_*Y!H*R-E -*\:2?C)!_DEBB\HG\EOFQ%&MS]U*+-=][0)[]_O]%\V M.^3?K:HL%P;#)?G7*JNRQHDF?RP9ZUIFPQ@1XF(*(H8Y@!'C( UX.O/4C &K+-'3$6;N#&(24 !A B#A#,LC'R$DH!P+TZU*E]? M,7MMW8V\3=+J10G-HX*#K(NQ1X1F=$'@(\&Z-$$ (=<#20*Q'[HTPB[1CZK; M8J!Q@/R=O5CX(/M"CCP,?<$TC@( P] %.&(>D)WQQ5D$&1)'I&98VR[SM"/4 M'RP%H\](F+3-"XH":=IK3I2:,R6=K"=PQ_2\*VL_2LPG6,J'UA.OJ,ONOFEA5ZZ0&;%Z:6 MA \WZJZ4+17CKA(C C2_[A]N+,>X#Y V-_M&]Y%+^YD(B'S#L)BET8S\.M*8@*4&= M6$K6V< R"V,7'_D7HZ"F&C/53A?K+-*3PY,<V-6=3-9\6J)JBKCF6S"NXYWKM#R5U3+C/H7F>>T]_TG44@# M&J8@3@D3=T8W!@FF%/#8QXQ[."&N5IK).%/4E-)]O0<0Y8&; M?_=P*R3=+UOYZ"TUBR@NICK*G3J&211;$=P].T"VK4 M>V](J&9#/@WNJEK>4_!,3SXOZ3]6K3GEU(7SA? MU-,0Y/RP)NU'N1_;1SOR)FD!J,]5:W:Y,N"9K7!=AAS:W-HK6)WFWJ1H-I]U M!80?NCGF= $CQ%Q$(4!ID@*80 X2\1T%'/LQ"E/NNZ&6XT$;@YER)R:;Y&YE M>OO !JFIPDG9KJ<1V^;D+2Y.BXS38G.Q3M]N'UF7O6]PFGQ6^S@[IIW4/@#_ M+/XI1VA87T0XOOGRFM;DIQG2D_E/E]=4MO\DVMX.=:_OU;]84OB:P: MO*N7LK3Z8U&:U"Q; #6Q6GN?25,BIY4<\=G>N#^@4B8W56VC<*'B=FMG\Z)N M'_PFM=X7QI=MVT]A5[0E:SN=#Z2B,RMJMK%-XU'7F7=(-TXT[^98#@Y;Y*U1 M6-D&_-D"TA:9U0]EVUSVO(YQ!1]H(/MQ5UX=M9/%90>Y5F>3:9>JJ7GE48,[?:VU1T"FQ7CVOKO6T1 M_WNQ%,LLA=WR!=5L02,4^CCU /:)!R +(4C#) 01(R3PW"B$KE8"U PX3ZSK M-[WTGS=09VK6IK%MBNK\;6V&II8_OZ%;KTE1CY#>N(0M+@%<1S2(M %KS5+GQ28 MJ2;6EEFD)^-K[JROK=O\K/4EMT/!8@65.KVV"JL4(,Y;;Z7.@H,R+(U73<>^ M7%(JOC+5;5'5:/G_9$]7!66+..4,TQ0!BES9YY"D( E9"&A":!Q$(7&I4I'C M,)BI[U_M4),.\H73PG8$<$="UQWOEW&",RQ!A9XQO.;KL MS&-;AD@['-);S23%X\#\@\OK.-3ZSG-ILBY= .+^S5/IZ#S-Q% MD188=Z1:TL:JQCG8Q2/[NI;MC52E:12+_XL %F8J@,3W0)K&,N00.$W F/B6[E. -6!5QTF*3FO*Q0+R>5C&AVR1S>8@J>VG*1Z',G9,\1.J1 M!.3!Q\\1U3OTO;NNOF,YXUF]X"X-0TX0"!'E %+9"BOR D!\!,,D]8+ URQF M/@IG)Y M/H")GWK4XS#!6I5,IT%-[PIN :\[)7;9_L;=Z@:8INS[M< *;9=OQX7=H;XM M7*M^WA':[+EW3P&:VZL[0O 19^[8&P8=MO(JOZ3_J+X^DZNJUFRV=>3=J852 MZ+ F\V)3)UQQ:< MK[O7 #D[C;Z&GM,3J:JLA9P6=$7$#3:GW5Y570=LWTUCM6PFUB?^NOHE['\&$>#8N@--/+- [^L1O6RD<7GL6450B;RV/:@^?.<3GWGAIAHTTK4EE M-C%F0=813XQ;V-$S2TP<[ =BB M&POT98\_$\P'TJ?][!#M")A7"=BJD7XJ?*OXMID-<5/>H[RKM+DJ\JI89K3- MJC'+$E:@36=D/31NW!V$.RF:FU1[ KD6B2W M<9MJDL"-5;Y9.G_MX#3K\6R5C?NGM]W%#>;4%X]/ETU_RN6++*+_O;HJOK*V M3OY7AF2T6OMXUUESX@-^MTRIPZGM%O!<_=14,:'\Q5ECYW3H:0R;U^'?^*$_ M%>OT-)HAUR8P!$SX838I7@?0?-/A#=,DCFF< MAB"*P@# F"4 0/=[_=_'MU_PIN\HK6NI/ MUAU>96)):( [=]ECEM]?. (%Y]?/M]>-82O'C^H,SQWAQOAY:(\1>@(TRH,) MSCHU6HU.MY&E9SO/U$CLGV"*;YP[6V+[G4S<%#5S!>,T\.1H6P(2%A/@QX0% M 8VP'VAU33\"8V+Y_165_V1UTTCE*R.RYWRFGUQUR!BUN_J9Y.I)Z1:897%4 MH,;ZU(17'X:@,>/@7 %L)'NY[(:0]_+@*[W,BZ$UICXEE\O-$/4^<(W#<8@! M"D>C)=HU#\839%O.P% ASNPD'%IXOG-0@;R=4U#E>7T1W+2^NZ3_^)AK6ZDG M7I]8\'9;//8R@BZX)C-(1,HUD\-2:LXG? M"%%]R1M[5%_HFLZC3=;B0[$4KWRI\]^K6\;*7\IB]:0MA(K+32R4;3O5'AK. M%U:ORMSYO7(D,DZ#C;IW*JQ9@+1U:3<2)1582*#L1?Q3?K44:(,1E_E7B1;(35(#E5)08 MN#@BB4N0GWA*!>WG(C*U)GE@)4,2H)JV.)NOPRID3F[IZ97!/JN]CGI]U"Z< M!KFVO;5$;R8>TX*L'M>AS#?!ZQV,U&\_CW(FD@SBHW[[6EG)AEJVL^]DN6IN M1WP3YF\^:E(![HN"?LN6RPMGB<@_Y5-/#R]51L1#U0I7@ES"FK$8\FW!!F>9 M<=8T86JVLBX(^S_Y'_*&1$P%^53:O5'*A%[FWO%@NBV\2P+I=4^_3 MG\270V+9C",2"V2/#7(HS^7PRJ=FUD#E?'M@^>;S]1^%3^HY&"T;)65<_3??QD*?U\?YS=%\VW0YK/9B-$3 S/3ZS6@Z67,^5?/YVWT2[K@VX&2&=OF,:=)B*'L^,H3Z@,H3AV :.P!CJ.0),SC<:PUB$4? MA8EOY1O(#MJ UCLE#+BJINZGY96>WAX82+KEX,Y TNZR*'M#%;GX6'96Z*98 M"G4_15:X.;\LZ5<#!&95E.8,VM=X9ZQDIKI^8;GXZBPO5$^-E?+;>=#C;XD:^K&0WPFA.F)V"!-W=0R6[U' M]H@QZS>R7F2^'B-[:._T%=G_S*I=OIGYO3U-%U&"@C A#(2>2P'T0P@0"S'@ M'D%A&%$8D6!1RWC?6?;X$=!:PK5!0/F+*!!QB#0RGWI&9K$98&_9.#_&VK., M\C,99LT8W^"A88Q/;H$/,&=:R_L8X+=@<0\P1-'2'EK!T,+N(GCM1&[QG2D9 MJMA[UOZ[\+C/8\0(P&F4 NBF+DB1G E#7!0&88222&MXWS"XJ>WK3;2R]3#+ M;IT-7.<'VF&@Z2H>X9ZBH6V-)YIV]H8=+63G>L..]Z/LT+>TE:BT96@/ YO7 MSE8B_,#,5GO+1IO/6U3>E$T1-FV:K0B0C=]RD?B)CY/ YR&,8"4A"#A*0%I MD"*/,9+Z$3)O^7D*[-3F_'[[SR=4.L]-BR 9,:+%A+H*S83'6/$<&/1 MT;?/&P!_PX\'.QK875Q#PFV#)-OADWM3Q"$/.>(X!A'G4'KT,$CCV <,L3AA MT$,PU6HS;!>]B753?^SX0"BTP7D;\MR@W1]!:S8(WM(F*L:U7VUK-(/7]G9E MEH'P=OEI>22\)>1>92B\7<:>&@MO&8I!5O>'K[>W7=E>A*+ AVD"@C3QA#K& M$(@KG[ #D9^R!$<)#Y1F-.RM.[$>E8 T,H%[] YKKC.HT%,Y$L9X!>(@)1HI MRF84F64:E'/C:SQG[[>EWA6R MR^ZZ7+[[4H2!Y^(P]<0]S@_%C8[&( TC!+R08QJ*ZQ[QM%K@#H.;6,I_^^GK M3T[=P7>P0$#3ZAEAEIH58X\%>BKBMZ_.&K C(?=Z(TPPH5N-2DNVP@BP6<]^ M-<+WSW+%M\YSV2Y"DGJ$>BX@(0H Y#)+*XH9H!Z!D4=0RA.MUA[KA6=RPYJY M6C6=JM.[3^V[2"=RAKZ.VW/,P7E&PD";1WG$%GZ?<[]1-- :=&%M(>K>-B?0:9FL$& M(PKU)V$E0.O&(F;WY:Y&SE[8)V\>5N&1UUR,7NP%A M) 4(BPLE)"$&**$IH#AU71[%W,6>CO5Y',S$8M4 =1X;J,[C2G:6=;B KF>; MGN"0FJ5Z/MUZ'B;)DV)X ,JN9.TSHOM$[\K3A^*.31^5YHPD"QQ74PXS\U%/DYAU[-@@VID_O<+$$BH PG9D:"!M],0H<-"_78_P(?QB[X=%NB)IP+USA\2!4N.N7$: MC7P! \O.YA88)ZWO(5!XVNQLO22D9+WS>^$';A@BSP4)(2& F!-QQ_ 2@!CG M<9A@GD9:Q^D^@(GE\UHV#&-5[V20;'? (K43]!S" M]:1R \E^O>TI(BP=D ?+SWHFGB)N_Q@\^=S,K<6Z9#*!1=:6A%77>5MOL/!H MD/)4-@!!0E9AG$HWG^N"($H]C%PN3&.ZR-F]S":^T["%[:.J) 9I*P8'"*O; MD1*P.(SF;RHUL$F*EOXM.9-D/3DWIU;+.S) MDY%;Y-AZL_E#!HCI.T*&'GN=Z]C-JI:-TV7GCK^Q[/Y!-J5^9B6Z9Q^^LY)D M%;LM,\*^%,NE^#K(%Q>0NYAS#X+8D[T9,.0@"2 &*?49P2C&,=(+6YZHW[;Z]WDVP1]>%LZ;LQ%=ADAZ5K[3=GT+!),7\0^3UE,,0@1 M\P$,0P\@%*; H['X>J4Q0^J#TX< 31U#;T ['>R+MOF%[(*QAJ\^6WV07<,J MWB83]!2Q.?U:X]A5B#,:SSZX\&SCVE7(ZX]O5WK>.%]0WB$^R2B6T 4YR9[0 MLM,DU2+E*$IB+P ^)1Z @2_[_40A2#F,F!_HJIUSM8B%0 <>]4'J\DC<'6.9^!8C@&(I\ 1Q MR$,=K_$AB(G]PFW-R'ILUW(+7D^0C[!&37K/(UA/9'NP+IP.FCTI/4V))=$\ M F!6>3Q-X+X0#CRI[UF]%M;XTSVZQIVF MYB3IBRX1L'F+D0!.(X2A/QOS3QM?+#1D%.+$I;!)PG M@0'(T.&A&+\=YIW9 V>6(GB3VF"&!RSR,#OR%TR+0]DVS&)94IM96('(< MX+RA1V4&' 0;U=^<>A+5(HYYX+HH!3@)"8!1" &./002P1%(&?0BG%CH>'\$ M],3FZJ;C_0^K=??V?N_[;,;!5-8'4DVG1RP/HGJ-Z5.6U8X&X+?0^WZ (>93 MILZPR2_O[^NKA_S^-J_RW]'R.O^Z>GPLFY*4JL[O\/)C45X^+?'R[V57S:UH MMFLO/+4Y5\NFJ_,[EC.>U\0^OLP?LV8= LT[9_7 MX+[%>OZSV&ET,]*'-MOER9@1_?N5^2*&W>)0EG\JJNHFE_EC-_S=JLIR5E6+ M((V"A#($H"O'2=.8 NPE$0AXX'$:0"A'>^BG^)^"9^#H-\C3EXEPE5.R5ICJ MPF'?A3#)27(TJYZ*2HZ5,[2K3C)2S8HZBR]F#>H$1.<'"?-'I^E])1G0&/A2 MZ:SA6VQ?-T*AK79VI\#,V]YNA-B#=G=CS^L'W]]W#7BW=?$?Q5^J!21>Z 6, M@C0*.8!!'(&$8B9^\KP8B_^&KM)0S $8$]LL:ZC]]A!. U@]UGZ*.\/2:HEF M/4$U(%SN)I(W1>9:G/#Q56E:66Q MH)@$;D(YB",: !C[$4!,IL'@"+DHC+C/M3HM#T*;6!RWT^7:8#EJFG7HG9[# MW%([0JWQ0$\\M^1WD?(&,B@X$+#;9C?V#E$E&BV=I,.P9CU.E/U/57M+W M#0@+_+[(V1=&BF=6OGSX_B2^#\W]ZH9?/S[)W-",M/'!%^WVLD:+3RS@'4[. M&JFF=G*-EC06]Q%3O]^;\7+\CC\Y&_5TA#8')^@Z>Q9+C.[J9A!GNZ^?Q9#^ MG?V\A"Z7%@8 M*2$@"1((&(/" B&I^*M6\SYUT!/KI0TBGE-XT68C L-FO_TBA&[;A2K M7TP[TAED^AW2F-7UBCME-O#K-79,;W[81"P='$)F&^9\D\PFXM;..+2I8)@6 MN#5-X)JX$7N/:K3.#ZE,0LQA)H%;L/=B.!#Z:7Z['K'&_NRT6:)K.AM0;%+<-DW9&<=N)A61Y MLVNS5!@KL>[7@M="&;"]%M-=#HG/8HX@Y$)>.08PP@E B/@@3F(O8K&/>13H MW)B5H$XLQFO83LW(0UXLBWM%-YT>Z]0NQ=89HB?4:_#.&O[%07_Z"89>:!%M MZ1:L!G/6"[ 6&_;OOGHOF^D(F4OU&3VR]X7L+;\(N4]H&/M"#Z0R&T9&S@,/ M 9[B&,O/ M9>K6YZ+^.ZNES_(^EWW-6OO]8U%V?Y+/>8L@BF/H^TB(J118ZC& "0QE<]K( MCQG%OLNT_-VSHC^U&2#K-!SW]>Y>4&)8?T[^"L;4!\L?97R:S3S>^<#8TK!TH$FGQUUKL9>UL\;[H_"C-MO=P MMQ@<>!66VPHPS(O\O$&*5]F8@T#'ZV!A.C5(*-;KJEHQ^GY59OE]"Z1!NFH^ MW+0";OLLT85/4L^/@Q!$F% 8T^.2,0$D!CBD'NNYX7V6Z,[38MS8Z99&WBDC<#,4Y!,&70X&LEX)8/8[]7G MJU\1>6CF'W[,RJHFJ[5_)X8H2GWH M]S0P"#Q 7(]2/@RG9MD*0I]A/E,.YI M.!-;P0*PLX&L$=D;8(Q"&-4.N9JNKCZES@]KL#^.^[>TJ-<(4=KA@EFT\0M[ M:JOK*J=^8,Y)YCR5!5V1^B=+(<1QD@>C@0.OSQ?8&Z=A)T:G\+AA7KWLR"R/ MQ9(]R.+'=1J,K)X1%AW+[O,V5$!>[L1Q6]@O,[::XOU+ISUMJP1=WJ8-\6,/=R=+?(7 M#F[0E]E_%BL2IF6PK5J&B;"FU=:A4@SGN+56?!P;55XU7C;L6GQH6W ML\%E1YC>W/#VWNPM A+XXJ[J :$/.(!^$H(4(@B2B+@AC3TW\K6BNH9X3*PV M#H89_%8QOEHZGS(N<_\[O(SC.*;,5U,U,[!43_VT"($&HX.$D>JBQ] ^6M;= M;F?RQ5X?92,LYNZP? ZKCO1>/FLY0Q6'LK)I!M1"$@96K_UL-Y>(WN1?Y-PO MZ1H4#WPN9$RW_;49_/4IR]EUS1[E&," (C\, 0V)S&F)8Y!R-P$1A3ZD-$6Q MKV4;6<5N8G4H<6W[*EUT0MM,?&'WXIFFD]OV\A;'@<^@&X+8 MQRX0AFP $NAAD+BQ#[$P9Q%6ZB=B%ZVI+\7D@='5LFF2U\>Y[8ZWQEJV^9)X M@V5CMW4J!;\X6]R=%GF-4(B]G5.(&[W*?N@I[1WV?]QA_]TQ]K\[PGYQ@V_: M$ZK?:8/3,'K3Y@FW6.;03F[._NJ$KM]/? M-_R2_&N5B4/W] 7KW;5$5=4@L> II=SS*4"^3/.-B O2-'&!ST*> M\#AQO8AJ.7G/P6;&DVZ-G3/HCI '7(.CTR#9Z5;-6\IY&Z3H4)Z+[9JNYLDY MKN^*ML$I6T[JLW"9UWUM@VT'CFTKBYJIS>NJ# M0*=^^5(L9:?@9C@P"U"(@R %-$ $0(]X((DB#&#(&,$\\5.HU?]'$_[$JG&- MC?/#&I\?F_;7/93^W6F1IZ:L:#?[-1PA=<+?7?>(A]&/B,0 M1"&+ 8PB*-.[0Y @C'C@Q6$<:QD;UC";,>0]$"HU<@_9VYWY M@3NXTLL?M5 MPM%3^(GLX?6G"T,/^H_L S"%.4E[7VJ()%6=;3Z[)[(H1'JKI-GNCW MTQHMCMY5(M'6V-UA8/..W%4B_&#^"])0.F@2'\HR"@J"$'/(6<*]5*EELP[0B75 'X7F6$8]V'IBK\1"@BA, MA*H$+&(,0*E*4Y>(GWA$D9=2UV/IXIF5N'@M)O:!*[.QO;31F9FIIDEM,TA/ MG_:A7S@;^ U[+E78HZU6=>BUI%R50,ZJ8G68L*]HM=X]HVBY5=Q]!SBA3%P\ M/>"YH2N4@QQBCL6=E,:^SV3_%\*TVHP>A3*Q0FW+59<;[[?1\*^CW%&3]K-I MUA/OEMQUP<<4/NU!@FQ6PQ[ F+^6]1291RM13SYLVK;[2BQ2RA&[E'W_W^QE M 4,L92X!''$NXU$^2#")0!3'K@L)QRR >OVZ]R!,+(I=J^H.J-- =018W0[= M^WP9%D0KU.H)H3:A!LVX3Q!S1A?N_15G;K]]@J##OMNG'M0/"]VR0O8058WW M=(]/+"6W'VZ:GK'JD9DU&>,A%P,*]+[YH\AKQ4/VT#4*=*S7F"V"L8=T/S2Q M_Y'!:$?IE+NL;OAM6?Z]_)#3&_[A7_7+Y;>25K^4>4VO\^:3ZN.2_E[5^?U5 MD=/J?2E^>"[I>B2[\JQ'*]"FEIY7LACC5\9JY_+I:2F'XBV9\SNKFEI^25V7D=[V.!-_ M$;=3L:!<0V.FI)U-'!?W^?=/4UN\D:VSV$O?/MO-)EO:06&^49=66;8S^]+N MROHJ^V955S427[_\_O+^OOY0-BUK+A]K52U\CB]ZFP2/TI87XC''S:? MMK/7/.HSJV_X'?I^B:M:3O=9Q,2%H>]AV8@% 1CS&"!$&<",Q83#Q,5(Z=:M M 7.&5+'#WFVY.#G%L5NC[YI-5E28J.8KL\P:/1$?[&CWN66.0.3"N:SK,L.K M-H-4V!RW2'I[G#_6*%J>R*/($(OS>,8@SCZ-1Y$%QV;QJ+ZJ?Z[?E?2R+(4U MV<9^% _SW;>F3BCH]>->@U0_HO<('#^7S6G3D]2[$K4'L0YY6J?N<4J,CMJ] MI68[7X^3T#]43SQQ;JGL?DNUZ[R99BEAO'OI/FR3ZA),DI!["8B\, :0ASY( M C\"GAOX" 7(BV.M\+T!#A,+8+](\[ W8 ^KBZ9??O?$F:6PZAN@=BI/S%8] MV9^&HV>4NFKSQ'J!JSH&KU36JLVBT\6L^DN9#DL1][NF*^RJRG)65=W:U>7W MK%JD81IY"74!"W H!>'[0"O$"5^$J @QGI9AX/0IE91'2AAOPI@NDIGD$V* MZL46\9J*1)%N@Z$C"O18FR\R!&OF42(*9!].#5%YR585^FW)GE!&WS/.RI+1 M#VV&[65.>^'[A8L@IJ'G@I0G'$#* I#XG((HQC0(8QK(('O7L5Y-NLT04?KF M[S;0UXV;-$BL$XW;)G:%1.#BZ,4AC87QS'-$H9HG+/*5VZ"?6GUI4VH2P!J2S MAJF;]K;+D&&QL4"FGNSH46B0[W:4CC.RW7;7FSG7[2@QAYENQQ_3%ZA/@K_+ MVXI(DK@T"H21&V-Q;84A\D&:!!3$B><&G'N,QKZJ-.TO/K$H->"< M!I[3 E27HP,^C O1.=3I29 &85KB -O =@< /SS_V1M)HV&RC[% PXVQR0M.R&V#"!'T\ ME"DULP!'5Y_/*%0E=,=.5'[)S/'S@7-&ZDW(]PY]_R*.4#E).R?9LBVCNJP_ M,K$B6DH/U$KLY,O.PPN<H$LBTQ!@I&P/AE!"8T#:8OJ>'@MX#2Q MGNA@.]4:N%/*%">=)7(A87FNFA=C8!C4GT"='81 MO'!D&FNW"1LD]U^ZD,-ZB-5Z+HOLH'1K+XFBRS<=SS97%I/G59EO?BP M*HLGUN6;NVF4A*'K D:3YM* 4I2!GR/8.8B[&-?*1%N?^&I[]X-*#7==4#S ML (ZAQ)-+=) L9BG?@KU(1$6[_3$5_RV%=V#Y6:1OU-$K(7HY.=G%$G?B-,0 MR=#SI13+IAW.%:H>/BZ+;YMHU@(E/'4#+ TW(D0E92Y(J>^!($Y(A&@80Z9T MO]:&/+$LW>B'A]29IG;83\(*W=O$>F:L3/]Z+ (H2CP 78^"-(D3@&@*DRB,:0+1.E/G M3B<93QT'@R2=.WT%MT6FDFFOPL!X+'*GDG@V_IFJP473/:/%:C7E9IUS9IJL MX4L/C28;IT-D7?W;HG+1MG6VF)YCP@)KN8 :H&=.#=1GRF&FH,$:ABU'VXZG MZ](U$J8P9IX'W(A+MX>;@-07NB:.O91&D1O15*L)UN[R4T=_3-J%[M*O)OOF M5&G>O=KA?U,4VQTGP5:[S]W%YVWO>92P@W:>QY_2#YW^EM-R^7+?C7!X^?6? M=9,0=/4@I)0H5[T/KS*QV C@3$"7)\4: :<=3M%FA3E7#](R5H^?CO!D/'AJ MCQUZ\J;("8MQ"75JC:*G(TO/%CI5([$?-U5\PW"0P$RL#\0W*-$/)'M>_K87;2]=QK,+ X:.(\UML8*&&(Q[Q"!\UAU,#+@ MS.4,708;9T3?7=%S7;U[.?!7M)G*37^IZUS8.\VTZJKQ[MZ)X^SFJ>D4];$H M.6N'$/^-9?S*AD M89CZD'M1J)3%_[;(FCKGI$5%Z 7IQJ#%O1?.FF*G([GM&^=( MHGOMY2SZ>][4-MKR)+T-HN;U4;T-FD]YO]X6=F?.2MO&&'KQLSCR$:38!W$4 M< QXR!A(?S_N'O7YL9Q)%WXKR#B;)SMB1 F> %ONY_<=>FM$]7E>JOT'!V*-"JZ.K=O['@#K?Y,OP:UHG+O?R!H/XW[2VYM[([/Q#>8!M^ M^-X55_0'_=AW-T6(Y+DH&()4!*G< V<9+)(DATF>9X*Q4&!J"(MSB93OC*)] MK]C5OP/>D+:X73^O)8.[]*ME-[/NELZD )?C8KJ\'3]/:/J[\$&!S]Y\#[]A M?D?7(%V_7S?@V,> V#>5 L*6SL.F98#QP)Y->0L ?W0"D OUA^^6DE:UD8M 5PVQK%;'$%EM7M[= V]3\^9IE(2"%3',BX1!%(H$ MYHP)F"6B2*(L3&*A593@EBW?AK^K_BV[PB#\HRFLGH&?6 ]!KD.58VUVZE/# MFD7MM>,I&W8IKS<1AC[H4@7V#.SY!'M&9^ NIB6@HZ.U85J3GJYIB7U\P*;WDF4M"97KX:8IG6MNWL^TI.E. M@+(DXU'*!8P)XG*;&T4R/(X2R"G&!>>49R@S*C/1I>S9Z'M\=.D[AXV6/AO? MHNGK5,\9>-&4F6.XN7WWZ>*QN[,3,FN!7=7 :-.=MCS&5!TGE3/& [A"M)>4 MZPUGGTM,RD4#1; %H-ZA%/1^-T]0$:=13"'B60*1R#.8\SR%6&"1AAB'HCN0>T/5Z[FB*15JYJ$N -]O5?SY2,6MI]_CG/1^[Q,+ MWTY;WE#Q#=EY97Q\.^6-(^5;CFL9<"T6RS^PU,#'9?U^N2%KL5E(!E1#UM4W M&465SVIY?=>>&LP%"Q%)XP027@00!0VD&2>0AEE."TP#EAM5+QE1]^W]MKP ML:R!G Q6KL%BJ4[ANT,3P[#+2+.:H9]?J[W.COWODAQ.[M(28QS% C( M69%#A#,"21P353&$TPB%69$9 F*Z@K@;93>M,!NNN*? +IIOVC9 MP>=,?9A)*Y_I*_+VV3RX 1O:UT\9-O@QKHQS)+3ARM^T_/%4)*8AD7T+H-40$+1#A, US#%&89C!G62#_4R0< MAU&!(F*6)'1(8)K\H#U-H(B:9@4=Z638W%Q(:F9KAD):9 "=E^2*Y)^C 2?. M^SDOSFG*SX7GS)>L[^M_?*WI;7VWJC^LUF7;5_=7OGY8,N.^)SIC>;:J%@FN MA:F16[B[[]_ GA70\J*_JFDI9WR)-3B2+61>_^[I;GE:2[RO-%Y)3J,@R^( HBB-("(Y@YBP M%"*&:1#0G JLU8K/'4N^5^?'I\7RA?,.NW."V&@>9D^#^M1$T7]N&\[#<$[G-^%MX\?,\1V_\B M #WG)V,Z")X+]-_:2K0#:]LO1KB@K$ACB.,,093++0%.!($TSV,>Y5D:QYD- M /]T(FCYOZOQ^P]A[M[8^G0ZK:^]1-G-TAM?I?;?P)]JH;HX%V]^K3KE_%]D MN;HX)9.#QIUAP;)C;W? \IW7SR7EYQG_LJR>&PR!%ES@;MGN]G:_5ZUIOBS7 M_\/7JB/;?57^+V?S* NR@!,.0Y9%,GOGQT>J42:>0[WUZ$W,C/WJ<^;LJDD5:=G=+C:*/_G3 M-7CA:[!G<:9PM3=.FP+[UJ:K5L'>^)RV@;!O=9^T%?9.T+88\KXKI-A57QH" M9PV,X,^2=T1[9>1>\+(TI'-6U7>9TL0U?:,BGU;TC;]BGGCROJMM__\VN%ZK MIBC?^-.R7L]Y@F.F]KTICT*(6!;"@D<,4L[2, Z#N*!:P!8#-#Q'!UNJ8$<6 MM'3U,U N*6<\"<6!R&;&:BZM42K*B#Q6V2B7QIPL(65$J'Y.RMBCEG4=NY[+ M3&1/Y7Y7PW_2KG>1SQ) P2&,=A M(BTT(A 7>0Y1SD/.!45)6%@<5%W#TS0G3]UU:GOD!,J&#=!$^+RFY:I!T#BY MSIZ!BC=WJ]UK?Y3KAP>^8$T=A(+-6))%>=^Z5<,2DFLF46_Y]SXG5W8,7ZE[ M[#U?0#'6@.*UK,U NU-KN9N!+7]-Y._P,MN%FES5GUS#RK3E* Z4=E*=XF+, M:_I/E7$>[L 0GG<5'66@2(.&MKH&6:ZKI4DQR9 * MADW2H?1F!CDDN(?D6@T9K7)JA\:=+)560[A^!JW.XQ:E7.SO=\NO?*D.ORQ, M\,+KGLUO'UF NR7X^N'VX(;3QA0OJ6'<#!UHP#;@'A;>@SF.R&I7\75AS.DJ MOH:%.JCX&GGTK>6U'*;?C/?W*V+,\2%8Q[M%0DX6VYT7H1[07GC"W@=VVM#F8 M['49^[:N;A[7ND8Q,HQG*]F?:H"&/N@Q +[Q]::NQM*1C!4S;EL.=6)F; [4 M861QFH):F>#8V)/9I*:0?2/5?<5R^TD?.-LL^*T8:*]XUQ0:[HY%0A*07"$Z M1RE.(8I3 DF6V>A;$,'*&(['FLP0+@C1-X)+CWAK9:+0D9NE M2\:^B1"BH#",5.R;9QQB&0O#5 0X"P0J2&H&K&U W/>]ZDA#DZ[)W$^*G[]T M@=OE#_=Z5>L%OKX4:'@MZU1W/AJ?G"AANMXG>])OK?W)B5(L.J"4@#2HHBA[%(*40XS6 19 FD.1=YA B.S9J>F#+PMMR18@LT?/GQ M27N]._5+5MKTZIMT%.G+09UH8UHGM2?_%AW5B7(LG=7I.)8.ZQF7"^7X/B[K M[WC!WW.R_L[IIFY;H>R9^:665'^K:HX7JI+R%UQ6/W.QK%5KRGD:H2+&6089 M$QPBE*60T#B$G*&,Y2)+ A88>3$77'EV;7NJ0)$U+39QHG=-+S:U-LU.(Q MG0Y^1>Y @VMNFCHP 7Z[/EK[J3CC1R[6DIAYB;&T 3=H[1<%NBYI8#I\]HL" MG$T9N *173O[9W4I_:?YSYVD>E.QKW*N%3/OEX_2*N<8!Y$@)( X"%.("HQ@ MS@L">105J. II<@MD*@%D[YW3DWO#T49_-X2--P2>9D8O8#CM=5MN+4RT+3[ M9,PK5#%57J4-BV\K1?(*)1MG.UY#R\P%/]4+,F\VB5_K)=O0]:J[)XDH+[(L MR17H/8)(9 7,$T2@X!DG49(G(8EUW..@;]>[VG'I&J] MI'JJ<7U!&@>-^[OXWB2N:XSKK=L9?=6S M+^BJ+EJ,+]##(]#?T)R3=WQ;%.LAX'GG4W/1N-^O5&E?J%$@A.C[S^D6% MX :E"9='\&R AR6'AN4' W*/&YP;D0UCW#U-L"4*3%1@9&CC$EK9VL"PDYG; MN&A]B]-X>N+J]EUEWLUJM7EL:_H^_'CB=,W9>W5PRROV#:_Y/([#5.Y,.21) MED&$8@J+4&00LY0%1<)"(L))JM9U.?8=]78D >MH@I>2+S3;04XW;8Y. Z>< M##-/YJ!LO(=[U1-C!G93O)4$?!MJ8SU=%;BIUE^[NEN;W[=U).E*_QBRSYJ96;K#^/,)NXAF*8"DOZSXLI]UP^ ,T)8Y]2.BV .\X:]!_7UN.9R! MA>(1+!23!L?E5\^.Q@W"E#HW/?[8J?M6@)8WT#(W QU[ZC<-@Z#E$$@6P=^V M6F^X!)^GUKK!C<:4VK>[_KA[X/VO5P%+*8[W%@"JAF,=.P!X#=9R/!4QRL>P M_$?-.7R13ZIQQ;)^;""9GQK,%,"X7(R:G;A=/!0FG)UP^-JE@>O M@ZXF,MW=D2M]'%PT.1O4/#;\M7HJU<)\5SYR]G'9+-0R'/VXP/>ZQWL#0WA> MU7[]\O53/]9K.&@0Z0^BP6&@+R.5C$?)CK1AMMZ8* +\KGAQ% MK2&L5 @^- M.UGDJR%=P"9K:YG'PG)Y;?+;A\;P;*)F2;"#PH[;GBLYS8RO MNSYNR*H57 =(LSK/OS6XV5U3M7%L M45J0,,^R#&99CE6.KMRUXD! FD99'&099B*8MR'C=QGEKCV?W#L4S<1"CP74 M-M:?^7U952HP)WC1A-=O&WK6X,N(1)*SE'&(,QY!1%D!\S!*8,[BL$ I"HIH M^V5\J-B_\G>Q%4__XJ?=J_W+?1*>;XI>:9(GOTS2Q"#>2?NO!#YL/H6O?3/E M4J0_Q^65ATF<#FW8@C>[\.UH_/:(Y58T;*]Z61SOR\6FN7S;1N[-5<6NXRS# M19*P-(9"Y 3*536 )$&9"L#2N"ARG(5:G3W=LN5Y&]=R S;*.?\]CS7*W[Y'BS]HW+K=BJ7//OO'XN*6_;NZ@@\KYJ1FG/C((L*3C*,Y@$ M-(8H0@(6>48@S<,$Q1Q108V2PGTS[-T12.<(&]Z:;<]N@>,_U-\U+[.82[]/Y2Q6RIP2",9K7F M0MW2][V3ZP'8M1@(] # 4VZ#32$$#?6KZ9']:Z8[Z6X0[/5:-)=KIR3 6:?H?FI14SILXZJO\Z!ZD5U0X/+="2/=7W;=. M<,Y9'!0$;NX?FLSQ(>V[RA]+ H%:+@Z_ZL.,S3B49!3+AUKB+@,J'@$<9X)F)* *'/G4%C$)(.BB#,4I1Q19@9[TQ_=]W5$ M2\O6FQTJ0C?8L13/-+[1E(DSB)8$BH"E"B A8BBR$B41AD.,@(T^K!Y84[ MSV:LB<> .WZW&_[3LO!5!]#@'"3 8"(U3IY>K W % Z)O#6S!7%\6X L61.Q"U=[0 M;?IN!YV=I23+L*"0L#R%*. 4YDBNE@FA09SD:9!G6O7@(W3\KWL[0VM/H7^K M2EU4\3$5Z86S#@0W7E'V,K=9_.[@Q36E"O'*MZEF8J=S_\KY+7I;TEG7)5W-:X"CF203S( EEB$Y3Z5FH@'F1I0AEB-$TG5?-"J0) MOS%(3\LZBM8Z^E2UC:1'R\QQ#*M)SU%<+[J58]@ECO^T)?P7A>FDHPICKZ E MHB,O,$QK4JO7$OO8RO5>LK7J=J27+WP]#WA 44P8Q'E10"1("@G.* SB."I0 ME-"B("8Q0G]PSR' CI2IM?;$SX.(8X)R&'#!I _#1'HS'L TSJ*0\C@,4#1? M+]=XX5G\'0ES\6<-+H%":5TLEG^HC=\5"M'U5G9BFCJGG822CDM'=,J],[_3 M&WIB-W,JU*E7.?.,Y4ZDK,HU_UP^<_:I6LM9*\E"8?ISU9GT5_SW9?UN@5>K MFQ_E:B[R-$.XB&$88NECL-R,Y"3F4GL48Y:FC""C"V@#VOXS;R0GL&$%['D! M+3,*9JEA!S3\@-\51Z:;$@,]:VY)_&C/<$/B4G'F^Q-S%;C:G1A0GG9O8JZ2 MDYV)Q1!FSF=5K^>_2BJ/F\?NW WAC(4H$I"',5-7Z7+]1C*:B5DJ!,JR0M.U MG(SLV7%TM/1\P:G8PY9^E3!F=MR1<7B >)'Y(0N4+_6L3_YK;WFGXTUB5Q?% MV%K-Y0>NKH.4J_MOE=PV+,K_5::HX,;4*<$ON*Q4F=.VFS.)"Y(E!*)"KL6( MTQP6A8A@FL9%4J32J#+;0D@M!CQ;F*K4V^R8 />2]DIU)RAW[*S43G?%Z:8N MU\9[?F-UZRW./I5H>'MP^^[3#/3+(Q7E72'D>T[6X/M.>?+)9UPNU TR%,L: M?L<+/@-?<:U*U=U?_]FJR7W-I![YURJ:-%+.0-6DV3CF5XSOEM_YHND!UIUJ MFL"]GWW9LW=YU_8W 5O*H",]#'2N*?>PJW BLIDOL)/6Z,YP4"*K"\/S(TYV M6S@H4/^J)1OR('WP_UM!6*#;_78U#$U.7*VZ[^IAO66?Q]: MLTOBZ1A1Z*<=*SI+OL,$'SM-N$K\,:0^;4*0G6I.$H4LA['T2')B>%USUJ3! MM>!-14&2/(P*R%$:0[E;%Y#D3Q!PF 6!,W_6NC@U7^"O4 M;NB8=AK_WFK\;ZV:/S6*=.A_+@OERL>_= MR\W]?>-[;A[7NC'_P!">37Z?5;?SE_KQ_I#DXU&_(Z'-#.ZNQHU+.L";V_, MSN@#W#PN-Y6#"SM-H:VV!T/C3K9)T!"NOU70>=QN>?[M>X, JVI7ORX7FNI>,696_]MWT#+0Q!<[%D"?A^,-@8=S/C,U M.%J8-8E.NE:;*>)X^39\V_H"0GG]E=Q7J$7@W:96A[]S$HD0HX+ 5(A"!ODQ M4C \.<1%+GB&BSB-C9*0SY/QO>AW1&5@_Z*_XH]H1OM&X$IY#<_]MZ)V!&>@ M(^GT]'Y )'=G].>(3'T2/R#HF?/VH:@K*IUQNK[S;?O M^E4\VH-Y-L.VA*[/ &@Y #])'G1A!O55HV>A3K5B9JQC"O&P)&M+ZPIP8I3> MM" 4NN*? %-HOVA1H;=8?/@AX[!U^=X&^'=3+Y]X M!S_3?7DB9"@.2 Q%P(1"7DI@GE,!BS ($25QB(A6[[Q+!#S;94O1!)?VC [R M(&*9C/AA%,811$0P*3Y!,.51&%*, XJ"^3.OR7(*+?0)3:N'82_D0C8S[],2 M QVU<9^C)Z4)XO!UTMKAIG2=C:I[L.H$5QTS1B;8$!+XLES#\+]GWIL0ZOPO@//V>U0WBT?'Y=5[]8I9S1/:)Q C' (428"F,<4P3!A@?S_*(^9%C3Z M)0+^4X,D.;T+P43[1C"*9WF&9JD<2_TJ0K,H2F=!GA_>%)K=$,Z ?/.)4[46 M+@S+J$ZF36^S=,UDF#FX;A[\7A->$L?1YN=D^$GW.I>$.][:7'S.NK1(%;%] M5G6/S2;I5ORV:@L)YCP)9<"0%^H"0D94>2C_EM,$!F$J XT((8Z882G1)5J> MW41'&2R:\EO,3J2WLPNMX(W5&?M>05<"B@IM^4_TF,)J="# MW..;QV6]+O\7N^UGI2&_N[J?BY2FKO,9$_E,7<_H*W:6?J&/;]>V]Z2=[SQ( M:53P+(1R4\4@BFBNTA3EAD*@E/.89@&F#GJ17Z+OV2-T9)N^*>VB;GB@::K. M*"H8ST@$PQ03N3U%(<1Q+&"6Q4F<90C'9L7//M5I7A^]52<$?W1\0=RU&>]" MIGY\-9G2]3RS1U6:>6NC%NTST#'HO2/[F"+\MEZ_2/TM]%@?4XUF,_718D 2&?6V MG[$%:L,E->DM_@Z$-S-C&[F-5_(1J1RMV)>H3+HRCXAZO *//6YFJHR7\P_5 MNER_?'_$B\5V\+F(- QT0OC._[+JJA M"!J28$M3SR@O*638&!V(:7@A8R2AMOF-R#&P4,HW6XN3?]D;VJ7Q)C&P$6&V MAC7VF#4:XO*1W^$?[\L572S5"GM#5NL:4WW8K(LC^/NNN@[&DBK8DY7>O2/L MT,-KB.<.WN\BI:G!_<9$/@/M-_J*BQJ[TZ.'-,N"-(Y"B$46050( G&!.&0Q M"L(@2*,T-\/4'Z;G>44XJ;USH&3-C/RF/.SVD\54CY_LL9HS: M*];.:9^UZ+YF'O&][](AFBYT30CYC3\MZ_4(^#X8[\B"/5W0$M8/ "_J9SP*="&UF15;"&P4#XY)9!447AQT MLLAP3*Q^>#CZK&41S& -_:]XO:W<4S>11JM8MSSIEO8]_P[OYW67'P(DGOFKH+E2>K M?F**U>5L4O16_U=1M:&'T8'OVG<-F(&.ZQ?YY*)Q+EV.TG>Y;"WX[M?@O?S- M]@)?"0.D?* 3$"@)'981N5:SJ\HC9WQ-6ZSD6ITG]4W."5A42OR!:_9;Q>K% MRWVOCEH?>.#B )[=HB3))4VUM_EN6* \+/?X!9,3D2PB(F#!4I7>&V80 M(Q3#/ QX6L0,8;T-R2 5WZ?1#4VP(VK9<>B\@O2"C*O%-CR=-I;8>#T?E,C1 MVGR>QJ3K[*"8QVOF\,/VQP1M&\\/%5/QVCR+TS#&A,*$JT2P, @A*6("DZ @ M@J6IR"/MJZ&S%*8Z(&B)@@\JXUV2-3\>.-2+_MF M;26!P.Z@EH="YP5YJHS M@<,1)S\0."O0N=. \P_:K7Z?E]5] X:_A<#_A2_O:_ST4-(;U=/G3H7"^T0? ME/"4B1S!/!+2!EE*I0T& D:4BCR(;MM6[8JQK_+#O M]K!G#C3_YMWU?\GVX!5NJ0)%M(E!>K=H!7?4 MN];V6_I ,6!21SZBL6'K=*T'PVWQ@ JL:NI'=&%27^].)W:U]I^JIA%]X["> M>+V6.U=UE+=>@O4#!T.:^ZNK4GP]%0R7Y8^,,6&)OIXTA^7ZFN_8.#I%8SQ M3*MNSY"N9_>G.@R5;7*=_+S;=*/_,+%U?07JN$ O:C'TAAT/ZGBBS3R:@8:/ M%H.@*\B3K.BD'UZE,!,_Z45Q=BY36X&N'*2Q[,.^4G^X"=VFL8R''M3\=6?I MQ?LC"T)$E-."PC#B7$:-/(6Y\J54!$6<4)1GU*A9VQ QSVYSGX]LT6?]LH;T M#G5*0I;E,7;V3 _*[Y:_54ZF& M/SJ -,DU&![*LZVV'("&!=4M\:Z4G[$,X'_]\O53[U->S<"=62,$'2V-G\HX M5I"94>OJQLO1K*'T]FD,(^-/F]"@)^Q):H/F:Q9[(#G:TW*%%[_4R\W3E^5: MC;ZLUF6UX:R#FELV'1)5I\3;ZK_K)T!R2WHLPMV_,Z MX@3\I'C^BVJKV[ -F>0;W/2F;0;VO#>OO.IL&>P*7W76[#:/KSE[9MM.;\H= MW)VZISK=)M:;Q@[VNOZH7%'0)%^=1V'.!1$"YG&*%.P?A3F7ZR-.J8BCE F: MI<9%3'+@J?*2%"V+6B4E^O *6D)C;U/=/U=-FO?K,G_DB[JZ$8D0(87$!B0A3B$(:2BO)(YAE4<09C@,< M&Q4*#=#R;"X-*1 ;HF .J$;O3,B1P&;FU*^M:>G*1;F5WT/3#@T170%=#E": M%NAR7.03H$N-5RPSX8\.D7L'NX&( V6]-$D4I"5AD&1$0(10% 8%*A)FE@U_ MB=($EV&?]I=A6_!EQ8)A3OQ%5>E9LQ,%7'OMY>EL=U0V5UGR%^E,FRD_)NY) MMOSH"^;GN;WR_&^<+I]Y_?*I8E_PHY99#H_@VR8E"?TCV0%!QT]BWMX^)9G; .##O9P>JX:/WS5(VGS4QL5:_G7^LE MV]#U;?V=U\\EY0U47IYPD858[O$BDD-$&(:8XA3B@" NHBPFN5;OG$L$/-M> M1[*MD6ZI&B$)7M3+L"VZD-;,"BT$U3:],6F&ECOY;F^ID__:F][%82RXO))WNV6TI2%&8DXQ"0.57/G#.91SB C M-,F+D-.":E6@C%+R;'KQ>["E:W#:/*@:C6-^5P*;65]/5O#3EJA&VT=#^0T. MSEWIP>X,_!M_DK_EJG^M2C*]H)ZGUJQ==WDL1BT8LZS;I6GLHY'FM?*Z*9ASF2SGUSRHNRV#:E/!UP MRF:4%\4Y:D)Y^;DKCXA[J2>&\*1#0TQQ$GJ8->,!H%1'0-?GH.=(O5K?N);Q%*WQ]%G0/ZOI"L":5J%/'1LSP+<,M%U'&W=$ M\5.Y5CEX%HT)#=2MYX &7C15R@L1L/H+Y1O:CE&]9<0^(F $Y@(G#'&11KE1\U!GG'FV MZ*;T&S9< *SHSX I: M1>HA#E.$@@"J:F.(LIQ"DH<19$&!\DRDC!2)2;/@@]&-7*!Y*^ []0J@+2VK M+0P?I35;KDDKKZ7J* M-FN6:2++7@O#EF,MF^%R;2>64=K*B1A7Y*KLQYHL0>6$_7Y6RNDO+:^LRJI< M\X6"/OQ4K>6@)5GPUO*Z33D+YX4( A12 @E'"*(4(Y@7)(*17'TR2DG,$RV[ M,2'JV:SV=+NU".".LF'I@X[^-*_^'&O%<'?>4.] 3GO:Z?!.;\:T8WX1:""N MJPM!'9+37@P:*.'D@M#D7?.#LW45?EZMV8=_ MKE]N_JC9ZI>Z6DOR7^OZ?VK#-!%K IY=@VIT M7Q"6R:Y[Q[4*Y6H4OT;LF7 M G1H_!T$Q2]R9Z N$N5C7V768&[!RR#W9KWF_\U)]122KY:ZWJ;Z^9C M_"APDJDP\T>3SH+CC)JKU6EU2FE/=;*#S*L5TS_KO'XPRYO,>DDY9ZN/4K1/ MJ]4&2[%O1=M(LFF7\TG^H%I+ORRYV>*5'1XDJ N.E7QLL5&?8G,Z>/ND?K&: MO;$6]Z!^HI V7&OS)ZV MM6U-U]GVM[QU!$^*5]-VLS[G4_-V]:W,DN&%;,?V#'SJ34[+]NS\4>O^"$W= M_W3<@I93\.$'KVFY"=1^VMIW"J(6R=3W]^L/=6T( M]G_XEN]DN/O[NDEG 9+DLN++S>HZF/\CF<=C4'MQ#<]JKY34++?ZK%!V6=6' M0TV73WU6A(-,ZO-/3'S9O$/6KDME]6WU>XNY+1<5=65 !!8XX#'DB0JM\KB M.6-(JCF.\PB+(#9KY^N/5=]QU1;H_4DQZEQR?/\T6UTRF9 M_.9ZC]R_G= M^(.28 8Z&=[ ?;:VGE_[@GNVPIU=@>M3O"Z3^!MO M'Y4+%;*JS\=G0;IYR3/,T(C#DN?3_44X@3H,42K=?9"DC M21:'=GG%IJQH.1-G6<9-5X05^$,QQA<,B&4-UO@'6))%>=_P8YE<;#P#FIMA MGUJ])O%XUL"']U@9W>.ZSS^V58KC;&1C-EXE-]E669:JMO^2M(/U M_"P(P4 2YB&LA_:*_;YVEX3Y;: M$NTNV@V6N0M*T5C)KQ?5S"!/I+19U2^(:["V7R^V;:M(W4DV6[V'Y1EON/Z'#!'(@G_G=%.7ZY+O$N"+D%+"8PJ9ZD2&XC"' M.!8*F=/SC2A)GW MV1,%>ZH>*@HTA'-T5#!$:=+3 V1CS?\.J^8!^K;2[(*+UY6Y^OA5W^,=7N0BI"X[UNB[)IK']N^57W*P;"0YI$;,8!G&> M0Q2E*2RRA,,\$$F!\Q@506Q2>'9!DM,@A8*2""(J!"R2-(G<1XZ0\QS8=-;#8,V#FR@:4I.>EW(ANYH!Z-'=;#"]HC^/".?(6 M X0F=03C A_;N,8;YC7/JKRV.8SXA2_O:_STH IMF^I?$@N1Q%Q AG$($0L* MB)$,9>(T+U@1,DHIT:V!ODC%L]'VR1D70E]6S;"].A/8S%1-9#6JCAZ5Y8IJ MZOYIZ_&'+?4?;L+&Z__!#[2#Y:HZ** M#7D"4\DPNG"B%6' , MTZ;3!F,X1,AH)W%,P?/>H(7Q6&ZI MZ1-8S_3_2B&=%?(ZUAC+X3\<.8B.:! M]B4Q7(7.)^-/&PQ?$N\DO+WXH/G9VK?-@HFI]N MJ;QJZ],C4<<:GQX_;GU=O 7SO5-'NX97Q0?O3G5-O.CP6([KV;;,&%\8'VI@ M/*:]5GA#N].5&_S><.+VMOBLD-?<%!\../4M\5EQSMP0GW_.$F254E7QO9)C M\O)9#?B%KW>8JSP4(>4)1+0YM2DP+ (<0?FC%!IK'0LXAN#E0_+N:LW(-U/V>#S19#>%=@]L9T=;!+C&A)C:TR#SUBNU+?O/IU+=-CF0GR3.[Z/RUH%8?,P"1%+!):[ M6,$A"L,9F%L!%IK0-OW.BXYN9 ,U$\< K\KED#'D^8-J8VF M-5=>/_HS7(C=JLY\!397@JL%V8#RM.NSN4I.EFN+(6PJLND#9YO%%E+L!/BB M+?QH;=/5CV[MRWO.RC!KG'.$>9-5Z/5YE(J(5JPFPY*4(;/.T% M3Q*3 FVOTSWL--_6))KY6*_SUYVA )WD^ZFGU*2 _ZU,K5VMH*2W6> :L(.& ML H8X'DW:;@W:5L0FNY+>.J^!-Q^ FUR^5I] BT V;)]S1E^P!3*'@8C\,K! MA,@&4VCR$"9A$HIN;M)VB;^4LICF.8)!$"00(2H@3GD!4QZ$><88RRF[YBIM MHMQH%0]W11Z[*[3_N.X*S3 WVH7@UUZB>4DY2%"<19ED)$<@SS**$("71*RZ19?N-KU2#MO;3*ZKYMU=ND M6\YC$8'T6M+[.0W#@.XOB M@QTOJV, >$/,=P/EZEFJ:UU9-BA5)U$]+IJ%N>,#M(QT;<+;H\K+:(7FZ.KF M"G %EVY >5K\H. MM"2##>JJ5%C;#J_M:!')E3]A$5&0P*J:4/XG132EI$BR)$T-(($G8]SS+KA' M#]"V<:#*!V]QT#63P">?2YT+H;B/DYS?Y"3@!E<9-XZ5>QX*ZA5M7.1I8'4$?&W7O]UW[O[+W2?2NE=H+ MI;8Y(/A))5KR'_CQ265A/LG?KY>/VYNG&FRJSI^IH3MGES+1XC@T]._HD?7$*>K2ZQV M#&W[/*X^56W4]=]_Y]O=-"YDYHS*H2;""-F6)JDFDY&WBF=7<#[[9^7(?^:Q&0I]=<+.3J6EVW>U# MMW*!3K#=4VUC,,?]OR:?$I<]P:9C?OH^89-/S-G>8=-S80EH4,KHCG\NGSG[ M)"/8ZKXD"WZS6O'UZN91@>O];\-]AU&B.LK?_;&->0F3=OV8$-/V#/$&@X MFC6H0;1QQ3W>9D"Q!21?#O$4KE&+*Z0%*QZFQ6"X1DTGZ Q7#6;10%JYQKO' M^_?EBGXN*_YIS1_',+,NON?/)!IRX*Y\5&?C[W>YH2OPNR(.&NJ.JI\');/K MKWQVQ.G:+ \)=-!M>?!!RPW=+LM276!74NTO7;7C48JS.@>(F6HZ$2@'N=+C4W/QXT9+AM&52.24*^ M^3;#4'A7&P1=LM.&]H;*. G*3=]_I<.A7^23:[WS YYG'&'I?RA*"QF$9S', M(\X@"SD)LH@7A(63G@SI\^[9HS6,O)5#(8,9G>A$R,\\O>)Q4"O0G_,LR'PR MWLI!D 'G?ZY3(/,I<7X$9,'"E8"6OW*LMBN*D8\U_^>&5_3E_?(1E]4TC8$"]#1H.89 MCUN]F#ED2Y78(V"."^D:"7. XNL@8HZKX"(RIL:KEG5]CT^+Y0OG7;?WTP8- M@[ J2;,S']+&F[32LYU27%8 J@KJ:M:P%%ZTQ8%ZHI_4AVH_:+;7G&_ M537'B_)_.?NOY8*5U?TOTM,HH+;;JE?=49(!I&>53 %&4R MAL!Q FB5/XMR\(@0J((C)R&+T8]^QI55;S9L0CN)7,K('<]Y;YT1FUC;-N_ M>IL^/?_U%B;%S.W=OOO459[U^\[>/.-RH8Z%H%C6\#M6J7)[&4 G!%!2['K6 M$2Z?Y>"&_7W33N06XU#R[[]+G2L->VY?=S6;;Z*OG2MEZS:\- M]^8\4#VT1 *#5.'"%E1N!C%E$/&4$SF[K^\..IK)OMYGL9S.N"VY][UWN: M[9884-3T(>S/RCEL/RY$-#.ANQHWX5R_!$=78J.TC2&QK+(VS@XX6=+&D#C] MG(W!YRQJ#&5P0U6US3U7T8TJ./FR40@;[_"3\GFWXF>NNJKANFK*'/\F-U;R MW[\]/?'Z<_E8KN=9GD91*/>BO$A3B%@:0YSE"+(,(1(PP4FFU;_7"3>>37?/ M7@-2US X [1E3OV(\*:38<-?4^7[W'(X QO%(U@H)@U*QZZ>G6'W,+G.S7Q) M3]VW"DRW*8=JF9N!CCWUFX9!T'(()(O@;UNM-UR"SU-KW: *;TKM6R(T/O#^ MUZON_A7'>PL 5<.QCAT O&[J\[C\D6H5(?]1@&:L#D+RS)"*F:9"L$DP5%5X3Z641HXH MG;1D49U=\^9<4&G*5=F=JUD>K*6[FLAT!7*N]'%0]>9L4$_92I=NJ9O_=-RT M9PWAG&5R$>4!ARS,8HB0D!OD-$X@1B+$<8BR)'";CF3 G.\,2E4JV\&[XC8W M9>L].AM6F4C*S'4+\+W,D-[&];7T;K;0.BBD;Q.V.X:[S*$)$X,LU#A5YH\) M:V\KM<="J<:Y.S8T[/SSUUKU&E^_?)6?_A9.[4G1^\+7\S@5/(XSN8LAA$(4 MYCG,"U1 6F1%C((\HR@P\;=#Q'QO4CK23:C#MW2;]EQF[G)088*$J$")@$5. M0X@XQ9!(VX %2R/!?/O";+J576)ZH?Y#;-Z#\OJWNX:,JPVA(;/NYJPK @SE(48,I)PB"(1PKSI>I0EH5!92R0S M*]#1(.H[M&Q9 #L>0(\)O=(R>WUJ!HR.M608"%ZO(//8SD!B5S&;#LEI8S$# M)9S$6";OVL9.7/"ZYJS9G#41V^IFLWY8UNHB?9[D:WXET#\-H0G.=Q MF!"P$ 6'.,QQD. LS\-LBW&K:?NC1,VR&O:DM;]W9X"V&@K4 MM'PW2K&S_HYVTU5X3UUIIJ7?>@6'+D!;6%=N8)S@M*Y 6P$G[D#_3=L\BQO6 M0B":9UGTW_2\AF])6658'$@X;)_7"V=FB^>R*_1DM;>GP0J#C!2AF MP//JKV"?,Z=O9UH:&K<\U\HQLT5MO8#?G2):F$IN9;):!"8S8A-Q^V9M])YM M*R%:<[G(ON?MGY^J&TH5^/#J&Z>\?%8WSW-!$I$6"$,14ADE$Q3!7"013%.> M,T%)GH2I692L0]9[G+PEJ=(H.IIF\;&6\O0B9&<*L>R]U%(%/VWI_T5EI>P4 M]&U<018]E_0E=M9M28/DQ'V6])5PVF')X%TS[\!X.?]0K@?@M#\V;JGK M>8-190U[ )>Q(AUQ=L:KO;SEK"( MJW>+Y8K?+7^MGDJ%B=> 6>E&ZI='\+W7;5M?-Y35HG-7/C:E*K]^^?JI#YVH M'YX/*&,\*'>C!S-#U%5!AS#G$CAR4%)[],CSPTX+(3DHV@F.Y/#3E@7T3UQ5 M.:@KK5W!6"[2!$=Q %D>J,03$D.2IC%,8XZ3/.6%2)%)R>09&D8&:UXXV>T* ME<;!LJ6^K$QKT\]H1B]0OE)>,\/<$3LLJW-8PGU9&E?5UV8#3-"W2"))((=B((H D%!%D MB4!!DB-,MCLW'9M=YFPI1Q 4/840B=6A6A+ ($89%DHHT M3**"YEH="5]5"L^NJN,=T(YYL-[S"_".84? -W[G6S-\>>NS:!@@-9WE#N0Y M#)5F8#O'6]% 3[8F4[K41WY$RI M#-^V[B>&*UKBQ;XCY\V/0W @O)D'L)';II?7D%3NNG6=I3)U/ZXA M4<]TW!I\W+*D:BT73376K=@1^-HY]MT6A["4"A3GD'!UZRO2!.8D)C 4@LM? M"!1BHRVM#E'/1KQC0:U>^R][RX7.SL)>GWH&[EI+9M;N0$'F)54&$KLJJ=(A M.6U)E8$23DJJ3-XUOVW^G_I#Q3XJ[/E;\>&?ZY>;/VJV^J6NUNQ3]>ZY9O]3 MWV[6*U;=R]W-;]7S:LU^Y0K)1/^#!GE?&47;=!QT ME[C;=D,R2GZW?.:JZJCI=+E^P&L@]VU L;[&+2R0VE3\UJ ]#]0@N5/_^.WW M%)HW\S]^E0Y^;_EW=*5^K?JL+MRMB4YV'7^M6OJ7]5>/9>[N/OS@=+,NG_D[ MZ57OE_5+$YUK^K*S+_M.:]O2!%NB_Z'O7 /J-MS\7 \LUDW6 MK0 ]OL< QB:9*P.4S]>=,SO:.S-D37^:'<3:]$!V.O1-?SH[P./T2.:: MXW3^615[;)L];5/)YP'G 65Y"N.8!A#1.(68XQ2**",BB@EE&3(_4S]/S//Z MMBU($"T+8-&4)BWV[:ULCM5%0A-75(X)?%I'.?J&>?5DYQ(^EBN* M%^HL\D/%&D .@HA(2)K" &'5,(I&$!=1 :EP6P/1F/ MX\EQ'+_KKWRS6FT>VU[L'WX\<=JN=H_A/ TSC&*!8!1F'"*<"(CS,(,\$B@@ M28 9-P(.],>J]Q/GEI:,T@4'/UFCV_N9)KT@X&TH?_(#JMZ]6H__&=A-J1+! M,12^5RV[!,;WP^CT,/E>%7X6--\O1>L#E'(MMVW/G'VJUI*;DBQXBY3^*_[[ MLGZWP*O5%_S(WR\?<5G-HTRP(LXC&.5Q!E$J8D@P2N7>*T%A&. XPJ9YBB;T M_> ***?![RY9Y=J.1TK5/9'RITOB0QK$6;0YO M;'3A[CS'B/K41SPVJCESZF,UC$6NP3:EX5/U??/X6+\H%[I:5W=D\7%9WSPM MR.)_:K-L*H,A/7N)@.N7PVCG M3A^[RU3)P^[(HW[-W)!?U3I.D[+0F%W*A0&=Z1(QS(4_2,^P>'WBAG#MA[9/ M3U\U97%W#[BZ;6.Z+\LN_>Z_>7G_(/^\>>8UON?-IZN^W%T@^&VY4&*I4><\ MSC IB@2*D(<0T3"'>=O2S[/OG?+"@0=,Q<M[O% MB7K3>?I8#+;\;X?K-WU.T"T?/9E!6_V]EE*#V^VQP4[P&=B*/O+%>:D@>)L3 M^]H]^SQ)]^=H^^=W:IUU#O3,YI7E82V,'LEXAG&:R0689Q!%!868I!R&/$XB M]8NHL"L$FP)P<%_1- :GIZ,*S87&6D!#/Z\MFWU1UAA$X%7E5Q,"!0X+=K&D MR@DPH#)I:GF@[Y85:ZHPN],E3 *!1(HA"7,N+3T3D$@- M0)(E2422B!99HEW(H$_7L\GO&>D*]&8'"=0[9@SRWPUT.NP2/&K*S#?H*FG\ M[.TJ;1E4 ?C1FEUV_]6?F%F:OKGH@^GW!L--EU9O+N-!NKS%ZW;!TP>%-K&^ M%1]^T >UF?HF [/;ZAU>/:C_J>W3,U[PI@V"W$.5ZO)8_>*F8H<_Z#TI7?]B MHXJ#WW?03[_4R\V3?$,A02\KN3IL.+O=81W/\S@7(9?[GY#P&*(PR2!.<@+S M*"]P$HYFZ)]27V$/\H8XLUN+WW?M>[NF9/A'MWWZF5=< ME.LYRY*8A@6!N$F0)9& >4@%#%(2XB3D!>-&"^4(/<^KV)8Z6.,?IE5H8YK2 M6S0B=^<7DC3H:(.?.NH.SS(TY73D$,>H3>JM-$4_=B6ZK]G9^1Z8 M=G6W_,:5*.6"[[H1*B3)NZ7R1%_KY7/)./OYY;>58F;7TN&&KLOGIGIS!W^& M"U1@2C)8$!9!Q% "X;EWVB$PSA.J13)Q#GX8-)W1M2>905G76^95N>DW9FI M^KGZ5Q,6/W61.D M?NU-T4^*93F/?P$[KD'']HN7>V^?6G7D;+VP.*F']JGD8[?NE9;=6B")GR/8 M 0V>=0DH((AE>0:SK#GF3A D&>*0YPG*49*E149,/+TY"_YSZ5O*/5]LYHHM MM*KG:/WJRLR-#CC(O0:W#G)\C^_%A=KKRY&#M&!@4O=GKZ!CYW;%2!.GM':I M-TV*C=QBMW NH_DW-RVOG2]JR?V? M(Q_TNJEQEN]Y)1MV"Z%:=K<) "DC..0)+&B60A1R#'& U@$!2<)QBF-C?I? M[H?VO'PH0F8NOR>UGC>VD\4B)G977W69=4?.I#?PI'9^*M"Q"9YYXHH"3+GS M7GWX01?WTMZ^/=4*7_JXX,JR#E-[9-^7\@<8ZKV3!@7^L-UYM34:_3)!)Y67 M^MH=ME3_BC6\^;;3Z?J!3UAV::RGZZHO]V)W."G'>V_V"6"#BO#*/O3F5+L4CZEOY2_ M;:_*'E2;V2%=/=5+MJ'KOSK+_]02?B3I\UV'"K%S.U=!CK>4_>,=7PJID^XXQZUUT<\/A5="_3XS&N6Q7#U/:[*_VT6 M@W?+:K5.MU,708KG:U/R._UC_+(7]QSP5898F M.8-9GLE **<($AHKH(@PSE$8Y&%@5C[GF$'/WN5GO"I7;3/>/6^&17>NIT3/ M ;VFHLT\5I_3&3C@MP]Z=-5#:%K]J:M M.O2DW),Z15]T[+SU;Y5*4KN7''%VAW]TZ86K>9AG."\XAG% (HAB^;=:6JH6'FU-.$T$4[&E88!E)$2QW7#B%-!,B$PFB"3.* MI)QPY3LE5_((MTR"97L[I\K6&AZ!FF] \8)N%KO5O7E:_FZ;O0"VV0M-7H*, MQ7K=1U7J0OMCPWP%-S.JYX$FGRK-5;ZM$YZF3;!UJ<:3C%JG@YM?,-XL%C?L[W=+1<7L O'T3=^N<+$ M1Q4*_4LJ_6N_,S*/7^M=)ZZA1QF6U/%%W&7)K"[:S@PWV47:95'Z%V4#3YFW MUKF14\34-'U\_)^E>\[OZU;[*PK2/@,<8:!^K;)?6?$P;D%^KKI,@_.H!+1)H9 A/U6GI/;\5=[B^ MY^NV4^\[_*18N14_\Z;HY*'DSYR]ERQ4]R<]?%>_/3WQ^G/Y6*[G42!(R!"# MJ,BEXPQS @N1)E"D(LMY)*(BT$(W\,*=9V>Z9U=MKM<-PS- 6V;5CPAOR^%: M?@%K&#[7L7X&-HIIL%!<&^2V.)_.83_[ZI-DYGM[\W,K0,MKU]!

    ^TTR1_ MTS ,MAR#EN4S_<[E-#5L@\^O/4T&.4NO.5UV24ZO-&UFV5"^U#J8/N6@7WVD+;72V-2B8U?'6^1$G.^$:%*A_R#7\H&^LA3E'"<=1 M1"#&@D"4R;\5>'W21L:Y8T#[V_VR!;_9M%@! M7=+D-& +SD$6_-FX8W"%UT!4<+R[-B#\1A$4+NV?+48P7\8_52LY>"W]VM?E MHJ1R,$F/WK#ETYJSYOA9/H#DQ;;*N887STR>(';4'[L83^2^9F_2O'*B'P MYD>YTC7@WBN>3;6CI(EC=RS.N+592F)F5QT1\+LBX\A>SC!N91G]<2:S@3/, M][_V<[^V!/BA#])GJ=WN>3R&!G*F0US8AD)-J>T^51U%G*61ND$.U85RS I8 M;.]=.C%X]/ MJW0S[V"LXZZ7%_!2(^!.4Z[ :JYG:%K\&6<*/(&4<3>R957F[O:M;77>NFEV M6WU3UW7J +&I-=H;)X]PAI(PA"1,D@-1V'#N_=82>U=Z#=%YT=;M/QE=$Z3PJ$(M0(& H"(8("PY)' H892B/ M":,<@C2TCNWW'"O1XF36^G[IS M]%9*<.3ES6A/ZN*MU'+LW^T&L80N7*[6M^*7Y9*M;BKVG=?/)>6K[\L%FX=Y MRBF*$8RSL("(%"'$11K J"@(P2&* EH801E>).79;2O"RBQJ_LRK 1Q34P7I MN0LW8AM>7G42?VUQ>YH3Z(XR4)0= B..2N<**/$RH6F!$T<%/@%2''_CVN.Y MX[*JQC,T7:J:4LJC0Y^$\SQ7R#\QD=$9BF1T1G@>0DY#GN0D"+ PJD.UY&/" M[>6Y:L4V_E"6T7%G>_AFIGS3$S=O*C4\9C/5YD3';%;J<7ZV9L;%*QVH6:GJ M\BF:W7"OTVG@PP]>TW*E6&JCJ7F:IR*G!,$41T0&-UD(B8QJ8)[E <(I"EEJ MA-/LG$//WK$E"_B>K/TFR_WL:#K)U]2Y_2W%M?C]/;9GW:;O[4#S7]3I&P'? M/^7O3P6O?U&]K@'T+Q.R].#\7I%H49I52I59.=ZEUSU:;$L1[$AZJ9P;D\N5 MU5PB,^W'/R+LR3<\]KPE0N+Z@=?**FK^( VC?.9M][?+571[+(,O?*WJ 7ZT M^?WRO5JA.+[G[9^[CSH(\@B%60"C'.<0T93 7& $HX(G:2%RE@5& *O^6?8< M;JBLXTTE*2X:5*Q[7%9-F_JR>N9;E @5?NSX-T18]#^E>G[J;4V4F<>[??=I M!K2*C'^1TP=^4MT2_S(#6,COH0?WT6P"%>R9#W\YG7Y=H3+Z9WA:G,;))N $ MN7$ZRM:HV^6:?Y:,20IK:5FE9*J]HOVX66\:L".YCK78DUT_Z9U[R9( A8)1 MA;);0"27#YBG5"X;8<)8GD0%2YDA)+X80N*J^=);#J::!3-'_PH38 ,K?K7FW&&.V[,R-2#YU4H[@U9^_9CF M:?5?GY^.#LXUD^M/7O3LS>3>&3RO#FK%]S#!,]..3J=B#SN:JR4V\QQGA/5Q MS#\HE56>_NEHDV7K7Q2DG[-_^2%STY%QT/VRXJJ]^3.O7]YO^-WR;^5RT4$P M_I>,F=XIU,7ZY3/^X^9QK6M9IN/Z#B-:=L"6'\ V7"$-[EA25U6**=!Q!21; MHR"EUVMSW&!]*M(P$O"B0R,[MU6&E1LP)C:9E[!50]^)6(\Q\:5 M-W\K5__X6'.YIY.N@*_6WQ3P ^4*,P\C6(2JF6HJ I@G(8$XQRC@04(+;I2! MY)UCSRY/D81"T@1E1Q34VO@:TTV;Y]L['Y,Q^6W>/F!1*C\5)B*!HC ,M4I(1REY]MXM[>9H_)#ZV"6^H;Z& MW:]3+9BY36L%&.$<:PEGA7L\//)D.,A: O9QD?5>L.JARS:4[SS%ZE=<_X.O MWRTK5BH"'38]RG!*TR"'-,@2&<4E%))$,$B9C.#2D-*$:Z6;ZI/T;,A['KK. MU#/0L@%V?&C>7QIH<=BJ_>C&S+PUU&+7=%='/4:M=QVKR0Z;4D-=SMKM&@@\ MTG179Z0I6^\:2';4@-?DS=?)6NV5^AR5!'796?QK75(^%TE!X@(3R .,(8H$ M@46<(>EJ>1A$>10E*)BW\,#?U[A>>]XLFW%O8FC',AAFNQ[4%,X X?=EI5*8 M <&+YBQ;9<"RY6*!ZY6"4VZS82=.AM6==%KD*>>(0)JFA9SJ-(=8]1H@(>&A MH)0R''>3_J%B?_(IWTIPW83SMICTSSC;GH]4_,W?Y @-'*_83<%K'[(8&'( M5[H>[+AIZMCV_+BY%[RD/+LK00=Z"!$P7*I[H[+6CP#U#?XX [T2! MSF*WTY%M85D>'SM(PJ^XOJV_K[&,_YIKN&V]]9SE-"$9YW(B\Q0B6G"8QR2" M<1!F68YHP,R@535H>G:5+0=@I5B8@2=<@^?FAMS%3EU'HWJ^SK&>S)Q9IZ+O MK8HD??E9@9:#+IU@!\K@$N1%6V)G:"_C%">&?=%6P2G^B_ZK5WN+%B3JTVJU MX6R>!")A"*H@^G4F]0MF0M 6>Z,^H/):AGQ.U 'C/?NXG<&VE6MW^ =?R5T;+Y]5 M[O>/0N]6FC32^]&WH8>V!.<@7>;NN8N3D>T!'-DH>=I3&J?@V(>6^?PPW:V MV> 7E<_].M)MT5_(1$32 D$A4@)1F"&(!4L:J-L\RH(H9MC$0"^3\IV*)@2G M#4(@ZUCHE=YK=@O1T)>>Q;K1@IG9;FD>E+IOM5)U:&:G.&=>2AW'Y7=DW0.$ M)C7Q<8&/[5SC#8OTM??\2:Y09;NWKUB_D/'GEU_X\K[&3P\E_<;OY4^.RO)" MEF*117*9QBF'J! RM&89A3F2F_&<\!#KE29[%^?RP;DX:!$F+R M/:>@9=4@R^N:N1AV,U-JV- )]15Z$YT,I@:MXUXT^7L.= "P=I?"[&>YWDOE_D@^O5IZJ%)/FE7JY6<\Q0E&:! MW F<081(1DL$EQ 4?"$IC2(>9A,"4IYAD?/ZTU#\9KC'1_3XOD*S(VR)[X3 MZR5:M8PK^*Z6=?43R?P;N"@;U^QKWYP-36*4*0F4L_6G,S,_>J"N$T7UD&!DY.X#"-U.#XZ\GB'Q21V: MG6*.?97E*.ZZK?;]WX?'I\7RA?/V)E%^D _RB:_R!"+ M+!4IY#*,A"@.,T@81Y!EB$9K_78U5$8&,L$V:U!^^Y=DI=\3ZNT^#GO5' @Y[O^MD,W-69\1RVL7^O!Q6 M>?%'0TV6^GY>A'YV^X4GK!,O#J!_/U4WE-8;A6VYNTF6%MOD&P1!QK,P#F&: MR4@)11F"!*4I9"Q,69*$&*=&G4P-:$^8I&&$TX0.4\G=I7EH4YXZ^<-4)6=20HR'L%A3EVN\:!;YA^5"OO)M M71E4R9U_V_<:JXB"'E7PC:\W=65<^79!=HUE]VJQ#9=?2XG-UN!!H>S6XO-# M3KG4#'&* =9V"]9P;@'3=N MNJ]<.6%Z\] >Y7YR*2 M?_\=5]SHUW.7E2N9?!.=5=PH6K>;BB-JYA'5)\F$?'*_V_NL68(Z_++//4-# M$YS9Y*\<5XSJB6@5:PP,.UF\,2Y:/^;0>-H<@;1++'WY\(,^J%G\@A_Y7+ D M9$'&H0P- HBR((*X*(@,(# 5*,EB$F@= %PBX/NFHR,)MC2!(JJ/,GI6)\.V MZ$)2P_L ,R&-D$2')+$"$#T[X&2XH4/B].%"!Y_SE"RW&DGZD$N2X*5J-[/+ M_!C$RTHY$9Q&%"*,,$2!P+! .86$V\'(:_;>5!^AI3*V'9=-U4-??BW;](_2WG4\W,D"A&0.()!'B<0$56" M2(H4Q@4)24H(IL$T*>*FG'M>T?HMR=JF#P6MJP)$"R0G0_?HE)3F6K^(HI)R^M(XA<>8,3>V3F0,[0PM?U=+H(TK[Y32L6?Y<&/JHDDJ MPC!/,&)986I\YQ*1#,>($D92D458$A@)VZ.RGL.UC0:!Z>_@L:M[\624:'=YCM@<=\GL0=INA_:%3%H(.D+K000W[Z.2'<#6EX[#;%3] M,T(O@-&=15L0F1-*E)>-.0)M_J[K'R_\NEGWI8AL"Y4??]W[.KEL=FD#C1FF M)HFDK%_,_'M=-0 RV"DCC)_9.L /F^7LH(^7J(*5,3^/ES,0IG((J.@ MDL$G)7D>IZ]R ]D+!G*R3EK(+I!Q@ALV/K>0-S*]I-L:1>:*DW12SKRTHC&X M!\R@T1?@KO+KNE[=R_JQN5/WM=">>WM7T=);GF[!\T#\JH.$>DE702N]I=<= M$G[L_>492XR[3#=&@(U**_R.;[?;89WD.\\T.YO['(.5IQ02LO M^-E)!);O\-9#=C' >[ [;+("F1P<.?BVAZ/ PYN:L\8MOHV]'_9XES=Q0]H4 M"S N]O:5#AU'+ ]YRE&:<*X7-G&"&$T$2D+"\]AD\K!+/7I:A&]BZD;@6RH; M'=K%QY51FI@Q*)P)S3O-;!?HIQ"/[X^<0 <-L!&, <_ MC7A'"Y(1<)-6(Z?:G&TI,@)JN X9>W1BZ1K:_+HJA?G/4")>Z,KLRUZMKVE= M_]9.MW7)BX*I1,:$("D4TRL*F2,:,OUG)DB>Y)RP. (5LK&1ZGF\&N'M;3YN M/LBM&L!Z-E8&M/.-SLT"&\VO%FD_;#5P6.<& M!5U1LKF?/6P(&8X: B#NCE MN?FTS^9TX4Y=";$TK_2WTYNKY_6OJE[^)\4B5(I&&:$HH;D.FF.>H8)CC,(B M9H2$210K6/CL3U?/,U"G@-G2ZU(M!_2%+E=M$C15U6VEK99/^_1W /J"8L$6PCN@9]C;^=+L# M-_PQR MAKW)W3%A[46^N2ABSTF0*<4DH@S1C&4H(1E'1,H4)6$6)8G*!<>P*')?@N^( M<5 +<'+10RM^AA.$P.!O ,XA!V,4B?O:AG.R,4;AG:EGZ(2),7G\'Q+@34:* M^U^T)\@W_\IF;;)V=9>W=-C&BR*1#+$L-T.6Z&%<$(E"QFB<*D8*3A:E?#"U M5>]GB-Z ^EL-'-(-G ,4]OLA6F:]Y%T^VQ5]:BY22@/:M9[C-A\]=:D@[O " M5)^D?ZWA;._X=HBVUWO?050WL1)!U?XSXKV)G>$L^)LJ?YJ/NMHL:[]4 M]0^Z&E01O)%LO?UKD6,JI8@XBFFJ \18*$1)K!"/5!(*)DB(V>)%UJRR=2^V MHB&3SE ! (W'T)_;M?VVTB?,'UB;,659)*A@2/"4F-J(2L?9.$8I5YR0)$\4 MBR%QM@\C3DF:09=UFSH>6,W8VFX13Z(4%Q21F.D0)RH(8E$4(Q*F(HG#3(FL M@-S0\V*WJ=?W'F?\ =H%%#[, PL(C)Q@6('V526DJAH9I=QY;BA<1Y[76NRL MGA-JC'W/!WX?GI+L<[EN?22OZJ>J;CUK>\A];6ZTU+^O*R$7LB"8$:I0;NAV M>F8-$<&Y.61,LS3.>!*GS#9#F84\SQ-LIT&PH\+'H%5"6RWH%0F,)O99S&S, M>'Z^\& ^CFH_B2.RV])LS)"C (9\D.,/ M3-VK[P:1W/6>_6\EPF%2I#%'*E?8[-L+Q+#(49H6D79RG(4J@^W;GY'F?0^_ MEQT($_Q-#87/&\QV<]^1&: ;_1L+[(6_7G;]+2 Z.P$X)VOFTP +V(T"'=3WXZEFTU]2Z-*7?M>J?E9)\O0C32*8$ M*T13QO2$06)42!RB5*1%EF*X=]MQP#E3:_9QGQ;W,=BJ'G1/F&[<^W+GA0Y2<*3/]/=&J=$O/F[^['/+\9E1^=L+@_!USC'EX 2U.N;SA[_Y6 M?_KT8?.-_H?IQC]]^!]02P,$% @ <8/_6LF8FIU2<0 UW,% !4 !P MOR(FYW60X?M25E5MBI"4 M%=:*D$925';-"\T7N,1.BE21O(I0__J!DW??Q,4/CU]U6T9*=Z'.P?(Y'(## M@7_Y;W]^FOWP!9>KZ6+^KW_A?V5_^0'G:9&G\P__^I??W[\$]Y?_]F__]$__ M\G\!_(^?WK[ZX?DBG7W"^?J'GY<8UIA_^&.Z_OC#^B/^\/?%\A_3+^&'-[.P M+HOE)X!_V_RSGQ>?ORZG'SZN?Q!,Z(N/7?QV^<\J9&6+=6!%2*!T00@9(VB7 MN',HE)#A__GPSUE;JXW-$*P0H)))$-$J4$KQR&1P@GY2'SJ;SO_QS_6/&%;X M [$W7VV^_=>_?%RO/__SCS_^\<?/HOYQ__\\[G M_Y";3W/O_8^;WUY^=#6][X/T6/[C__CUU;OT$3\%F,Y7ZS!/]06KZ3^O-C]\ MM4AAO9'Z-^GZX<%/U._@XF-0?P1<@.1__7.5__)O__3##UMQ+!C$+3F+4)7*C&3UC?_W]A_^>/7BSTM<$5HVC+ZB'YS_^_J6 XC /]OB\E_20W&V^>DDXW2R>>JSN%HO0UI/;%0Q"NY !%\( M5"Q 2"Q###X:%HO+)=_DN=*\(J(W:EAA^NN'Q9Y-R)Y_XL?/84D/@O1Q.KN4<5DN/K70U7K10');M1"Y M?_F!N"ZX7&)^M=7*@\QM.%N3.<7-)UMH_/\]"TMZXNSK6_R\6*XG&K,.#@,4 M)STHE :B]0@90U%":>.+::+\6R_>"0>B?QP<(\].(/$&E]-%?C'/SVD+G@2? M$N>T=PI&6Z!2%=->>-I/7>:&!,2U:@*(&Z_="0ZR?S@<+LM.P/!^&>:K:17\ M.:"3,2%*[\"'1(!F)D*4Q4).,9 /)2-7IS-?3 M]=>7TQG^=O8IXG*BO=$:$X,0JGN='0,O)0?/-&/*1ROY<=O%[3?NA +=+PJ. MDF 7VG^+'Z95"//U;^$33J1 GIWS()F09--T ,_1 85=(;A4N).Q 0)NOG4G M%)C>47"$)+M PB\4RB_)A&T$_X[DCS\OSN;KY=>?%QDG406>M%00<_5\"G(( MC"$X8WTFJ444QVT4.Q"Q$TYL[SAI)^Y4PJ6)W_]6HZ1SZ) MCJ+H; C?H6A05EB@@-K2IIF3I\@J*'9<*/+@JW<"A^\=',?*M"=@_$Q?OEZ^ M7_PQGSA3+JQ;NEKM@30<6! NT)$YNM M\?7RS7+Q93I/."F1L>!(O%FLUF'V_TT_;UPG)&4*DQT$IT@TZ#7XR"4D([U.I1#T&UJ.&^_>#1X= M)SP;B75D<%2K]VR)84.W)U%D9PM@U.1)&\?!Z810O!-%AY*RED?!X?K;=@- MQRG.@T4WLLKKR>CLSE9F#HV^B3]T+)(-)Q.:S; M;]Q-]1VG,H\2X-UNBN\X;7FX\#I9]"_^3!_#_ -N\JVJ9!^UY"",HH#7 MY011B00Y$P-2D"?+0I.%?_VMNV&@XY3DT:+L(ASX^6Q9Q;4]@:N0)AV*8 MXL9+=\-!]]G&PP79!0Y>?,+E!]KR_K9<_+'^^//BT^S"^K1)8XCR6WU^FQ= M[V_4R'KB5&11%P9,*4DN4.#D_40+6<=B5,JNV!8^Q&,T[ :2CK.3C<7\<__CE\G-BE?4 5P(CB*IAA%4\$5\"9E7[Q5&'4+G-Q\[6[0Z#AS M>;PPQSZOVH9*+Z>K%&;_B6%Y45KNE;8:A0&K*&PB'@+Y2IZ^C4(9+6TQ5V?- MAYU=/?#FW3#1<5*SB4@[J=:_8N(E_60U,4)Y:;,&]#F#RMR ]QDA9Y>YAXH$7[P:*CK.<+03:%2:V%U&V3*#)(B1!NU\P6.,J!2%(!3XQ9GDR)3+1 M$!777KT;+CI.<;81ZLC(>$8\+KQNMT0T'$&\W#A-=/ZO_QX1WBOZ ='7,B>KQ:S::XW[G\*LWJ5G$(L M7*]N4K[K)>V''M;JXO9.Q!YYF?ML!1]"^#S9U+U5;;\N+Z=S>MF45OUB>WWK M$DI).^EKJ:01MM1KOPY\R8*0I:7()NDB\)$55,(J;C1^_M+M,L+9>G7QDZOU MM ]=AYJ(BW<\6ZU(K)=E)9D7SVW("*7.03&,SX6 ME1R.F5N$C N=8S1[+TB.$7,'6/DYK#X^F^?ZUXO_.IM^"3-B9O5L_7-8+K]. MYQ_^(\S.<,+);_*2>>"YT%KBLEZ+)5>[I.12H,@\Z.;@[:V1^@9IV'&<#!J)OL.3@V7;!2XHJL7WX4^\!O-)M$X( M8QAH[!9B;.WWW$O(.)TVAD3*L=+N #)OEO@Y3/.+/S_C M?(7DMKU>?\3E#6%-4@PYU#H9$HF@54#A:#320!8V.0I$K8Z/=>0X!$ [D#5. MRX[AX-1:$QV ZR;QI9YU:!$!?63;*YY.) 2O963&<&'X8^7Q1\?NX_3N&-"C M.5BZAT-CL0ZS1G9G\1F7ZZ]O9H'$,<\U4OQL!N]YO>^9 \6& MD=SZF%QTT:8<6V<&'Z.GAXBJ2;*GF= [L"U_6RSR']/9;.)+TD:D #+P "K7 M$Q.*_*J*@XD^!NT>JY\_!"P7[^XA1FH"C(.$V0$(-EOD+R3S^8+G)*CGGA%2T!SC,H3E\%P3D4$8V+JHC0_%CJ<8IZB)N: *BAX#N T6O: M2D.]C_8*PPK?UI;QK\OOJ^VZF CO2K#. ";RSY50I?;@K+<8E15*%MTW[V$ MC-/_<"B_YR@Q=X"5+?T3EB6Y^*9 )H<>%$L.7.T+ZSS/) M=4FJ=RMN^>9R& MAX,53.PER [2+:^F(4YG&X^+XO[-)9:/BQD)?55S .NOEZ*)3I#_[C.49"/! M6B9PDD+!E))*S):LV&.S.@X!R*ZTC9N&&;Q<:Q 5=6!YKO%U._NIA$N:)2(] M(^VW.AOPE@E XZ3UB:-Y]&+SD6#KJJ1K&.T_#+%C5-$!J"Y.\]^$KS6>O$B" MFYB,X]I#V!0581(0[,;]#_6<)$76O,3K?DJZ =-1>GZ@A.((H7< G1>?/L\6 M7Q'?XJR6?-^5U<23C*+W'"3WM0&Z3A""1F!%\8 V>,U;9Y2_2=2XF]] @&JK MB@ZP12MD>7:#D8MSW&L_FJ!(Y!X* \XQ79,4"IPH!KC27%EDVN, 5NK;A(U[ MG#&L24 IDF,&D@VUW[8L$!W99I&,RI96DK6M4]B/ M4S3N&*\+%"5X,"QIS5O?:3O0 MBQKL%&0@X!PI[ ZR4P]8TFO95I:EL$4X0.D5J, J0]Y #,(Z(SA3S8OCOTE4 M-R[Y< F#MHKIP##=:V2OGT&C"M)E8J*$.EU5BUK_8H%K)JT.RF7[6+_69AO= MGB@[A5,^',I:*J4#C#T_?^UE??@U(=9RF2",M\6PFB4IM)UP[9N).H6??I*SF+V$W8&[_HA$A)7W( ^/!:I9.@J)&JNC ^+RY>.^&I6V/ "6D-D8BE,*P7K]4$ L:X#E[=$2_ M?W2 ZX$7SVZ3,7:;F#8:OGO;["AQ=X"8:PU9S^DWR: B*8BDZW;+=)T(@8") M_K$-SNI'!R\=U.#C%@UCUZ@,@I6C!-T!4)[EO"G3";,W84H1P,_A\Y3VPFML M34Q!IS2Y9D4S6X>)A&W_7JLT=ZF:8]>ZV/;;5(T;^@\$IL;*Z !>;W$=IG/, M+\)R/IU_6#U+Z>S3V>9$FZ+.:9I2=)FBQ6 M8*Z3K2*KQ1)UP40FA(TN9M$Z M)OLV5>-&_0/!J[$R.H#7-0XVH6;M4[_$CSA?3;_@-IWQ:K&J28S7Y7WX"ABR1V N6@_,H@2NI)>H<;'ZL&>N!U07[D#AN4F HNS:@FCI X5VI3:*) M2E)P"C[75J6U0"?&.J.-Y^@"%T@V>_!8;]Q,P4!8.E+8':0(OA7\3D).R6E! MXLFN#DS0")&A("-A_0:FY212K2OZ#A) ME^+9;/%'%?;+Q?+YXBRNR]GL;O.XBTH+9VBO=IH#MTZ3$**$4'P S3"5R+W@ MK'G7OGT('#MYU1A'=[RNP935@<]U,T='J_[UZ[:2K9V?KCXOE]']A MGG!C-6>HP+"(M? #1Y!AI3BCD."[;;%(V=)#LIR(Y21Z?@^F6U.B-. MR'7E6(4D+-9;1-*0D)@$1)DP5-L<3@&L+35CI\9& -4!:N@44-?G\D5KBU$A M@W=U+I]#!\%J#SP8HQW/J/@ K2L?(VGLY-<(T#I4(1W@Z]JQQ(,;O+'D:,H@ M0$@7:Y6/@*@<@ZBUM RU9;IUPG4'LL9.C V,L]:*Z0MK=_9Y)JSP0G(PAA,K MEJ3DR*T$5VPL')-WHK4=>X2<<0MK3HFMHQ31(Z;.MWD4PF=G"Y220FTD7 8!)6L1Q\Z[3% Z2,FW4]/98.4$"/.+J^I]/'$^W; E+(]9*VJ*<4K-X& M"5*K4ERTK1.!1\^;'JS5T.D1=:@JGL3XP$MQKA;EGB/58Y/XWWI\^TS^7@PU M2N=O'WWYYDL8DEO$K7,*:(Z3"*RFU+]W:F\QQL78<+NX'V6!*Z@"'/R]6Y![4INN;8WA+$;PB7AB=<0'\XC)M6[=\3 UXQ[@-$55(Y%W )Z_ M+1>KU9OEHDS7$Z>9U5P(""J31$3P$+7(X#=M(3@2'ZT["5U[_;A'+TWA<:A0 M.RBUNKRC?SXYZ$H@T6N"=)+@33T<*IZ +>@/;I1$8;/TJ7DGX(>(&=>4#.$, MM9%[!P;E'+3:#A2Z8$8G+(&H"/K&:YJ"O M@D0&27*-HD0E;>LSDD<)&M<<#8.E=AKH $Y_PSG):$:\/,N?IO-IE<]Z^@4O MV+$N6X&\5CID\OBM)=\?R7.S+.F2"S#U_%V;XNOQTMIK.*8B.W^)GCAYIX?=^^^^:%D"92[*:A54W$+S:AZB]S(@]79->-JA7&=<));5GJ%8-H60;# MBN:TG6>=6T^X&Y"=<7?/(9#,LB26>MZDWL)&?>TI8V.OP&<_07>(6J>3V=GZWH3T+*D M1'9@=;W;K%.&8(T%%U*,OMC@RM FYYR4<<]63H*<0X3> 7;^CG7@,>9G7R@$ M^("_G7V*N'Q=[I01G[/W?+I*L\7JC&*$&@M<&6]FG"'90AO)Q*\.'V M'T.@3PO'6P)=4I'>>@^'UY-/RNO#K<55FF"T* MQ73KMJ![$3CN3CL&@@X$\?[J[!>KY^*\>X.C$"^NQ *RU/@8F:R#"!"L2<%B M1N&;[^-[DCCN_MXO7INHM /$WG,KY:)KX=4%II"%8*: 3T@>5;:" G6FZP1U M%2F(CRZW1ND.9.UF2=E3VN!;*Z-O?$VXUAZ3J'WM.((R=9(43P%$UDR+0F+$ M >XY/T3.N#MS<]7O#JV]]/#D[A%N+/3-UH\W6#GN&N$]3Q_V%N&WV&G?$_"1 M[I2,Z\(E6BC>LGHRE&O/!5,O4^BL)6U^I?7(AIT(.[[_[?E+WM>&O$1;NML ]6-X=;'&7U&\E4BWM M8EY7Z[,_IZL)=^AR*77<#Q,4P3 #+E$88X.1,8J(P;:^E_$H09U@Z0!-/P2: MH\7> 89N\?!\\2E,YQ/G10J.>2C%T,;L*03V$C-Q8DLTCJN"K7-O]Q+2"6:. M5_3M3._14N\ .M=:1/R*-3@E4RQY826!$SF!4KR0*:Z'\,Y$DR++,K:N'+M# MQ,@G2L/ WDW0%J=IB98VIFX M<8N@!S!,@VBE [A=>HVO:.ELC@,FIM!^S6B+YH%B#*6H;,I%J-; M5X#>I:*3/ND-XZ_#!-P!1 C>RSJ&_CEN__YE?C>_\78QF[U<+/\(RSPQ/I9B MBP1IQ.:2-@,7O07M,$GAAPD4#L0$7>+B@=33P?H>[RUGV:<*>.@ M8&WH9VP!E^L,SJR9K/=P?7-__.@NBT-V-QL."'LU7-Q#*P@!9*U;&(RC6_S7/@!*XAF\2<#%-':J O M)&U;VCX_6]*">+-]P6:=7!398JXN)/F/&U5.+ 8CRN%8))>+8<@N=6& MN#S8X/@@4-N/S-'OQYX6BP/JL(.-]5G^GV>K]>:\]/WB@<3+-3'4/^M0J=HT M;C61GCO+-(*)9E-FEL!GK8 [CMHP:XII?>GG&'I'OY-[,N">3*O]M)YX8*UN MYAYL?O?Z\^9JYXL_<9FFM&HGRBG#G>)5K([<;59[C <&*",37,6L8_N3ZCV) M'/WR[=BVMI'^GHJEK7M*O+VGO$62]&JZQO/FG%O)O,6T^##?/&4CI$E6SAI5 M5ZM/K,[PJUT>$X+%PB(OWK'F>!Z:I]$O__9EL4^%C@Y6RT;2;_'SV3)]K!P_ MFQ-+Z^GR/D]L4D?SUH$V$*.5H(14$(H0M'OV92.[TS?ZW>33&O$A MM-:9G_%-%K=K+H3:<%MI8#KY6FZ1R9,R&71P";.6P;#V)7\[DS?Z_>?.8+F_ MSOI!Y.";>T'1R:Q$"MPN7>P MQSYTAEEYN:AWWRZ-VR*]+&3E'(NK'0I3K%V?%"T4\BIXG>/KF6584FZ= 3B> MZO$OPYP,GR=6<>>@)HGB],-\._0\?7V_#.1#IXWBYWGSW6P+@TMG_/+:AW-: M95>3SH;3MA!T@LACO;,6C(B("3#D MY+@.*F9WHD5R+"\CMT'O,#\@5 M:]VGX,"R%O[]U!(-)BF#!IS4&I0+CMPV9K.\ 9#[Q=[RS+*7 JOM=&, M7 JI#?BD'4CM;3%96LE]8_ -P<>XZ9(38WAT('1@0I\CO3E--RJFKV=XGBA] M]FFQ7$__U[86EF>;:@X48LBT"^5B:Q>Y"!R5BABY\-C:LNY"U[@&=WST+ 96 M90?P?* X.WD1$ZU[X%EYH.U&@N,4OS/#DPR\T+IO7I!Q> W]8/:R.P@V4%<' MH'M^_MJ'!GQ$92BD=PF2JQ/:DI;@'07]Q67C69'>Q];WU+Y!TKA7.;J#84L% M=H#'9RDM-\;\8D97*BBR] $,YY;<[7J#69,1]TRQ)'W)S#6_KW&+AG'O8'2' MN*-4U '$GD]7GQ>K,/O; / DN#!=!A];IYT-I'?<.1G>0/8G*.X#V[=&\ M)%_B;OWUS2QLNZMMAHA/=/(J>R%!)D][@BH%HC0&G,%(B]8+EEKWT-^-LG'O M3G0'VP'4V4_Y[Z9@XQ[)722&+W/%$X_"R4(A'#DO A2OR]'E!$9;Z81B$FWK M*\8[$S?N/8GN$#N,4CNPK'>/72^Y/+_I="D_D;+F5@6* &VH>T8!KTH @8I; MXQPOS<>'[T[=N!B;-Q+=A:[>NM&TP<0WH7>D@H[=V@>"W2_S+R3TQ9*6[,0ASYR1 ME9?!UNH1*R$P7T!&5W0I40?;NDC@48)Z:U%S(J =JI).$?9FB9_#-%]DPL[3 M$L_FVX:'SU8K7*\F,=!"4D:#5+6--*-%1*P'\I19LMI8@V+XWFZ[4-I;JYH3 M8;*Y$CL%:\V>G5U+U^+J3?BZL?6FA*"8ME",K#U,'/$5R4$NF&4, IGPK=-+ M>Y#76R.:T^W)#=35M3]XP5"T-I=$P9AWFG8"X31$7S@$'EV4B1F)K;-"WR2J MMUXR)_8$#U%-KUBKR^C5-,3I;!N^G5OV2XE>^]U$F9B4*P@&C:_S_!A),Q@R M^T5%@](4UCKCD"0GC8+Z50"'Q,)LD@- MWG,'R1A5M)>AL-9AS_Y4=M(R_41%Z:W4U8%])/_DHOU7^J^SZ1)OG%#13G!U M2.6RL3YR#JPF&U3RQ*,4$AS+Y"U'KIUM??=T=^JZ+&=OAI/%29361;Q-K"3$ MO'I)0KX\,\UG58!XGD.@=>R8B5C/2.M$U-K,BP0(23JN=8E85.MZRF]3U64M M^F ;*ND'NW@LR]A.JNAV\O%LK)XU6K@.49R;\B7\<$:L*((6E?DB#LM)=B8 ME>)<)2Y:A]I[DMBEQW@RB]A0?=V9Q5_#^IR73MI5-V!_=U=QA.M9'0B M<2BA#F80&L%C]>]3$0FE#ZRT!O'NU(V;[CPQ4@=26K]Q^LOI/,S3_8(L*G-6 MI 6M# ?EBP*GE /T5NKJP#Y>WQ0N!B>\+MLV M,;_/26V_T _F&_][GN^_V%2#PQ5];'96&\I<[VX_4=&EN@S!"9YJ*V1)YL!S M\(R3^TXE@GYS[26]P,S'R_>!_^_/MT_?'C MMG5<]9/NO_4G4:F<&(+SL78#I]@@)'*?G+0:T9NH='/7^$!:NTPU#(;N4RBT MCQ#OG%-BZ:IK..V45UW!)D);Y(HBUNPLJWMD L<8.6M)."95]*)Y]=VWJ>HR MT3 T'!LIJ0O@;66%K^IY\)OEE,3VN"4P?1VE&RN;\5^:7$KFMAJYE)=N2( M:;10KY6!DA074 R;P&0>ZI!4]+)UA==I.1QW7QIL874,DPYVL9,:&.5)$HPK M0&%(-G7.4 Q,@:8PQP@91':MJ]&ZVYD&JP'N?5$(\:$2*SL#+ M6L MLX9H%0-#FW;2SK H6Q?'=[>(!NNH\'TLHGT@TG67]I_":KI:E#?7GG>3 M[MWZLM_WF#:=V+])8*/>ZZ^7'\+\O+'E5??W;=/+ZR]_7ILB>])F3_- M:I;6I"R"-PI8TA:4C0YB\0*L4,E+C2Z8UG_Z2*_0K*7V* M#,&H9&LE6*G.AX#"O2[.<6UBZP*FW2@;N7-V&Y3<:3[<7BG=FJ3+]E"?-P/^ MZDEI/;,_Q!8]]*@V1F@G0AM9GQ=A.2>5U_S4YB57UWNMS[[V.S=&A5IQP\%Y M)D%X;0+741K7VC-YB):C#UAN/?<*UT$FGTN,X#TC7"<*R:)DN9X4>>&]4]ZV M+K=YD)AQ[4L3'-PYBF@B^&X-RM\6B_S'=#8+YS?5?Z&'SC],X^SB,M8!EN6; MSVQC8O8CO9&MN7@I.<:WWW?E!U]+DKB(H630Q58 M>Q%X=(_=75YVM6)HN14I-\V#:_]U1O&!<[1B&"NLF" ]_7@,<71BOX;#UIUF MNL/IK5M+]S),E_\19F?X*X;*WL%!W/T/:F/3=B"RD2&[?-.5PJ_<<>L#M[)8 MD,XE4'ZSM14/M*,I+IPKOJ36E6J/T'-T6=X]S[Y"M^!%&H$4=C@D[\"BK:8"%N?V"4*,%ZT4UE^O#9J_0!7IAQQSZZ!.& "E5$T6Y@+&!8?< M1^MY^W:4NU)W?/^OBS==@3U%(9P. :SF&51(&:)V 82T-@LC6!;MNV+?(6/L MSL*#X.-NEZ[CQ-^MK;GH6_OU$ -S]8_;6)4'B&EH2C9/O\<+YM$4H;,#"L0+ M[4A>0Z0= PPJ+9@5TA:9\$[5.J]]#K!'MD]&W6 MD2'CQ;3V4QZC9WSST0(3]]F+)AKHUG!LKM;J MWEP_NGS9^46YGQ>K]6J3^XN5G(L[(U=.,4\RHD3@FM/V%', %^M\3<%<]@%3 M:%X+>QS%#8:&[?;VGZZ__6H919^Q*)FAR,Q )>X:%G4S5W5K,9RF=?3K;,+Q)-%=!+/$CR6+Z!:_-@3_ A.[ZZ#8V M]2!&&AG9M_CA_,V7I7E7" U>R$AN/>>&]E5+,'6%U_YZI2A=MVW=^ISN$7): MFL>WF&9AM=H<3V_,Q:=Z/GVU/E *)\F; !YK$M?YO.EC#8YS56CE:"8'&*.X M*WGCFKU6B'G,IK743[?VZUK#_L."Q:M_WBI0H.E.3@75:0$I<,ZPS@T+KEY2/D-.@N?_O15^"U7'&K$JG3:>(WD@O@M! @ MK38N%UZD;GW<]A@]8P>,;3!Q3QOX-AKHUGR\PP_5JWN+GQ?+6EIU4*AX^QF- M@L1'26MD36Z_Y*HQ.W/,BMH1F*>:9] *O+<,@HAU5I01HGV9WP.T'%W8>.NY M]];T1LUM" HP*D-[H9809' @9&#.!(PBMDZU[4#6N%:E"3;N%#0V5D:WEN6! M(L'W]7CJ(%?E\0<.6MEX']%#US>28QJ3$Q:)@^A8.312"U-:U]F MJ/K&=^DCYK/:__KV&^JMHK2YWC4[JVVKJIRO)1B*ML)D"\F%4 N'&<1@$##E MA$6HS&-K$1Q(:J>UD?M@Z(ZA.H'2NC5>WRH_/-R*[?CDTU11#FC7]JMW8RX; M+#I![<8$RA!R F[:X/I,/^(FI2==2WFUF%Y.Y],UOII^P3NOO;60;'):12R0 MT"E0Q$!MD"8@J.*]@<#J/!#MK,7+"X>(S%EV?K M*M)/U7O=WBD\GV!ZB_<06?;!I"I]R 9<4#[NR/%I&FE)@Q3()S,8.R)D*,Y *J8JQ4 M'GG")UE&2; U0,#YTP&ZU#SG(S0KG6AS^GJE.OCKSWUUCB@%)Z:B9 M1,[T")RV\;?/%EAY.#O74#/=FIO[R^_SZ?KATP"%[Q6E0C0N295,9-:JH6@&,\D M4XJ2;.!%T92?<8>V];-$Q@-)5POFM\4FU4&RQF59+#_5H6,;Z_$8MR7HXF2V M4*^54%PC(D09) 1R+YX>G)_=[P4EOTP^8P'SLAK0V==Y\ MBI"ME;4]*.&&TQ_"ELB"\4&:UFVA![Q3?[7"'I/RM? A)6>#BJ"CJ.&#U;3' MT&[C@XD.I>8YM^9^3Q+[O5N_#W(>MH3M]=2M=;M]7^^(4Y;[GS3,9=D!#=.# MUR*+D;9PAJ!RH?B')0/!L@S:2">0"9YB5HOA*Q>+I;/,GV]B6P6CS!- M'LG%:?^U3JV^MFO4O,8]IDHY GDF%I34*-!PSG7YUI[:EJ1QL_U-D3BBKL9& MZ'.DUZ;IQ8B[Z]>6OLFG3]DQ71+$E$G4,4GP108P2=//8Z" _9M^WK%$C)M^ M;X_"4^FC@ZWY^705/GQ8XH?S@8IO\0O.SVZ7O'HIF:NNADF,8C"&'D**'+05 M4J80I6T^4W,GPL;-AP^R$;=72+>!Z@.M2WX+RYH#^(+/<1VFLY:=5^X\>M > M+(\S,G0WEB)D\2(S$@S3H(26$(U'0)YC5BKX]G-$ANK&\FR^GN;:NH-D>743 MX,6?=?(VYI>T,&MZY^QB*.P=,C9=%"><15J$GGS66.OVZVF/,PHA%(9">UJ7 MH?5%C":$=]JI91]\W39RIU?H4S."5[?<;TABT\@F7#:RN?S'%Y)I;S*/)&10 M ]M22(,WQ]JT$\ #FF?5B)E")D":.9S]LR3*IK77@YECB\%6C/HD\ 4*T5L M"FF),60%/.<>K#:Z<#1D#%HS=H. 3LWC/OJ^;1X/%W '$<7??(B[/CZ)7K\_6JS4MS?.[[6GBG/&,R\I-('^Y%*R#MA34]*;B)"=5 M6N?Z]B)PW%3?(.@:3D$'HX\HB8MF$>UMO^*J60/G-LCH 8//)#5!O@(R"R4P MP7))1$_K2VX/4S-NZFX09#42?0=&C,SOMBU-F%WS-U;/UNOE-)YMVD&\7]RM MKJ%X;_YAV\YF4B-QRY@#+I2G$)UXC\5DT*B<(R=9&-6ZK\SQ5(]]MZ@-?N[V MQ#ZE,CN [P,F_MPAOF/I)Y$K%3/GM>XA;]-)44M%?X3@74):^*T;:.Q)XK@I MYE/NPTV4=#@&%[1*&IRY/=Z ]<6;=U>S,ZS5MA@)J2YO94J $(2&Y-$Q02ZN ML;?BAX<.U79^Y[AIXZ9@&E+:'1BR>SF;F,RS5T:!Q+RY@Q-KYQ@#VCD24\C1 M->]\="\AX^R6@ZI\T5K^'8+H7$83EXTMODB0.M1:9E5HO>4 6"]$FJPRAM8> MV@.DC!-EC@FD0W30;0[W6TVK6YQH[?V.T_3C/LD9UW[-99-!FZ5"B#Y%@A2% M"I$S!:3/I@]9X'$/R4NG7O@[R'2T&'UNJ(._)JN9Z\ M(^UMHNJK0IHP>_;G=#6)1C%#43Z(6#L=!>XAV&0A67*(;;'6[S9]D-YR#9;T MW14D'R5@Y +CTP%@T5H;8T-J6XASG87GBT]A.I]X'LDKB0:<4XZ8< C>: \I M6EJ8-FNUVYG_MR#U$ 'C0*JA8A>MI3PR5%Z<+1>?\5>LN98)&ITMDQ(*M[56 MCWGPF;Q:AF@9)L.8-0W0V M(I9:JN<@2.?J[3*;,&+T^;'+/RM,?_VP^/+C^1.W #C_YDK_5^\;)\9KK_D# M)=A!'N"GL]5TCJO59G]=;0K+-P8Q!8E88U!E?+UAZ#W$&,EWT\)8X>G7S=-) M#Y R\L62DWL@+373*<"VDL3S!>_UK\O]]M<8\H,7&4$Y7T@TVT- M! S>6FNX=KL=F]S[^/XP<83^%DV%V8&=^;9Y7KTB ?Y" ZQO7S3P:XYBKJ ':/ M]59ZN5CB],-\V\<_?7V_#/-52.>W2#??S;9*SO_S;#M^Y"ZCK2X*?&)"%P:CAHX*\14T0JB10>A\&SJO0;1_-3Q<8K&K2<\&4@; MJN7)5E],:I\6#%E,PRN!)*#=@1HN 1 MR'$PEGLOM6\]M/0)U7BHD)(S64$)M4=Y5@Y\$0)8T=F2S>#9#]?3ZWNO\=@# M>6UK//;1:@>.\B-[VW7>-LG>DHWR+GC049-0#7<0LXX01)"%FT!LM[Z:OP=Y M3[DN9"_0W!N^M==@W^"\8NRW\.DBWUR*,EZ(0$YYL:!29. %^4W1<*V8%/6H M\W0 O8_$D6=D#P65W2%YM-XZ@.5OBQI"?L8U/ONPQ.W=L_,CBI1MSIIK\-YN M.OY8\+P$2$EY+8T3L7E5Z\/4= NVXT%P^RI^&XUT@*UMBPQQ#[ O.'DS M"^O:U?:BE*K5BS(7:P\S* (&C *XLK:6H-?UHIQ/L^Y\_;AKR%(AI)=R1 M2S+?UFO6&\] "&[MMJNL)\\@H(?:7P(TCT&P$J/?K1WW-^HQ+U_XE,NM#G'L M#Y=V#Q Y1[:-7FB=ZK9;SXLD2^0^6@[)IV#)+-KX:-GF7B 9NV;W0&7=5O-"HUF!'B71 T5B>8<->UG3@KC7.%VIS3OMQ1__:7CU6DW M4?S!\NL@1-GK6$QD%F.2U1CF"*KV1HNI.)#6\SK&-F-I/5/G?Y>ZMF.2AH/I ML -\/L+3WY:U51^CV-\F5WLB.%T/!S2$'!A$RW413'.EABDW>IBF)U3;MA<: M=D\,[J^:OJ%V;=#;]>/]2?99&VT\\,(3A9!D[*,BLY]HV=;)51A5ZV%&^U/Y MA"K?!H)C"_7U4_?S"*._X7H2C#&\5JR(($F&)A@(JM:4,A^XRHX3:Z?#)%'T MA(K3!L+?OFH9L978M[GY?87E;/9J6G#"6&+1&0&A( 4YT1N(]3*B8$YQ:WAT M/IP,:E=T/:%"LV$ =Z"*^MZ#WV+-VM:9']=,^+:NGD^4#REZ,MUU%@>07R' M1Y*H+3HQYDK*XH1>X&.DCML(KP-PME/D=U >^8B87I[5D5S79;29U+4:LJ-5 M&\).74393(BCU%5FQ*B9U*!Y,J HUH%NO9D^Z==8AVKB:>Y!@5 MKUU_39TK1Y8'0N 1D+&0@F!9FIW:A;2QZ]^D]RE55>Z#NSVL>UN=]NV2W,/E M=G/+M:OP2Y)YF/TGAN4D"T4Q)7H2H)V4>I^FG< M! @2+12FL)2L4,9;=?P/%%D=XRJP5$5'6\7B1WSM4!8XF1.^<< MRZEU2[;'Z#G:-%T\^]PAF.=7TQ"GL\U,P7.!Y]?SMW7.X+(>_LWS;XOY\N+; M.@/GO!2284[!. -!UZ9H-A3Z*E@P.B+WL@ZL:1[%M")^Y)1I*[S=,6BC*+>' M#?>"\9^^;EB_NE)M+>(D@N2)[H+2$6%("(ZW1-BH3FY_^7[V]$XR-BH;;]^0/4TT'H/IU,<>O MOX;E/W#]\FR>+_I)*.-X#!3D%1D8*,P(H19"N,1($%PDQ-8]S>ZG9.0#R1[! MUD!E'0#OVEYQ^>6_3W%)1'W\^@J_X'9 %!,BR,TP%U6Y4IF#LY)#EDX;F6+( MIC40=Z.L*V".[UJVTF%/R+R>#;G+W_E*5AQYS,I"R(+DIZV&.A\;:JMH[R6C M93U84+X+@9WLU@T1\A (FZNK)RQNMI751F+\W.#KZ%$%E,"<(U:\5N"%95!L MX4DGZ4)JGM1^F)Q.<-8>! _![4B-= HN<$]O+)?[769UQL.U29 )73&0*A6IU!:\]9D3B M=2:HXJI8P;%Y:?FWR>H$;+V$#4VTUQ,@[V/H?.TB+4^5# 7Y*M19Q]J!JU&Z MT)R812-%:=W.<@>R.O';6D%AA^#@&+UT"K75Y8J]L.<.G;[T-4)V%J!89=(]!C-](2V(W:,5U<7IQUY*8IS8!LW@S8+ M<"9:8"9[;[,W/#9OP=&2@9&KL_O:O4^.B Z6PWF1W-URDLMJ$JZ]#YCJM39. M81K)$KRU"+9(YYVAWS#;&.+?)*H3LWMZP-SN!]=4>QW L9X[DKCJ7R_^ZVSZ M)-TOZ.<;UU7>36')4BC/((=."=:HVV@D< M@N29&ZM*LJV1MRMM(S> &Q1X@^CG8-Q]P65<#+T'3[)*Y,5X$I# 1/+2FI:0 MT1!$"<$I'8IN?5C\(#$C-W<;%EM---!M!?^VMJ*NG:ME\N[C8KE^C\M/@=R7 MQ?Q#_?*^SQU1Z-_BM6WN S070*-K [_,O^!V1.W&B-&^6O?4]=>KMU_"VU+0 M[K+VH+'VF2C!@_.>@OFD7;#":MU\R.ONU!UK 6]:\-N6?AOBD3%':1,'C-J0 M.\$RT (D ;#L$D/MM1>-!; #6>.Z>@/AY[9Y;*V>#KR]E]-YF*=IF/TR)P&= M51%N\@E%F)#"_ Z:/K6<9&+*%ZJQBA[@)1QD=5,!M>A$NQT@^_=W?UM0D#/?"/(#$E.W ZWS_+_( M3&TN000DEUL13^1W.P7)!E>,$UA,:\=D5]K&1>1XZ%F<0)4=0/3GQ?+S8AG6 M>"\S20D"CE)@9"&'!^WYN)>,W#,E;8FR==[Z48+&ST\&51I]L\H9V'H>@M"!'B=>)439*GXI6R;7. M&.Y&V;@YG6XP.8 :NP#G^^7F,.KK3XLJX%M+30FK1 X.>17<$QF9JZP"$UV9E/9B_OSH+99YG55L5)*;)_(>2P3GA M2&[)!:F+BKGUGKT7@>/NX4/'Y,/IJ@,@WF;IEC"W_8$P_[Q8K3<']!//HBK" MTLK%3)+T1M1Y&AJ,R-JFJ(-K7M.]+XWCQC<#PN4;1W]-==?!")YO\'WW.>T/L\KPWVBO^0G+8DF+_\^)C1BC1@:)=@)03@>@5VD(/J%37F8K6]>' M-R&\FT'1XZ)X "WW;W8?9/H5?7?%-"\D=N4"N)JZ4U@8!,L4>#2:8Y11L]:5 MYDT([V9.::?0/ES+_0SIV[DNA9PQIYV.( (C 3MG(4AA(?I8!.<\1]UUW=!@ MH==X.&VBJVZ'4]U7S?!K6)]_M;@C[9LR:%SXL?^+ARO].%(((Q1_"*]SL1D( M^[6C7W 0'1=0"Y!\Y,EZT;J#Y.F*/QY?E%>ZNI2&3S'*5(NEK6&@J3B.O1='^+OZC[ !:,QDRE4F$#+4F<; M!JPMAOY]L6_A=< M3P(&$4B<("JC2FL#,60..JOB@O%8F@^6/H[BIX'A(V%U()@;Z/@)(7K3])^8 M??]QN3C[\/'E],N&[RO93[22.AGF:V-D008D%O#"6##"&\X->M'^/ELKXD>^ MW]$USMMJOGO(7P]6G>68N0',69-TI23I2@>R:%&$%A2P-K\ETC*Q,-RED0X! M>Z#>NKU;4F.-.0'YZQ'Y@CO/:!/Z/TY:PRA^^Y*[5Y*<8DS'G,!))%]5>]IC MJ_W).9N2E656M2XF?X2<8^W1Y:,W2=P)K8GL;%& 9$ZA=GDE!R)1Y"BS4"17 MYV5K)_$F!>/'V"WT?MMZ'"'E#O:L2^JK.=WHXBW61L(;:Y>+3$$!+]*"*DE# M2%%#],H'88W!F(?"RQUJQG6D!L?.<=+OYVSEDJ$Z3*E8F;)3";R253+*0T09 M@!6E<@E2>][Z?/OZ^\=U90:'S+X2[M8A>;=>I'_\%%:U'N13G?2U>>1O8;FD M+[[@$6[*CD]NX[P_QLFTWP) M1U-8EH)KL,%0K!6D L\$(SAR-,8R\FU;)S^/H[A=C>/F'7>4]HQT-O^P[9[U MT]>KSYS3\>R/L,S;ZCWC;0K>1="6T6YO?0$GZ%M$[B@8D %=:]$U(W[D^XJG MP^S#99.G5'\'SMZ;62"#] DW]^RD--'RK"!8(4 Y8L![G< H(:W(C#AJG82X M_OY>2B%/"H%%(WUTA*7S OKLHM-)*;!18>V321%/B.2),$-."-="E=9'O#4 M4))RLGABT*MO>72[O*@/)!RBP,5 TNS 7&PM)GUXLT*RXTGG6A(F10*5-+$1 MI0$>LA7YYOK569I8N<6Y!9U^$9 MW('+P@-3)&-37-*F]1XV!!\CGZT?#JO;;OK8.AY[0WWQ[LV;.;(#/KIR%\=+N@-#^.+3Y]GB*^(F^_3Z M\L:,(;KHER] M(]+Z4O #I(Q\9:&$OUQ3'B%\/EWP/<+E$N?!&H@6AZHSNXA7$ MR"-P[XTWG/;\W28Q[0*8,=W](Y1U6]T'2&YDA?\ZG4\_G7TZ)QS)FS.T0WMN+#G]<(=\PZBR6! MS2Q7PDT]&$"P$I4PF6EM0PO%7W_I. %7,\4?++\./-%O[HD/;8FO+F],)R&D M5\6 "'7>G/>)?""6("7-O @Z\-+Z:/9XJGNYDCYF3OW$NG_*:/_MK"[NU^59 MSM/Z3\)L&P8\.UM_7"QKKXF),<@Q.PX)50*5#0>7BJ+C![62-$E.N35,11&@XJUSPRI!%*4.D5KI##->U$.R$_GV>I.]XO6 M0!G]#/CZ4=&;LV7Z2!S7-.P%1^>&P$:O4!@',3%!PA8)O*9X*ZBL2@G9YG K MH?30 ?%N+^P\FST,.@?32"^F^9 ]Z5($VW5&__K38KX5#BYK[=H$=1#.*09. M9Y)$HJ7F3,A@1/%*I51$\Q$]PW&S$_#U=P;\SD#2P7)Y-MM\!O/]&B%'C;[$ MB?BT]@-'T0W3""MMZULINE.T$8_.=PG@ Y74 R8.%NOGC M/W"UOMR\^(1K9:4+#G*I#?$]&HJGM0/#LY).1592ZP9V+>G?"=[V.X7W:$!X MRHM@6X:U^AM]<+WZY3R^_CM./WPD._'L"R[#!]S\LH805RUJ&-;AV"D",YKT ME$PA&R$*Q!P*NE"L##L=[IQBG1S&XDY+R?V?I71R.'6PVBYCH5N_K=?+KOZ]7/7];K/\3UV\Q+3[,-TE=9ER)(EI K/V?7$G@N*JV MQW,=K=+.MMY_!F-FIQ7DO],5U =$ON>ULK4M+Q?+\Q_5S_%)0AF,\A:\$!:4 M] (\"@8R"1,\^FRQ=3;TM!SN=I[&_L^R.C6:QDZ9GF<4:(-]7=Z'Y0=<;P\1 M?PZ?ZP'_Z_(3DG_[(BSG))CYA;_[:O$'+E]-/TW7DR!0RX :A&:U8VWQ$)D, M8#E*SY)4*=T*VA_(I1Y+R6X0_][.C$^OQ*>)V-\_?[Y@-J$N13$'6FZ*]7VL MS$:05B667#+9Z $1>T7);HC]WLYU3Z_$;D=8W-\%:1L-/4OKZ9?I^IC&D_L\ M?LBV3CLPU$=O)^1.\OEN'Y;J+U7(S_;MM$&PC2]X+6:M!,KEYM7&/ M%!'HAVA$(<7X0:HVV[+Q1.LW^UTQQT*EA[VENLJ_K%9GF)^?755";0NVK_4Z M6+WXDV*E*Q-Y1.MQ!P0 MZ\,JNI]VUL?*GH1=<+HF=_=R94^\\TG*;($9ED@22H!/-H#G)/+(N7"AF\J* MA]EXHO6?_=K_8Z'R_2R:JTL.UR1A4V8&23.JSI U*4%(24!"JUP,R5MLOD^T M9^.)UH[VNVB.A3(">T *O3R955M,!X<>XNYV1N%6A>)%_+:YME%M6#FW82ZPB#I**-;5 M+IE*0BR\;K*%T8X;HW>]^6/[_FR&40A(^S(/>"V],YI'FPX<\N1?HW!>10]_-H4X7:W(DV#V%W?%;HKG@?D?I\!1% M;9I=&Q-7Z2@(1@3(HMY="TB>_,FCMZ8AFS,XW=S%O8DEN>0 /P>%N@]9R*/RD=8 MRXH2 K(L]SN3:)GZ>0JG>ETLQQ'@]OV= SYNH)!,E,\> M= ADH+@VX%P=M1E+TBH':4Z?]&G#VKB>ZQ,^X1@".D_L3M\MOI^M5F>?ML)I M?K_OVZ\:\J[?GHSV<>\O>29%\ &8B@64T!3U<)\A)F.2T(I;T7KNU+&E1(!GRBW=I84YR/Z%"U'D[,>BCJ+^#<.3F MO%U#>Y\OW$'(UE$L)0HXI$U'F\A\UE)31-48N_L/UA[N5'<<$#PZ6'L?C70 MI\,%]\B<0,]Y"L%Z$"[6AMLQ@C=20^UV$*(71>F3-\E[XH.U]X+5*09K[Z/C M#G#^\ C>8)U(EB@/%!#3+B08^* %E,*5XT[&8 =KG'70W.2G-:-[+YSL/#=Y M'Z5U@+Z'AI]B(H%($P"-YQ32\D0AK:KMBU QJ0U%2JVQ=\RTVJ851:"%-V,DM/:UKM7LIZ8%KM/I(;>VCI MC6FK 9/USA>(QF0REIF^\F3GN-9U"<R9L&*N]P6NU>*GMP6NT^\AM;\3>F MK2IN G/*@X[U3EIA :(M$3):P71*1J3O=%KMP8H_6'X]>*+G/M)V/G?VS'%C M( F=0&F;2 (^@>!9Q!!5Y+?;2![O?EY[__\,J!1H)RUD!TM6N61#6R@?"DT]Y&L.U^0#D#A K&,WMGUP5MJYL2PF!4.A M.T0*I"A\RA%"9K1P=&*E5D8$W*UO[3=>U <2#E'@3I/G#I!F!^;BX#/X5U?- M>E/00EH#3GH2I4P2@I$%M"O6J2"5$MV,_'SUO0U*/V:;.['NGS+:+X?#7"L\ M>#M=_>/E$O&7.1&(J_7;.M;4*NO2_]_>MS6WD>OJOI__PG/(YOWE5#E.,CM5 M6;$K\3BU>FU9+572_*,]Z_?I"S?9%VZU6R3\N3%(SL:D, '@@ (@MQ3 M4,7^#82BF TU$B"&&37,6H&*:?C1E:G"$^")M335(AE%94I90WJ_0'07@<17 M_LQ]#Y]K=(FY/+^#59- M?B4I9;FDLA\/DOBCF00RDWI^M[0@E(I*(V4 %)H'N5 ,I)8"*"PMY4J2JNQ- M9S-;1WKALL!M)X':O->5]+&^K:V;VJ5 B+$(8V]!984/SG2%@&2* T-P=SX M2LK4[S2,SM21WHLL>!4=K#)'5EN^_.MHS\5LI#YF!?E^=LHH&O>68*N8 ,Q5 MT;^!.NJ[ T9P3)&NL/"IKX*^EZ)Q3A@4SOE8@,?BUI(0[&APR 2 F8?(<(Z!48(,I*96,KW3PU+K[ M+HO&>RG!SJ+Q/H@4H$ZCE.M9J@B27 !NXT&ZJB@0A'# ,>=8TBJ>R?\J&N]5 M--Y+K=ZB:+P/Q@7H^;8J4(RD-U(38+C1@'@/8V4I!IQP[X6MI/:I@[2T.:'"L\]OK8/IP"M $U\4M5!464X0!DC$;O;,,J"X M""$X-9B%'493G;HO0N]RL2,H*Q_B-AZ,1T&Z]% 6 R$,X1H&T%?Q+-(J('2% M $9.(60J;JN_3;E8+R3WE(OU$&ONLHF% M)C283"&TY=($DXS62I*W5(EMIE\&[H? U:2577'PJ_;?;G[:3&W][*H?1;3" MEG*@1%@61%@#!*\,,)5FNK**"G>@-FP:+H]R)$-TIX8,%F]I"O/,W5]GBP@H MM!0.4.6JP!9Q89/E#% :UIN6FCO!#]*:[6/F\4_>1'42";H )R3!*:$5-!IG M#RQ$\;68\$D8XH&NJ@HQ+&4E9"E'MU][%:$>P5V+(<[S&V-_S-K^K9G>W[?_ M])]%/;_[,@TQ[6()SY9'SKR"0GB&@F"8#G&M=<·H("^G-:2PZG1_\"T6 M15_F"D^R)=;:5(MF5!4ZYK7U6A[SGZZ]^*E6\IH%R=VZV=S9U?-D'G-)C!# MP7B!1+$('ZZ E]PZ&YN_O'T[G53,'>G:&E>Y4RW!437M>-X#.E@\+U]LN40. M&B\= 9+%QM5.6Z ,=(!IKW0EJ+>DF-K7GKP5GL-_Y\MP@)Z]ZXWPCZ5M>I2+ M0HJ&>)8"C"D!) 8 DF$%L(34,:TU,\74S/;D[4@+T-_)^AN@9_E?%%\F;,:3 MS?/4S\]([5)8QX71.L38T 0TD 0R8$-CC=U04 &%9-&Z<_>D;[+\TYV MN6':EG^C>_MP&..**(L8@)P&^02?(":;!=#"P@H+RX/XCF8U'I)X*>]1GG>R M%H=HVK&_QM-=.&LO<2S#Y(_!F#Q>F7L.M,:"4>X40+B2@' G@,1$ \,QHQ91 M3UTQK_:,(X(C3>)D/J NT]P%_RAP0G$( )84< M6LXKE?QF;2G,'^D._K>R!&/J\[MV!%YFV?<+C@NIG)/Q[53. 6$T.H*" 6DM MP]X&<9KC,00]F3_2\Z"_E2$84Y]S5UJ_X7' ?L'A$ /&ELG X=@\BMG82E=2 MP+FJ&%//)LO?A_$B/PPHR 67AV4N3W_7Z[Y$MJ0AQ&E4: MT'CKE>CH%5%!@:\J!(V"#(G4/4, 2"A','ZEL)Q\]]=BB6'^/< 6P: MYG^_N7E@7CL#A14&(*8)(,8H(+AT@!JLI-.60:??4,&?9G:D@60Q"GX@QKD5 M_/ *FJ6,SOPK25R*^+:XK!BP/CZ B3$-FUB(87T(9Z&%E=2\FXJGG]N1ADH) ME#PSSD>KYLL?KWDG&#KJ.0&RX@$'@4W8PP0!"'*!PH*W@OEQ=7SSQ(XT'LBI MX D0SJW=W7:P3ZJ=AN!C:N.)0_C]F4MFB6>,H=@(64) *LB!1GC9$EDX*2QB M""?T2K;/I)/^\O>HOV^*X7$J[#,72PA"0S!,@($* P)AV'LT]R'P5]XQ KV" MW>SOT)ET4ECQ2V$'8GC,:<[ECQ7[]YL+NH0>:B;B$YXA&@@A0MA=- Z?&&25 MK:SVA*\9W'SIR@WS[Z3U\IUI?79%*/8UEA-C%M>+Y;L+R^1GE$OK?@;1U+?N MRS1\SWUM9K,!+[+T'"'-JRQ#V$KT,LMW=[6:0#";2QZ>GK @VA(DI01>*!1[ M6%5 >UD!082T'H8_(I'8ANR8SN"W);H)>]6^RU4<"E8!Z+T'A&(,! L.#Q1& M2>>TPCSU:4^?^>6MQ$ZE,Z_>FA@+H1(V]P#/TG;?G^9$UIII/,Q9]M4-/'#/ M/ <2QFM5#L9GYQ $82*44D89L&M/"VN9AL$'QJDU:^-$,M\=20=TDUKJ!:A.AP7WT*G5 M6A][?0-5Z>!-8D_")\$ Q9X)A!'WUKS]OEA"O^P$BM!_.SP E;+4[2+$-+/) M/4CV7XO9/"[2AXZ]A$+G4#S6"EX$J7B\$M4Y/Z?V)Q?"R@B7S]%E9M="Y6_%FN85BB+@3O2@$B M*QCXHR3^4%Q[C;%(W4JO[QSSWL5ZKG+XWU*+PGH/%$H>+W8N+"O M(!;"+.7#OJ*-0ZB"=KV,Z:WBTZ^].GGGU,LT,<2HT)6@FF>G7T[F\[;6BWD4 MUD5SO@0@K,.8EO_K>7DD5%I0+$18TSCL!AH%E[K2&BAJ8>4MX00F]PZ[3Z_X M;7N GJPKY4B@%:"/R\?*?C:3@-;LWN>^1)*&[4-Z@"H2C'WE(!""26"Q5$A: MC;E-?C'CU2PR:]=8@+_*F R2?C%M!+8MP2 C5U]-3Q=A9E-SMW1]E5FB.-WL M"#](^+QIE_^P 83'Y"@2F%(D&< A\@M>B=) A'4,+/'$D" Z!U-[DUD8S;SU MO]%:*%^'"C#79Z;^X'R0R'=G)FHVJWUM[H\,'IC>Q&WPWSVMC,#Q2J( Q-/ M):,4$*2H4Q YCW7JE7+03/.:_2-0P?5%,[X^%*#UZ\Q]#LB=-*:^!V1^?S:_ MDV$&*RN10D#Z*M:N( I$< >!-!5D6$D*&4^\ 9/.J_9/[ZU\+9:4DYCU&U( MG=RJ>A+Y"Y#]4!/WPYE%6\]K-]N S5(XX?]KG9JYC^[^OX^P6$HMAA0"QTF\ M^*.#8*"! %N-F."L(C1U[GA\KO)>$H8O]QF(_US$R:V:)]VG&)K;C 0@?;$*&V%01::P+NKIU=/MA4M. ML>%4,(!L,+:$AT\*0PZHDC1LM9 (ECI=U'UV>>.$L91L)'1R7SSNSM9ZV'3? M]^7BYV/W"\1LA:P#V,?^ %BQL&U;!;!#5&-L+=;=NLDFFU+>_&-J1U?EG%S!5DWA]8A'HW;WX\J4+\;7@R *\K/P0$@(I@OPEX0H& M-<0,IBY"3##MO$'GVYK3\? L0(5C&;!IKJ:Q$#BPL/)29I?(B(HZ[X%",J8^ M30AU1!6O_6/M'-?0D-1.\):IY TYQU*U%'(O]J;Y#W<5,YS?W4W,R$RO?IB? MSBXFKO'W?XJQ^^H[0X+00X9)$Z4.9C!1&+L^CT?5- 8*[JT%QL;F=D(8H!P2 M@#*N%596")^Z]&?;7 :GPE:R/?/K(WR9+KM!1?P^W*W^\;X6W6M-)$$22"UE M? >2 L6=!H8YJ[BHG*ID:O;[3S/S=7P R)&X.S#*K0_&/'7)T 7JHC%?)Z_.?3Z"0N^?#@5U7F8.E MG#M+\OLTON^]E,R#.%87]Y@V"HHP;5$)!P@+JT=ZC,**XA MBMBZ#L&L22[ W&KP:=$V-^[E_ W4-G9M P)#%INV\6!#"05<8>DA=)++O=[U M-N*9GRU, _U0H16P/9PV;=A+@^Z>3.\OPZW8<%(XRJP "@8[2)Q20$)C@0A, M8%,I89+?C]DRE>Q Y$WC"@3N-$%!> M2"$TY\BEUIXN\\IL=-[:C4V-5 ':]]W=NNG"Q1*T>#(0(\W_KN<_3Q>S>7/M MVB]3,UG8&(;.9L&]6R;%+HESQ&#. *LL"HN642 (#HM681WD&U8R2UV,=< T MB_"%$NK*JR+"<8$K0#?79;@T\E%R)]?-8CJ_E,B:L$%(H(03@-"PJI6N(,"0 M,UGQ2BB:/*C?/:4BG+#Q="XE(+G]\X_U[*:9J?6A$>7WJU+ #' JSDBLDHUX?*VTN&O"9&,D"= MC"Q8"02K:##Y EE:A3^ZU"U>-TPC\ZM(8UO#H8)/5L_\=N>$7YOIU=?ZUMGH M59!Y;[>'E<:R!I MQ8$DG@R#30F*]B(EZF+S#P,E,)77@!B(@*BX F$]\LHYI:Q-7:]]-">*O8#=>:+8 M1\JY0]7M!V)<(H^9*?01X ML!K /%5I6 MV'L%LR((1!K/@8#Q?1*E- AFD0-+-<%>*&?XV/G0]W%(-,@S28U4 0[*>5Q! M[?SN?**F\Y.IC9=O;U;-$BX9=% &&PJPM3:LI;",E'44!*8"8[ZB=/W%XL%: MMVL^16Q8"=%O1H(BH5E[N_S3\M*FK>>+,-3GICVQX7.\P'31K"5G1DE$]1Y] M[(S4,'&,GIHB##,>6]3;F $ET )!" =>0&,4%4;QD0*9,E)3#C(IK0",5@(0 MP8/#@IV/@M#2*PZ%2\[^^TE-]="=)*FI'F!EW)!G[?PI0GY*/ZO),CJN1##S MV#*@@X,2F( 42$4U,+)B,E@XSKJEI,(HS[0M_/:D:3LG<(0IJ#ZP-ZDQR*U( M]Y)XSL(JUK+$28,=!CY&6(1H :2@%E"MJ$.$-;?_ M;T7Q7C56OSQIQM-X&=4@#6C-( EF-@_W>9-5P@0KI43,CBDH" ALNJ#]!@=K MZ04S3'%#4EB$YV/F21ND1W^0+ L(_CN%M%4%&?3Q%!'Y>#G1&! T&0'/-2=0 M(HKMK_KDL3R2T9 J1_N>1;H/4>ZK(/<222@)(0HPBY?OTH?-FAL+#*Z"2"W$ MQ"0O!N@^O;(BK>&ZL5GYD@-UA-T4/KHPB+GO2Z*F]N0Z?N%_EK^.DI?J,-[8 MF:B^+(_>:($JB83F $*# &%+OQT+X(6V6%#J"$[>E;.@W).'C&DG(?",&T"D M=V$AQT?_B)7!@:'(IN\S\6YR3WUT)TFCA1Y@E; C[ZS0X!:ZBDL%G* )+F+&*QW5+R/?A]E47U4H=>95%]L"E!T5Z<_W,KC=7< H]@$$N\5J)0 MO-HIA% 2BEU\6U0O8G651?:1<;EE4O&L4O%!"24D!H2;&S@(#964%*D*H M59#C2K#W4!1U,/1#A5; ]K#M^C^1DCC!)?#02$!*- MX@@:+1RB*2DE78#"=$J!J!"4,A$=+TY@?(Q1 B4Q!RQLI=C#X)S)7XG,T=W8 MU$@5H'W/,R3A\\2M7FE\GBJY1)52VB $K(B589140#"H /3"($.LP##U4T]= MYE6$MY-0&YJ1H3G*VKJ/]4Q=7;7QT:[ Z=J:2 M.VNH%Q!8YS @AL<>PPS'XG;GN;6&H^3WR K*5!*--9:Z HB9"A &*Z 4CD_. MBMB,AT&*?EW@3*$[*3*5?<#*7+UPWC9V8>9G[0_7WM;&+?,D6$B#;&Q(R2H9 M(YS@!%/D@%/>,Q(M.>R4%M]3Q;!I[./+0_8"NTDH^3(T9Q8<@!4'LU4,1;G@ M&BH.D+0LN+0XA$]*8X"0TA"KJH*Z4Z_7;NKS>@+YZJ&&8_I:008*.'?:Z'9#K\/DA.":001S\1+Q_2JD]@QA($6S@%2:138 M< I8 B45A!K"NEW;W3Y&ONJY$=0BD2AS:\1%P-)]/&_KV)XJ,#)UX6N/58'6 MH(I2!12Q<;M%$F@3C"NSA(7-5B#3L3?PKE'R9"1'THIDXLRM%S]^.A?T>:XF MJ\EK)SV2,?^.A0TBD1I($G96QN-A'E::V6Z-PMWKS;_^IQ,8+:)'HO?H9^Z1UFT?H>19Q\.0'GC.$H2[O1[E> M#O%DK \5QW:*!QJ?YP3_,;VI(]&+P/:'\(__3C+-UU2S6(.]6#RLZDX2R;A= MO)B?F_]L;&*\UFAF\2L.0VNS- K!ZCP,.V^OI_;S1%TE0>HEQ2Q9A(-PVBB) M0E"**_YT.K-M.IC62&:)]@^V?J]E40A0_]7\^32_M!9P"^DLP?I!P.V6368 M'_?4^MK9STU[VES?_*$F@Y?;+KI=H&-9H>L@E1(6WNPTN,GNHGF<;HSD$ZZ^ M/?2[X,CS+\%N4BH6SY%@[(2>*!2]0D#[,K7U;6T7J]Y.0X!:(Y4W*-LM\V:? M '(OI17-(.O0E[;S!=K>37JNG5\K;E[,/=TW?.U5W\VY*9)XZF-K9B M_::NW:I(*_%YS!A3S)HCWZP,ZXTPR)KI-3U$7H [+N9WSD>CXTAW@B[OT60WX>1O>[BYDN53NSPO&*D$YS7U).4W>R:=H/3FNS/-K6OOSORK ML5XIPT%ZWVF 4MV1?5AF.')^8T$L^45^^#S?+'N$DMF(_O=S1Z:@L4]8'"2 M?A.];'CME'O320A_Z^.34;R3KJ#\.CCY=7#2"YMOS?2;:U* \I)2OH/&7;)N M]C!>T+[B LGK>GK?&2?\,=D&\XIP-J-VJ&?014RY3=[5U7S%U.!LTTM2V0I M#T5KLR@RX_,PH:F:W,WJ69K:IJU$LQ6##O2]MXHG,WH_YO\^;\U9>S%K/\WF M]?TMGY15\IT&R%8I>BBJ?<26&>&SQ3S8^.GR/E4Z4[J=:K;2T4.QW"N@FC5+UWJHL>TS3K;#[D0(=Q%B@;#_43>3I9C/_'\U MU^[T_K'$K^K/,;#?.5B^@_.4&M!%G@6J0>#X/PLUJ7UM5K._4']]<%/GZ_G@ M8HF#!LQW5)]2';K*M2R5"&9LHJ:K"7^YOHF-#@(#NI[4\[LTOMMA(^:K#4BD M%/TD6TX$EM+%VT$V7P%!@B"L3%]OPP03Q]'K9#N!6%2N:[^,"CH5:-PLQ(7? MW7\6=?MH5](8Y1[#= *YJ-17?QF66@5T?CM6!=!+RDFJ?W9,-D'ES[FZ^V-V M[MIEHZ>I<:D+?[K0'["N@W"&U_H\$LEVX-H#A>W[C28 MB:NFO1M<.K*98CZ8UN7==&0^=R)Y,EF?7NT2%9%L)YRO^FHG%$T_N62&[MPU M"7!ZHI*SIF2_K)L=C.Y"]P1EBQ!^U2J^Y4[SJS[Q5WUB M/VSLORZ:93P^='F\I)2MC&K7ZMC(;&X )I/'::59&NOD\FWK&\7==.$]-RA7 M5_/EK:7I;/J'"HOWQ^+Z^CYO-9M/+_3D<].>W$STY)]M"LQZCY;34]N&6)- M? 7 'N<<6)S]N#6GLWDB=#<2S>G9=01QES!R!S^I<3H8HW$6VC[I-]U$40A* MYVV;'*AUFOG6TP%8;1%([BS=?^9W)W^V=A:GF "J3?3R=5CN9/9VB* 4<$9V M1_J,DR^/MP.F36@>C0_R@K%/?YG)5?"@OM^T<_N:A=0KM-MP^2YI]L2\MP0S M0__/]M/4?H[M+L[\(Q._M=,X\=/;UOZSC6?I=GIU,K6_3V]GM(RE MWP_?)IVP,^M*#*^^3%?S7Y_I.C_!V?AGFV(_/WS4,HS&P=HR6-R9U>6/P.#5 MQ_E&?0]\A']^5/L$:M)_M&Q.81KU.%B\Y5B1D]F97[%QYI<:_,A&8NTX>-!L MUSR3VY"#A)V[C/EAXO?SG=K7^^:]X?L\L4O>3INIG7ULPX=4FI-H"MDNEJ;1 MH[1 9-:JC[?6SL[:L_G/]E.8X>S[W)I&GQ)"D/M1'*=B7=S@H\SG=+)M.KL.,C.^62N[PL3,4^UF*=>5^; M0/?S-,U:VT\]GPD\#,O.\LIM,YUK?VN;Q_?9QHJE0W$4WF\=YJ'7=+Z/L:[&Y:.9JDN+ZWCJM;%U2#EYS&V61'Z$3 M,U^HR>3N7-4V$5";2&;KAW(X7CLDD[NF*AZYAQDNH\9$IG$;S6QM3@X$;H]L MI)C>H6RGG:PPRQ*[N$U3V.I]%/;^+3YO8.&]?,S!^SY2:R?/SM9S,)4OX^3Q5)]ALJ7XN1@W-WAXBR M./R_N?F7J6FN$^70.PV0K]-(,JRWBZTXA%\EF<=">L= G1 O*G=T@!@S([_! M_$3.5\FO-*!W':,3WB5EGWH*K[A%?C;_Z=J1U_?F,3I!75+BJJ?P^7\P_ND! MW$>[$Y(EI;(Z"BLCI _ODS\Z[E^;V:YZK4.>@7])NQ.(I22P=HHGN[>SYGD/ M77X;"7:"JZ0$U"ZQY.Y0&QVJR%$BP#;1ZX1720FC'4(I(<6?Y%6SYX0Z 512 MEF>3&+([(@^'H6Z]:E90F*;!,M9G^%AR7U<0^ MNIEIZ^4Q3*(ZU?WD.X%84@*DN\BR[TNVCO-2$P*KVR?N4AT_[Z/>"=F2M&KY\F3;QKKI^*K"6@9@X%,$.X9)\BY!5S82/%+P:JA7 M:G%@L]^M9(=DH!_)?8@OV0Q_GF CP8R=C*9;+ E:=KE;B=< %8[.N?N%C[8O7Y!*MM%^ -!>2& S*A\7TP<@IJBZ-78YF;N[.>)NAH$SS::V2ZY M]\-ICTCRI_/'P&P'V6RWVOO!ME\P11C Y;SB)1@U3V$$7Y#+=J/]$$.X21 % M&<.+]GHZ3VL+GY',=I?]<%/X6B!E6<)$@&VGFNT:^R [6!QL#P%#>UW?/PJ? MR!*N4\QW<_T0:[A%'D5@]>FOF[I-"=4:P7SWT@]!:K,TB@#JX^)^8@D@>B25 M[Y;Y(>"L2Z (6'XXLVCK>>UF)U=7)[>JG@R^W["#;KY[XH< ME,VQW$7YKYJNIILGW=Q^ED/3_0)QWR&]\B[[ZA_A#JYG[ M___G?P%02P,$% @ <8/_6AS?MM'S!P JR@ !< !PU:;5,C-Q+^GE^A0&4#5;;Q^&4!PU+E!6_B9 L(>"NY M3REY1H-5S(PFDL;&]^OO:6F,;0Q9<[>WL5.A"MLS:K5:W8^>;FGF=&33Y.QT M)'AT]LWIM]4JNU!AD8K,LE +;D7$"B.S._9K),P]JU9+J7.53[6\&UG6J#?: M[%>E[^68^W8K;2+.9GI.#_SUZ8$;Y'2HHNG9:23'3$;O=B0/@E:[>2RBHV&[ M%09M+H*Z.*P'(?0>OCTZ_#W805>(^S[&3A/Q;B>5674D:/Q.JYW;DXF,[*@3 MU.O?[3BYL]-891:#:73V/[V.54U1'$K+FD$M6#9^/;-#.%WHKV_W>>]FT/_0/^\.^E>7 M[/K3S>VG[N6 #:[8S:>//18T>35H[?%]=G7#@G8TN_CPXAPW8$Z#'WOLMG?^ MZ:8_Z/=N6>^W\Q^[ES_T6/=\ ,M9<-QL53;9_NXMZUY<70]Z%TL!P91_?:Q]Z^9[QOU>F/=Y?'_M+OUK-W]"KLMM# C]K.69I3Q M"@N%MC*>,COB]LUN^^CD=8M;9A%BT&D<_A73"6HS8[_JP"3J?L/E.31$1WHN(#H;W[(X7!,X4J M @-PF3&>35F165T(V(ZZPI48B MG*:ZTY F+>8A;FJD4V0_!@.2R*AV60DPQ$S!7W,^T^$ M%J42FD J38+"A6J@B;0C3-#D(G0&DMX.R!(H":Q) M,D==&7#S9&@ .Y*DN$(210(!0$T!#VXXX^P).3) G*B)F>%0BSMIK.88B--- M;S>LK"S RV+?=77E,EWY2TFU6.8Q2/H9D<\" M-#U4R):U!XJ7!HHQ$,WS*6 A0;GW==7+4BB.ZT]@6?UK<,GW-P&7Q[5&BV9_ M(0R*;,3(Y:+/ ZA":3+DA5F_"^6KH0 8RI%\!E2%A@*0SE@:1V60$IG30V7J MG 07B52+A#MTE2EPCI!*2;+4*$&(L,6H1$;N',$40R,CR;6D"4B?J!VU9Z2I M,)0\W6(T+M,ZXE-&P" +HJ5..8H\&18))[[&M)P1\R2,'CZE+U8B^#44) A* M17\1O8Y"-Q*]PXU [U'M[>$J>M?WY>PX:RX=@M/>$_ '@^=''12@/-'2<]3;-KO15+N[9_(5_YG%VW;[JF] M];LG=U07S19 94X\Q(.+()QS$,'H%47$2A'Z:!I'(6J5-H]YV]V RC25U@KQ M)RP_5*@,J#V2L,\IV0-40:J&2!O?5 [/UI?XHY PWZVE(@O=]G__GTW2%\[7 MW00%%@H^"7S1;I3VM:$4 $29##D>^>?X4OE;W3^*MQG\T&[ELKKFF QNM MMK6#6K/1>K&Y7@M>;/LSM8W:\?'+K?^MUE:CUCQZNY;: ^<([PSXV^0\>[?3 MW)EU* '9:>0/+%A^F$\8?>IR[^W%%QV^XJ*]P&)PJ8W]5"33-[O!V_I),ZBX MUT">O&I1>N4+3O@KS_7]=#F);_V$WNRV0#+N\\GCZ:4YK@G7.DUU9RV_K"%: M\I*CK1Q.H7-#1MXXV1+G;II#M\1MU_":I#+$E3WG(REBUGL084%'(>S*[R;^ M\>::WMR[]@>&*!56G+B_ZL4#E^6?*2(67Z[+E7$/.CO^X'\L5EZWFZ]A5R;4 MYUWX$ NYL*M=/O.&7OGI7Q8\<"\I_@=02P,$% @ <8/_6@U::W,:.1;]OK]":]=F M["K -. 7=EQ%;#+CJ92=P:1F]M.6Z%;3*JM;/9(:S/[Z/9*:E\$)GLTD,#6I M"J9;TM5]')U[)729F%1<72:,1E?_N/QGM4IN9%BD+#,D5(P:%I%"\VQ(?HV8 M?B35:MGK6N83Q8>)(8UZXYC\*M4C'U'?;K@1[&HJY_+(/U\>N4DN!S*:7%U& M?$1X]':/1[0>GITTF\W&>;,5-EIG[.3TY"PXBP?A<=!HU?\3[&$HNOLQVDP$ M>[N7\JR:,#M_NW67LVI1K3 ME(M)^X<^3YDF=VQ,>C*EV0\5S12/?1_-_\N@,N2[Q[$WYQ0B!,_8U+R@86WJ M/B5\P UI!K7&LD&?,65![1"!8.K;ZWW=[?5OW]]>=_JW]W?DXZ?>PZ?.79_T M[TGOTXWZ MI\[=CUW2N>Y#CTWG7NN@_5 M^]\^=/\]]7VC7I\MCS]-J=9:I88P6D3,PU8!PM = MS6JAG6ZQ$R9G>TREW',\>@">(ZU!(76"<)3\EA<="KF3((KS6Y "ACQBPY./;?0H3 MF@T9Z8!7>H5 #U>H'Q^P0S?45>KVR3]R6P9F'H-6/K'DLP!-#Q6KR\83Q4L3 MQ9C(VODE4)S7G\&R^GUP20^W 9?GM4;+6G_#-.I[Q,CEHB\# MJ&+39$@+O?D0FZ\&#& H9_(94!8* D Z(ZX=E:$7RYP<6Z;.27"12!43U*&K M3(%SA%1*DK6-'(0(7;04/'+'&KH8:!YQJK@U@/M$[:@]LY(*;9.G6XS:95I' M?%(S*&1 M'90CB*/AX6@EJ]AEE-BGH0QPJ?TQ4H$WP;,=@2E8CR+7D>A6XG> MP5:@]ZQVM BUNJ8JF& *J M.1UPP#FD.07PU+7A2K2I8FGTJ"\4#F0K%UM$89214X!5T\. M68:200#0:&&Y72FV"VIE#UJL*)Z#J?\"L VW K93TNV.J"@<,]F8LCA&D<=' MB(9>4ZS-JH4-F-8_KJ_?'$HQ$"RI?94XD(5Y68--<@&=]6:V!(Z_O"\A@VEQ M[18>\YZ /@YD=H+=!EJT%4";\:./X2H6[)ZX+,A@SB*7 IP_2GJ>8-/^R$2YMW_6O_)_NVC7=D_'.[][D41L5*$SE2C*$2-5'J6M]T+B$Q3;@QCGV'Y@41E8-LC M#OVKMV,1TDXUB! M(BH(-G.L!KBX$^ 25Q6?RW@VDF+$;$++Z+ \R%8E$;(T%W+"T#I.I&<_NH1: MH.RK9/O:*W[^,F[C4S8/@#JFJG"SH+EF[>F7"[!T+NBDS3/G,3?HHA0VD,;( MM&U_^1]9JD<%4/XFZ7#DF^>7 FIU?S' */R/IC.7S377=&2BU;;CH-9LM%YL MKM>"%]L^)[91.S]_N?6/2FTU:LVSDXW$'CE'>&? WSJGV=N]YMYT0 G(=B-_ M(L'R/0*+T167RWSQTL4W7+$W6 DNKY&?"S%YLQ^R M]AL;^FZRG+YWVYHW^RUPB_M<_6%ZR<8-@5JWINYMY)<-NI:,Y @KAU_LB2&Q M#KG8!>=NH4-WP6W7"63]+;/=^V_"W\S9QWL%'?RP(OZUX\'#5A4'@S,C$N:'1M[5EM<]HX$/Y^OV*/S*7M##:V@808DAD*9DHO RF0:^_3C;#E M6%/;)U$ODDE\U(LH"8Y^Z?UJ M&##D?I'05((O*)$T@")GZ1E\#FC^%0RCFC7@V4JPLTB"8SEM^,S%5W9.2KMD M,J9':YQ>H_S=:^A%>DL>K(YZ 3L'%AS66,=J.BVZI,3V]UI!Q^E8;;^SU]YO M'70ZI.,?_&77T!6GESZY7,7TL):PU(BH6M]MM3/9O6"!C%S;LGZKZ7E'O9"G M$A<3Z%Q^+3$VD8@X0S#),]=V$"DC08!\C9B&TK5;9@O')+V4!HG96>IJSK42 M?@WA\Y@+=\?2KZZR&"%)6+QRWRQ80G.8T N8\82D;^HY%2PLY^3L;XHA([[^ M>5'2V4>(F*5T3<]V%"?O,F)+)J'IF/9M0M^A$-X(4E>I_; MVE,[??'!@WE_]KX_\>;&],NQ]R?T!PME<2S+>>PA_C]IM.ZE,:[#O! TC^!W MP?(H)77PJ9 L7-4A*T1>$ Q' @R MHC G8DE2FAO3RYBNH.]+95'9J:.=2#WI4T$$EC->P8QF7.@I)X(CXC%9YG48 MI[X)B#OB(@';,CY!R(7V#%GNDQB^E0! TP!#^EBD='?'WK.Z38Q5]ZZPB!'= MYTD6,\S@!9.1]A?T6\$$53TL5ZM>TWQ+W@$N8K??!N^NR%"_$$PJ!._2CTAZ M1M>,[(-F"T@:E*18B@$F1$/Y6 V"%0AP%/+"C^ZA>XL:84>$:%CB2_+ZT_L$=MJI6X$MN90\<54S/U?;#4M7G6=]M$OS M=9\WK;+72VSP,EBO7)E-;6K(8-/6;IJM5OM!LV7:#]J^![MG6L[#GC^+VMPW MG6;K4; -G8@R&9CO/"/I8:U96SM4JL9ULDNP;TL#)70V4LZSFSKJ"9\^0]S* MNSOM3A=/:KRJ3JI=GM0[2JY*R7_%]HF)OE]IFE><7C:;W9W6?C?7[W>ZQRV" MC]REEN)9>_%)F9"$/K;(U3-3/U(S#)+'+ 57?<.4U"?^\^4\;;T52(6ZD_> MGSS@S[K")UA@%JA_#R@I,8@8#5'OH/:1[)S"- P9BL7-PC=TKW^F+>*=ZMXMXIWJWBWBOC@;QBY?/Z1.^V^J] ]Y9*=W0E M,'YN,"Z/B):)%C7+BA6>%S(39=_N?.JWLOKMX:^ M]OL'4$L! A0#% @ <8/_6EI9+-D(_P EH<1 !$ ( ! M '!R;&(M,C R-3 V,S N:'1M4$L! A0#% @ <8/_6KI\9/8-# M6GD !$ ( !-_\ '!R;&(M,C R-3 V,S N>'-D4$L! A0# M% @ <8/_6@P:"HSH&0 BO4 !4 ( !&UL4$L! A0#% @ <8/_6LF8FIU2<0 UW,% !4 M ( !&2 " '!R;&(M,C R-3 V,S!?<')E+GAM;%!+ 0(4 Q0 M ( '&#_UH XML 66 prlb-20250630_htm.xml IDEA: XBRL DOCUMENT 0001443669 2025-01-01 2025-06-30 0001443669 2025-07-29 0001443669 2025-06-30 0001443669 2024-12-31 0001443669 2025-04-01 2025-06-30 0001443669 2024-04-01 2024-06-30 0001443669 2024-01-01 2024-06-30 0001443669 us-gaap:CommonStockMember 2024-12-31 0001443669 us-gaap:AdditionalPaidInCapitalMember 2024-12-31 0001443669 us-gaap:RetainedEarningsMember 2024-12-31 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2024-12-31 0001443669 us-gaap:CommonStockMember 2025-01-01 2025-03-31 0001443669 us-gaap:AdditionalPaidInCapitalMember 2025-01-01 2025-03-31 0001443669 2025-01-01 2025-03-31 0001443669 us-gaap:RetainedEarningsMember 2025-01-01 2025-03-31 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2025-01-01 2025-03-31 0001443669 us-gaap:CommonStockMember 2025-03-31 0001443669 us-gaap:AdditionalPaidInCapitalMember 2025-03-31 0001443669 us-gaap:RetainedEarningsMember 2025-03-31 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2025-03-31 0001443669 2025-03-31 0001443669 us-gaap:CommonStockMember 2025-04-01 2025-06-30 0001443669 us-gaap:AdditionalPaidInCapitalMember 2025-04-01 2025-06-30 0001443669 us-gaap:RetainedEarningsMember 2025-04-01 2025-06-30 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2025-04-01 2025-06-30 0001443669 us-gaap:CommonStockMember 2025-06-30 0001443669 us-gaap:AdditionalPaidInCapitalMember 2025-06-30 0001443669 us-gaap:RetainedEarningsMember 2025-06-30 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2025-06-30 0001443669 us-gaap:CommonStockMember 2023-12-31 0001443669 us-gaap:AdditionalPaidInCapitalMember 2023-12-31 0001443669 us-gaap:RetainedEarningsMember 2023-12-31 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2023-12-31 0001443669 2023-12-31 0001443669 us-gaap:CommonStockMember 2024-01-01 2024-03-31 0001443669 us-gaap:AdditionalPaidInCapitalMember 2024-01-01 2024-03-31 0001443669 2024-01-01 2024-03-31 0001443669 us-gaap:RetainedEarningsMember 2024-01-01 2024-03-31 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2024-01-01 2024-03-31 0001443669 us-gaap:CommonStockMember 2024-03-31 0001443669 us-gaap:AdditionalPaidInCapitalMember 2024-03-31 0001443669 us-gaap:RetainedEarningsMember 2024-03-31 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2024-03-31 0001443669 2024-03-31 0001443669 us-gaap:CommonStockMember 2024-04-01 2024-06-30 0001443669 us-gaap:AdditionalPaidInCapitalMember 2024-04-01 2024-06-30 0001443669 us-gaap:RetainedEarningsMember 2024-04-01 2024-06-30 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2024-04-01 2024-06-30 0001443669 us-gaap:CommonStockMember 2024-06-30 0001443669 us-gaap:AdditionalPaidInCapitalMember 2024-06-30 0001443669 us-gaap:RetainedEarningsMember 2024-06-30 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2024-06-30 0001443669 2024-06-30 0001443669 us-gaap:NoncompeteAgreementsMember 2025-06-30 0001443669 us-gaap:NoncompeteAgreementsMember 2024-12-31 0001443669 srt:MinimumMember us-gaap:NoncompeteAgreementsMember 2025-06-30 0001443669 srt:MaximumMember us-gaap:NoncompeteAgreementsMember 2025-06-30 0001443669 us-gaap:ComputerSoftwareIntangibleAssetMember 2025-06-30 0001443669 us-gaap:ComputerSoftwareIntangibleAssetMember 2024-12-31 0001443669 prlb:SoftwarePlatformMember 2025-06-30 0001443669 prlb:SoftwarePlatformMember 2024-12-31 0001443669 srt:EuropeMember prlb:A3DHubsInc.HubsMember 2021-01-22 2021-01-22 0001443669 country:US prlb:A3DHubsInc.HubsMember 2021-01-22 2021-01-22 0001443669 2024-01-01 2024-12-31 0001443669 us-gaap:CashMember us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2025-06-30 0001443669 us-gaap:CashMember us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2025-06-30 0001443669 us-gaap:CashMember us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2025-06-30 0001443669 us-gaap:CashMember us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2024-12-31 0001443669 us-gaap:CashMember us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2024-12-31 0001443669 us-gaap:CashMember us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2024-12-31 0001443669 us-gaap:MoneyMarketFundsMember us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2025-06-30 0001443669 us-gaap:MoneyMarketFundsMember us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2025-06-30 0001443669 us-gaap:MoneyMarketFundsMember us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2025-06-30 0001443669 us-gaap:MoneyMarketFundsMember us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2024-12-31 0001443669 us-gaap:MoneyMarketFundsMember us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2024-12-31 0001443669 us-gaap:MoneyMarketFundsMember us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2024-12-31 0001443669 us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2025-06-30 0001443669 us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2025-06-30 0001443669 us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2025-06-30 0001443669 us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2024-12-31 0001443669 us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2024-12-31 0001443669 us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2024-12-31 0001443669 us-gaap:USGovernmentAgenciesDebtSecuritiesMember 2025-06-30 0001443669 us-gaap:CorporateDebtSecuritiesMember 2025-06-30 0001443669 us-gaap:USStatesAndPoliticalSubdivisionsMember 2025-06-30 0001443669 us-gaap:USTreasuryBondSecuritiesMember 2025-06-30 0001443669 us-gaap:USGovernmentAgenciesDebtSecuritiesMember 2024-12-31 0001443669 us-gaap:CorporateDebtSecuritiesMember 2024-12-31 0001443669 us-gaap:USStatesAndPoliticalSubdivisionsMember 2024-12-31 0001443669 us-gaap:USTreasuryBondSecuritiesMember 2024-12-31 0001443669 prlb:LongTermIncentivePlan2022Member 2024-05-23 2024-05-23 0001443669 prlb:LongTermIncentivePlan2022Member 2025-01-01 2025-06-30 0001443669 prlb:LongTermIncentivePlan2022Member 2025-05-20 2025-05-20 0001443669 prlb:ESPPMember 2025-01-01 2025-06-30 0001443669 us-gaap:EmployeeStockOptionMember 2025-01-01 2025-06-30 0001443669 srt:MinimumMember us-gaap:EmployeeStockOptionMember 2025-01-01 2025-06-30 0001443669 srt:MaximumMember us-gaap:EmployeeStockOptionMember 2025-01-01 2025-06-30 0001443669 srt:MinimumMember us-gaap:EmployeeStockOptionMember 2024-01-01 2024-06-30 0001443669 srt:MaximumMember us-gaap:EmployeeStockOptionMember 2024-01-01 2024-06-30 0001443669 us-gaap:EmployeeStockOptionMember 2024-01-01 2024-06-30 0001443669 us-gaap:EmployeeStockOptionMember 2025-06-30 0001443669 srt:MinimumMember us-gaap:RestrictedStockUnitsRSUMember 2025-01-01 2025-06-30 0001443669 srt:MaximumMember us-gaap:RestrictedStockUnitsRSUMember 2025-01-01 2025-06-30 0001443669 us-gaap:RestrictedStockUnitsRSUMember 2024-12-31 0001443669 us-gaap:RestrictedStockUnitsRSUMember 2025-01-01 2025-06-30 0001443669 us-gaap:RestrictedStockUnitsRSUMember 2025-06-30 0001443669 us-gaap:PerformanceSharesMember 2025-06-30 0001443669 us-gaap:PerformanceSharesMember 2025-01-01 2025-06-30 0001443669 us-gaap:PerformanceSharesMember 2024-12-31 0001443669 us-gaap:PerformanceSharesMember prlb:InducementAwardsMember 2025-05-23 2025-05-23 0001443669 us-gaap:PerformanceSharesMember prlb:InducementAwardsMarketConditionMember 2025-05-23 2025-05-23 0001443669 us-gaap:PerformanceSharesMember prlb:InducementAwardsPerformanceConditionMember 2025-05-23 2025-05-23 0001443669 us-gaap:PerformanceSharesMember prlb:InducementAwardsPerformanceConditionMember 2025-05-23 0001443669 srt:MinimumMember us-gaap:PerformanceSharesMember 2025-01-01 2025-06-30 0001443669 srt:MaximumMember us-gaap:PerformanceSharesMember 2025-01-01 2025-06-30 0001443669 us-gaap:PerformanceSharesMember 2024-01-01 2024-06-30 0001443669 prlb:EmployeeStockPurchasePlanMember 2025-01-01 2025-06-30 0001443669 srt:MinimumMember prlb:EmployeeStockPurchasePlanMember 2024-01-01 2024-06-30 0001443669 srt:MaximumMember prlb:EmployeeStockPurchasePlanMember 2024-01-01 2024-06-30 0001443669 prlb:EmployeeStockPurchasePlanMember 2024-01-01 2024-06-30 0001443669 us-gaap:AccumulatedTranslationAdjustmentMember 2025-04-01 2025-06-30 0001443669 us-gaap:AccumulatedTranslationAdjustmentMember 2024-04-01 2024-06-30 0001443669 us-gaap:AccumulatedTranslationAdjustmentMember 2025-01-01 2025-06-30 0001443669 us-gaap:AccumulatedTranslationAdjustmentMember 2024-01-01 2024-06-30 0001443669 us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember 2025-04-01 2025-06-30 0001443669 us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember 2024-04-01 2024-06-30 0001443669 us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember 2025-01-01 2025-06-30 0001443669 us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember 2024-01-01 2024-06-30 0001443669 prlb:UnitedStatesSegmentMember 2025-04-01 2025-06-30 0001443669 prlb:EuropeSegmentMember 2025-04-01 2025-06-30 0001443669 us-gaap:CorporateAndOtherMember 2025-04-01 2025-06-30 0001443669 prlb:UnitedStatesSegmentMember 2024-04-01 2024-06-30 0001443669 prlb:EuropeSegmentMember 2024-04-01 2024-06-30 0001443669 us-gaap:CorporateAndOtherMember 2024-04-01 2024-06-30 0001443669 prlb:UnitedStatesSegmentMember 2025-01-01 2025-06-30 0001443669 prlb:EuropeSegmentMember 2025-01-01 2025-06-30 0001443669 us-gaap:CorporateAndOtherMember 2025-01-01 2025-06-30 0001443669 prlb:UnitedStatesSegmentMember 2024-01-01 2024-06-30 0001443669 prlb:EuropeSegmentMember 2024-01-01 2024-06-30 0001443669 us-gaap:CorporateAndOtherMember 2024-01-01 2024-06-30 0001443669 prlb:UnitedStatesSegmentMember 2025-06-30 0001443669 prlb:UnitedStatesSegmentMember 2024-12-31 0001443669 prlb:EuropeSegmentMember 2025-06-30 0001443669 prlb:EuropeSegmentMember 2024-12-31 0001443669 country:US 2025-04-01 2025-06-30 0001443669 country:US 2024-04-01 2024-06-30 0001443669 country:US 2025-01-01 2025-06-30 0001443669 country:US 2024-01-01 2024-06-30 0001443669 srt:EuropeMember 2025-04-01 2025-06-30 0001443669 srt:EuropeMember 2024-04-01 2024-06-30 0001443669 srt:EuropeMember 2025-01-01 2025-06-30 0001443669 srt:EuropeMember 2024-01-01 2024-06-30 0001443669 prlb:InjectionMoldingProtomoldMember 2025-04-01 2025-06-30 0001443669 prlb:InjectionMoldingProtomoldMember 2024-04-01 2024-06-30 0001443669 prlb:InjectionMoldingProtomoldMember 2025-01-01 2025-06-30 0001443669 prlb:InjectionMoldingProtomoldMember 2024-01-01 2024-06-30 0001443669 prlb:CNCMachiningFirstcutMember 2025-04-01 2025-06-30 0001443669 prlb:CNCMachiningFirstcutMember 2024-04-01 2024-06-30 0001443669 prlb:CNCMachiningFirstcutMember 2025-01-01 2025-06-30 0001443669 prlb:CNCMachiningFirstcutMember 2024-01-01 2024-06-30 0001443669 prlb:ThreeDPrintingFinelineMember 2025-04-01 2025-06-30 0001443669 prlb:ThreeDPrintingFinelineMember 2024-04-01 2024-06-30 0001443669 prlb:ThreeDPrintingFinelineMember 2025-01-01 2025-06-30 0001443669 prlb:ThreeDPrintingFinelineMember 2024-01-01 2024-06-30 0001443669 prlb:SheetMetalMember 2025-04-01 2025-06-30 0001443669 prlb:SheetMetalMember 2024-04-01 2024-06-30 0001443669 prlb:SheetMetalMember 2025-01-01 2025-06-30 0001443669 prlb:SheetMetalMember 2024-01-01 2024-06-30 0001443669 prlb:OtherProductsMember 2025-04-01 2025-06-30 0001443669 prlb:OtherProductsMember 2024-04-01 2024-06-30 0001443669 prlb:OtherProductsMember 2025-01-01 2025-06-30 0001443669 prlb:OtherProductsMember 2024-01-01 2024-06-30 shares iso4217:USD iso4217:USD shares iso4217:EUR pure prlb:performancePeriod 0001443669 --12-31 2025 Q2 false P3Y P6M P3Y 10-Q true 2025-06-30 false 001-35435 Proto Labs, Inc. MN 41-1939628 5540 Pioneer Creek Drive Maple Plain MN 55359 763 479-3680 Common Stock, Par Value $0.001 Per Share PRLB NYSE Yes Yes Large Accelerated Filer false false false 23874757 90382000 89071000 12804000 14019000 2272000 1975000 78011000 66504000 13169000 12305000 1155000 2906000 9985000 10049000 205506000 194854000 215777000 227263000 273991000 273991000 20500000 21422000 20037000 17773000 2308000 2993000 558000 692000 4575000 4524000 743252000 743512000 15583000 15504000 19435000 16550000 25846000 19621000 984000 1287000 316000 309000 62164000 53271000 1402000 1633000 127000 287000 9737000 13565000 5115000 4605000 78545000 73361000 0.001 0.001 10000000 10000000 0 0 0 0 0 0 0.001 0.001 150000000 150000000 23874601 23874601 24226088 24226088 23000 24000 449903000 453705000 239344000 244406000 -24563000 -27984000 664707000 670151000 743252000 743512000 135063000 125631000 261268000 253521000 75289000 69085000 145796000 139508000 59774000 56546000 115472000 114013000 24731000 23291000 48480000 46451000 11173000 10661000 21782000 21828000 18752000 16595000 35600000 32908000 -149000 0 -110000 0 54805000 50547000 105972000 101187000 4969000 5999000 9500000 12826000 1705000 1361000 3159000 2260000 6674000 7360000 12659000 15086000 2247000 2820000 4633000 5278000 4427000 4540000 8026000 9808000 0.19 0.18 0.33 0.39 0.18 0.18 0.33 0.38 23900390 25313036 24018119 25473937 24101592 25372972 24291246 25573344 6755000 3953000 11447000 8389000 24226088 24000 453705000 244406000 -27984000 670151000 58291 961000 961000 3992000 3992000 513739 1000 9621000 11451000 21073000 3599000 3599000 1003000 1003000 90000 90000 4692000 23770640 23000 447115000 236554000 -26891000 656801000 179393 58000 58000 4259000 4259000 75432 1413000 1637000 3050000 4427000 4427000 2300000 2300000 28000 28000 6755000 23874601 23000 449903000 239344000 -24563000 664707000 25721957 26000 466884000 256398000 -28013000 695295000 29974 533000 533000 4276000 4276000 435861 7912000 8252000 16164000 5268000 5268000 -925000 -925000 93000 93000 4436000 25316070 26000 462715000 253414000 -28845000 687310000 176780 707000 707000 4244000 4244000 345234 6266000 4712000 10978000 4540000 4540000 -678000 -678000 91000 91000 3953000 25147616 26000 461400000 253242000 -29432000 685236000 8026000 9808000 17264000 18075000 8251000 8520000 -3985000 -4144000 11000 18000 448000 0 0 20000 -82000 64000 9487000 -113000 983000 -1263000 -338000 829000 1836000 825000 -654000 537000 7980000 1551000 28963000 35781000 2730000 6784000 0 30000 11052000 0 10230000 10419000 -3552000 3665000 2081000 2094000 3117000 1920000 23980000 26940000 153000 146000 -25169000 -26912000 1069000 -175000 1311000 12359000 89071000 83790000 90382000 96149000 Basis of Presentation<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The unaudited interim Consolidated Financial Statements of Proto Labs, Inc. (Protolabs, the Company, we, us or our) have been prepared in accordance with accounting principles generally accepted in the United States of America (U.S. GAAP) for interim financial information and with the instructions to Form 10-Q and Article 10 of Regulation S-X</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">.</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%"> In the opinion of management, the accompanying financial statements reflect all adjustments necessary for a fair presentation of the Company’s statements of financial position, results of operations and cash flows for the periods presented. Except as otherwise disclosed herein, these adjustments consist of normal, recurring items. Operating results for interim periods are not necessarily indicative of results that may</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">be expected for the fiscal year as a whole.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The preparation of the financial statements in conformity with U.S. GAAP requires management to make estimates and assumptions that affect the reported amounts of assets, liabilities, revenues, expenses, and the related disclosures at the date of the financial statements and during the reporting period. Actual results could materially differ from these estimates. For further information, refer to the audited Consolidated Financial Statements and Notes thereto included in the Company’s Annual Report on Form 10-K for the year ended December 31, 2024, as filed with the Securities and Exchange Commission (SEC) on February 21, 2025</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying Consolidated Balance Sheet as of December 31, 2024 was derived from the audited Consolidated Financial Statements but does not include all disclosures required by U.S. GAAP for a full set of financial statements. This Quarterly Report on Form 10-Q should be read in conjunction with the Company’s Consolidated Financial Statements and Notes included in the Company's Annual Report on Form 10-K filed on February 21, 2025</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">as referenced above.</span></div> Recent Accounting Pronouncements<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The Company did not recently adopt any accounting pronouncements that had a material impact on the Company's Consolidated Financial Statements. </span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">In December 2023, the Financial Accounting Standards Board (FASB) issued Accounting Standards Update (ASU) No. 2023-09, </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Income Taxes (Topic 740): Improvements to Income Tax Disclosures</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">, that enhances the transparency of income tax disclosures by expanding annual disclosure requirements related to the rate reconciliation and income taxes paid. The Company is required to adopt this guidance for its annual year ending December 31, 2025. Early adoption is permitted. The Company is currently evaluating the impact of this guidance on its disclosures. </span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">In November 2024, the FASB issued ASU No. 2024-03, </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Income Statement - Reporting Comprehensive Income - Expense Disaggregation Disclosures (Subtopic 220-40): Disaggregation of Income Statement Expenses</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">, which is intended to improve disclosures about a public business entity's expenses, primarily through additional disaggregation of income statement expenses. ASU 2024-03 is effective for annual periods beginning after December 15, 2026, and interim periods beginning after December 15, 2027, with early adoption permitted. The Company is currently evaluating ASU 2024-03 to determine the impact on the Company's disclosures.</span></div> Net Income per Common Share<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Basic net income per share is computed based on the weighted-average number of common shares outstanding. Diluted net income per share is computed based on the weighted-average number of common shares outstanding, increased by the number of additional shares that would have been outstanding had potentially dilutive common shares been issued and reduced by the number of shares the Company could have repurchased from the proceeds from issuance of the potentially dilutive shares. Potentially dilutive shares of common stock include stock options and other stock-based awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan. Performance stock units are excluded from the calculation of dilutive potential common shares until the performance conditions have been satisfied. Anti-dilutive options were excluded from the calculation of diluted weighted average shares outstanding and were 459,386 and 452,239 for the three months ended June 30, 2025</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">and 2024</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">, </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">respectively, and 446,174 and 371,313 for the six months ended June 30, 2025 and 2024, respectively. </span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The table below sets forth the computation of basic and diluted net income per share:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.203%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.557%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr style="height:15pt"><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="9" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:114%">Three Months Ended<br/>June 30,</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="9" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:114%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">(in thousands, except share and per share amounts)</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:114%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:114%">2024</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:114%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:114%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Net income</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">4,427 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">4,540 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">8,026 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">9,808 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:15pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Basic - weighted-average shares outstanding:</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">23,900,390</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">25,313,036</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">24,018,119</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">25,473,937</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Effect of dilutive securities:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Employee stock options and other</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">201,202</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">59,936</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">273,127</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">99,407</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Diluted - weighted-average shares outstanding:</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">24,101,592</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">25,372,972</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">24,291,246</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">25,573,344</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Net income per share:</span></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Basic</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.19 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.18 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.33 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.39 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Diluted</span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.18 </span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.18 </span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.33 </span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.38 </span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:15pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td></tr><tr style="height:3pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="display:none"></td></tr></table></div> 459386 452239 446174 371313 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The table below sets forth the computation of basic and diluted net income per share:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.203%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.557%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr style="height:15pt"><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="9" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:114%">Three Months Ended<br/>June 30,</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="9" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:114%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">(in thousands, except share and per share amounts)</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:114%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:114%">2024</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:114%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:114%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Net income</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">4,427 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">4,540 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">8,026 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">9,808 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:15pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Basic - weighted-average shares outstanding:</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">23,900,390</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">25,313,036</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">24,018,119</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">25,473,937</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Effect of dilutive securities:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Employee stock options and other</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">201,202</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">59,936</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">273,127</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">99,407</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Diluted - weighted-average shares outstanding:</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">24,101,592</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">25,372,972</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">24,291,246</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">25,573,344</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Net income per share:</span></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Basic</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.19 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.18 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.33 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.39 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Diluted</span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.18 </span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.18 </span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.33 </span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">0.38 </span></td><td style="background-color:#cceeff;border-top:3pt double #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:15pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:0 1pt"></td></tr><tr style="height:3pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="display:none"></td></tr></table></div> 4427000 4540000 8026000 9808000 23900390 25313036 24018119 25473937 201202 59936 273127 99407 24101592 25372972 24291246 25573344 0.19 0.18 0.33 0.39 0.18 0.18 0.33 0.38 Goodwill and Other Intangible Assets<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">There were no changes in the carrying amount of goodwill during the three and six months ended June 30, 2025.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets other than goodwill at June 30, 2025 and December 31, 2024 were as follows:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:17.081%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.930%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.021%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.930%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.930%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.021%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.930%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.051%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.964%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr style="height:30pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">June 30, 2025</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">December 31, 2024</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">Useful<br/>Life (in years)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">Weighted Average<br/>Useful Life Remaining<br/>(in years)</span></td></tr><tr style="height:24pt"><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(in thousands)</span></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">Gross</span></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:115%">Accumulated<br/>Amortization</span></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">Net</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">Gross</span></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:115%">Accumulated<br/>Amortization</span></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">Net</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">Intangible assets with finite lives:</span></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">Non-compete agreement</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">851 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(786)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">65 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">819 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(703)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">116 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">2.0 - 5.0</span></div></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">0.4</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">Software technology</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">13,229 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(9,808)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">3,421 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">13,229 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(9,123)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">4,106 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">10.0</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">2.5</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">Software platform</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">27,135 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(10,121)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">17,014 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">25,657 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(8,457)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">17,200 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">12.0</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">7.6</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">Total intangible assets</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">41,215 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(20,715)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">20,500 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">39,705 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(18,283)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">21,422 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets allocated to the Protolabs Network entities consisted of intangible assets of €11.6 million in Europe and $16.6 million in the United States as of the date of the acquisition. The Euro denominated intangible assets are translated at the end of each period using the current exchange rates resulting in a foreign currency translation adjustment that is recorded as a component of Other Comprehensive Income. Foreign currency unrealized losses related to intangible assets were $0.5 million and $2.2 million as of June 30, 2025 and December 31, 2024, respectively. Amortization expense for intangible assets was $0.9 million for each of the three months ended June 30, 2025 and 2024, and $1.8 million and $1.9 million for the six months ended June 30, 2025 and 2024.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets and current exchange rates is as follows:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:85.718%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.082%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">(in thousands)</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Estimated Amortization Expense</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Remaining 2025</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td colspan="2" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 2.96pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">1,862</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">2026</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 2.96pt 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">3,622</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">2027</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 2.96pt 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">3,613</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">2028</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 2.96pt 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">2,244</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">2029</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 2.96pt 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">2,244</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Thereafter</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 2.96pt 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">6,915</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Total estimated amortization expense</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 2.96pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">20,500</span></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> 0 0 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets other than goodwill at June 30, 2025 and December 31, 2024 were as follows:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:17.081%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.930%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.021%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.930%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.930%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.021%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.930%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.051%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.964%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr style="height:30pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">June 30, 2025</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">December 31, 2024</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">Useful<br/>Life (in years)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">Weighted Average<br/>Useful Life Remaining<br/>(in years)</span></td></tr><tr style="height:24pt"><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(in thousands)</span></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">Gross</span></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:115%">Accumulated<br/>Amortization</span></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">Net</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">Gross</span></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:115%">Accumulated<br/>Amortization</span></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:114%">Net</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">Intangible assets with finite lives:</span></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">Non-compete agreement</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">851 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(786)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">65 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">819 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(703)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">116 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">2.0 - 5.0</span></div></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">0.4</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">Software technology</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">13,229 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(9,808)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">3,421 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">13,229 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(9,123)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">4,106 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">10.0</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">2.5</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">Software platform</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">27,135 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(10,121)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">17,014 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">25,657 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(8,457)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">17,200 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">12.0</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">7.6</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">Total intangible assets</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">41,215 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(20,715)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">20,500 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">39,705 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">(18,283)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:400;line-height:114%">21,422 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td></tr></table></div> 851000 786000 65000 819000 703000 116000 P2Y P5Y P0Y4M24D 13229000 9808000 3421000 13229000 9123000 4106000 P10Y P2Y6M 27135000 10121000 17014000 25657000 8457000 17200000 P12Y P7Y7M6D 41215000 20715000 20500000 39705000 18283000 21422000 11600000 16600000 -500000 -2200000 900000 900000 1800000 1900000 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets and current exchange rates is as follows:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:85.718%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.082%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">(in thousands)</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Estimated Amortization Expense</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Remaining 2025</span></td><td style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td colspan="2" style="background-color:#cceeff;border-top:0.75pt solid #000000;padding:2px 2.96pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">1,862</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">2026</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 2.96pt 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">3,622</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">2027</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 2.96pt 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">3,613</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">2028</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 2.96pt 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">2,244</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">2029</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 2.96pt 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">2,244</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Thereafter</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 2.96pt 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">6,915</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">Total estimated amortization expense</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">$</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 2.96pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:114%">20,500</span></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> 1862000 3622000 3613000 2244000 2244000 6915000 20500000 Fair Value Measurements<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Accounting Standards Codification, </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Fair Value Measuremen</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">t (ASC 820), defines fair value as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. ASC 820 also establishes a fair value hierarchy that requires classification based on observable and unobservable inputs when measuring fair value. There are three levels of inputs that may</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">be used to measure fair value:</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Level </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">—</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Quoted prices in active markets for identical assets or liabilities.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Level </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">—</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Observable inputs other than Level 1 prices such as quoted prices for similar assets or liabilities; quoted prices in markets that are </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">not</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%"> active; or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the assets or liabilities.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Level </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">—</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Unobservable inputs that are supported by little or no market activity and that are significant to the fair value of the assets or liabilities.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The Company's assets and liabilities that are required to be measured or disclosed at fair value on a recurring basis include cash and cash equivalents and marketable securities. The Company’s cash consists of bank deposits and cash equivalents consist primarily of money market mutual funds. The Company determines the fair value of these investments using Level 1 inputs. The Company's marketable securities consist of short-term and long-term agency, municipal, corporate and other debt securities. Fair value for the corporate debt securities is primarily determined based on quoted market prices (Level 1). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level 2).</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes financial assets as of June 30, 2025 and December 31, 2024 measured at fair value on a recurring basis: </span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:29.506%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.964%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">June 30, 2025</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">December 31, 2024</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Level 1</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Level 2</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Level 3</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Level 1</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Level 2</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Level 3</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Financial Assets:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Cash</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">82,748 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">86,366 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Money market mutual fund</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">7,634 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2,705 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Marketable securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">16,270 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">16,571 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">17,261 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">14,531 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">106,652 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">16,571 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">106,332 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">14,531 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes financial assets as of June 30, 2025 and December 31, 2024 measured at fair value on a recurring basis: </span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:29.506%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.960%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.964%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">June 30, 2025</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">December 31, 2024</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Level 1</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Level 2</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Level 3</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Level 1</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Level 2</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Level 3</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Financial Assets:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Cash</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">82,748 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">86,366 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Money market mutual fund</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">7,634 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2,705 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Marketable securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">16,270 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">16,571 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">17,261 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">14,531 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">106,652 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">16,571 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">106,332 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">14,531 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> 82748000 0 0 86366000 0 0 7634000 0 0 2705000 0 0 16270000 16571000 0 17261000 14531000 0 106652000 16571000 0 106332000 14531000 0 Marketable Securities<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. The securities are categorized as available-for-sale and are recorded at fair value. The following table summarizes information regarding the Company’s short-term and long-term marketable securities as of June 30, 2025 and December 31, 2024:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">June 30, 2025</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Cost</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Unrealized Gains</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Unrealized Losses</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Fair Value</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">U.S. government agency securities</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,000 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,003 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Corporate debt securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">15,914 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(27)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">15,889 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">U.S. municipal securities</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,954 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">17 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(8)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,963 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">U.S. treasury bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">7,000 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(15)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6,986 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total marketable securities</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">32,868 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">23 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(50)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">32,841 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">December 31, 2024</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Cost</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Unrealized Gains</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Unrealized Losses</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Fair Value</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">U.S. government agency securities</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,323 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(22)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,301 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Corporate debt securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">15,852 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(82)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">15,770 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">U.S. municipal securities</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6,762 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(38)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6,724 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">U.S. treasury bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,000 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(3)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">997 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total marketable securities</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">31,937 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(145)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">31,792 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Fair values for the corporate debt securities are primarily determined based on quoted market prices (Level 1). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level 2).</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Classification of marketable securities as current or non-current is based upon the security’s maturity date as of the date of these financial statements.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The June 30, 2025 balance of available-for-sale debt securities by contractual maturity is shown in the following table at fair value. Actual maturities may</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">differ from contractual maturities because the issuers of the securities may</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">have the right to prepay obligations without prepayment penalties.</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:81.324%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.476%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">June 30,<br/>2025</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Due in one year or less</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">12,804 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Due after one year through five years</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">20,037 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total marketable securities</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">32,841 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> The following table summarizes information regarding the Company’s short-term and long-term marketable securities as of June 30, 2025 and December 31, 2024:<div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">June 30, 2025</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Cost</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Unrealized Gains</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Unrealized Losses</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Fair Value</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">U.S. government agency securities</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,000 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,003 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Corporate debt securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">15,914 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(27)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">15,889 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">U.S. municipal securities</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,954 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">17 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(8)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,963 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">U.S. treasury bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">7,000 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(15)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6,986 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total marketable securities</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">32,868 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">23 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(50)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">32,841 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">December 31, 2024</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Cost</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Unrealized Gains</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Unrealized Losses</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Fair Value</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">U.S. government agency securities</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,323 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(22)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,301 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Corporate debt securities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">15,852 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(82)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">15,770 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">U.S. municipal securities</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6,762 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(38)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6,724 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">U.S. treasury bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,000 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(3)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">997 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total marketable securities</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">31,937 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(145)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">31,792 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> 1000000 3000 0 1003000 15914000 2000 27000 15889000 8954000 17000 8000 8963000 7000000 1000 15000 6986000 32868000 23000 50000 32841000 8323000 0 22000 8301000 15852000 0 82000 15770000 6762000 0 38000 6724000 1000000 0 3000 997000 31937000 0 145000 31792000 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The June 30, 2025 balance of available-for-sale debt securities by contractual maturity is shown in the following table at fair value. Actual maturities may</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">differ from contractual maturities because the issuers of the securities may</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">have the right to prepay obligations without prepayment penalties.</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:81.324%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.476%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">June 30,<br/>2025</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Due in one year or less</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">12,804 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Due after one year through five years</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">20,037 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total marketable securities</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">32,841 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> 12804000 20037000 32841000 Inventory <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Inventory consists primarily of raw materials, which are recorded at the lower of cost and net realizable value using the standard cost method, which approximates first-in, first-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The Company’s inventory consisted of the following as of the dates indicated:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:69.051%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.960%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">June 30,<br/>2025</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">December 31,<br/>2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total inventory</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">13,886 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">12,989 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Allowance for obsolescence</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(717)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(684)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Inventory, net of allowance</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">13,169 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">12,305 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The Company’s inventory consisted of the following as of the dates indicated:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:69.051%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.960%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">June 30,<br/>2025</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">December 31,<br/>2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total inventory</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">13,886 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">12,989 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Allowance for obsolescence</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(717)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(684)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Inventory, net of allowance</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">13,169 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">12,305 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> 13886000 12989000 717000 684000 13169000 12305000 Stock-Based Compensation<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">On July 8, 2022, the board of directors approved the Proto Labs, Inc. 2022 Long-Term Incentive Plan, which was approved by the Company's shareholders at a Special Meeting of Shareholders on August 29, 2022, and subsequently amended and restated by the Company's shareholders at the Annual Meeting of Shareholders on May 23, 2024 (as amended and restated, and subsequently further amended, the 2022 Plan) to increase the number of shares available for issuance pursuant to awards under the 2022 Plan by an additional 430,000 shares, add a minimum vesting requirement, and extend the expiration date so that the term of the 2022 Plan runs for ten years from the date of the shareholder approval. On May 20, 2025, the Company's shareholders approved an amendment to the 2022 Plan to increase the number of shares available for issuance pursuant to awards under the 2022 Plan by an additional 296,000 shares. Under the 2022 Plan, the Company has the ability to grant stock options, stock appreciation rights (SARs), restricted stock, restricted stock units, other stock-based awards and cash incentive awards. Awards under the 2022 Plan have a maximum term of ten years from the date of grant. The compensation and talent committee may provide that the vesting or payment of any award will be subject to the attainment of specified performance measures in addition to the satisfaction of any continued service requirements and the compensation and talent committee will determine whether such measures have been achieved. The per-share exercise price of stock options and SARs granted under the 2022 Plan generally may not be less than the fair market value of a share of our common stock on the date of the grant.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The Company also has outstanding awards under the 2012 Long-Term Incentive Plan, as amended (the 2012 Plan), although the plan expired in February 2022 and no additional awards have since been or will be made under the 2012 Plan. The 2012 Plan provided the Company the ability to grant stock options, SARs, restricted stock, restricted stock units, other stock-based awards and cash incentive awards. Awards under the 2012 Plan that subsequently expired, were forfeited or cancelled, or settled in cash after August 29, 2022 became available for awards under the 2022 Plan.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">On May 23, 2025, the Company granted one-time inducement awards (the "Inducement Awards") within the meaning of the New York Stock Exchange Listed Company Manual Section 303A.08 to the Company's incoming Chief Executive Officer. The Inducement Awards were not granted under the 2022 Plan, but have the same terms and conditions as equity awards granted under the 2022 Plan, except as otherwise provided in the award agreements.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Employee Stock Purchase Plan</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The Company’s 2012 Employee Stock Purchase Plan (ESPP) allows eligible employees to purchase a variable number of shares of the Company’s common stock each offering period at a discount through payroll deductions of up to 15 percent of their eligible compensation, subject to plan limitations. The ESPP provides for six-month offering periods with a single purchase period ending May 15 and November 15, respectively. At the end of each offering period, employees are able to purchase shares at 85 percent of the lower of the fair market value of the Company’s common stock on the first trading day of the offering period or on the last trading day of the offering period.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Stock-Based Compensation Expense</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation expense was $4.3 million and $4.2 million for the three months ended June 30, 2025 and 2024, respectively, and $8.3 million and $8.5 million for the six months ended June 30, 2025 and 2024, respectively.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Stock Options</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes stock option activity during the six months ended June 30, 2025:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Stock Options</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Weighted-<br/>Average<br/>Exercise Price</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Options outstanding at December 31, 2024</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">445,136</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">51.34 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">139,872</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">39.32 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Exercised</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(8,762)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">33.77 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(93,350)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">37.31 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expired</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(16,354)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">87.74 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Options outstanding at June 30, 2025</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">466,542</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">49.60 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:12pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Exercisable at June 30, 2025</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">254,268</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">60.44 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The outstanding options generally have a term of ten years. For employees, options granted become exercisable ratably over the vesting period, which is generally a period of four years, beginning on the first anniversary of the grant date, subject to the employee’s continuing service to the Company.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The weighted-average grant date fair value of options that were granted during the six months ended June 30, 2025 was $21.81.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the six months ended June 30, 2025 and 2024:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Risk-free interest rate</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4.13% - 4.17%</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4.28% - 4.30%</span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected life (years)</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6.25</span></div></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6.25</span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected volatility</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">52.12% - 52.99%</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">50.62% - 50.72%</span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected dividend yield</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">0%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">0%</span></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">As of June 30, 2025, there was $3.9 million of unrecognized compensation expense related to unvested stock options, which is expected to be recognized over a weighted-average period of 3.1 years.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Restricted Stock Units </span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Restricted stock unit (RSU) awards are share-settled awards and restrictions lapse ratably over the vesting period, which is generally a period from <span style="-sec-ix-hidden:f-553">three</span> to four years, beginning on the first anniversary of the grant date, subject to the employee's continuing service to the Company. For the board of directors, restrictions generally lapse in full on the first anniversary of the grant date. </span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes restricted stock units activity during the six months ended June 30, 2025:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Restricted<br/>Stock Units</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Weighted-<br/>Average<br/>Grant Date<br/>Fair Value<br/>Per Share</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Restricted stock units at December 31, 2024</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">763,261</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">38.25 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">278,500</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">39.95 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Restrictions lapsed</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(212,421)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">40.55 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(85,562)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">36.57 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Restricted stock units at June 30, 2025</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">743,778</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">38.42 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">As of June 30, 2025, there was $21.7 million of unrecognized compensation expense related to non-vested restricted stock units, which is expected to be recognized over a weighted-average period of 2.9 years. </span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Performance Stock Units</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Performance stock units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between 0 percent and 200 percent of that target number capable of being earned and vesting at the end of a three-year performance period depending on the Company’s performance in the final year of the performance period and the award recipient’s continued employment. The Company’s PSUs are based on market conditions and the related compensation cost is based on the fair value at grant date calculated using a Monte Carlo pricing model.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes performance stock units activity during the six months ended June 30, 2025:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Performance<br/>Stock Units</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Weighted-<br/>Average<br/>Grant Date<br/>Fair Value<br/>Per Share</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Performance stock units at December 31, 2024</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">180,173</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">60.75 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Granted</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">1</span></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">153,503</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">59.71 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Restrictions lapsed</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(32,977)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">96.41</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Performance change</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">—</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Forfeited</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(68,887)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">57</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Performance stock units at June 30, 2025</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">231,812</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">56.17 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="12" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1 Includes a target number of 54,320 PSUs granted as part of the May 23, 2025, Inducement Awards, 27,160 of which have the same market condition as the PSUs granted under the 2022 Plan as described above, and 27,160 of which also include a performance condition with anywhere between 0 percent and 100 percent of the target number capable of being achieved during two <span style="-sec-ix-hidden:f-590">six</span>-month performance periods and then anywhere between 0 percent and 200 percent of such achieved PSUs capable of being earned and vesting during a <span style="-sec-ix-hidden:f-593">three</span>-year performance period depending on the Company's performance in the final year of the performance period and the award recipient's continued employment.</span></div></td></tr></table></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table provides the assumptions used in the Monte Carlo pricing model valuation of PSUs during the six months ended June 30, 2025 and 2024: </span></div><div style="text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Risk-free interest rate</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3.98% - 4.08%</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4.37%</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected life (years)</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2.61 - 2.85</span></div></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2.88</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected volatility</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">52.40% - 53.20%</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">51.40%</span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected dividend yield</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">0%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">0%</span></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">As of June 30, 2025, there was $8.6 million of unrecognized compensation expense related to non-vested performance stock units, which is expected to be recognized over a weighted-average period of 2.3 years.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Employee Stock Purchase Plan</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table presents the assumptions used to estimate the fair value of the ESPP during the six months ended June 30, 2025 and 2024: </span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Risk-free interest rate</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4.29%</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">5.07% - 5.16%</span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected life (months)</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6.00</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6.00</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected volatility</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">65.60%</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">30.97% - 47.92%</span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected dividend yield</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">0%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">0%</span></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div> 430000 P10Y 296000 P10Y 0.15 P6M 0.85 4300000 4200000 8300000 8500000 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes stock option activity during the six months ended June 30, 2025:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Stock Options</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Weighted-<br/>Average<br/>Exercise Price</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Options outstanding at December 31, 2024</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">445,136</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">51.34 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">139,872</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">39.32 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Exercised</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(8,762)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">33.77 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(93,350)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">37.31 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expired</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(16,354)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">87.74 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Options outstanding at June 30, 2025</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">466,542</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">49.60 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:12pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Exercisable at June 30, 2025</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">254,268</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">60.44 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td></tr></table></div> 445136 51.34 139872 39.32 8762 33.77 93350 37.31 16354 87.74 466542 49.60 254268 60.44 P10Y P4Y 21.81 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the six months ended June 30, 2025 and 2024:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Risk-free interest rate</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4.13% - 4.17%</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4.28% - 4.30%</span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected life (years)</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6.25</span></div></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6.25</span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected volatility</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">52.12% - 52.99%</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">50.62% - 50.72%</span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected dividend yield</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">0%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">0%</span></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td></tr></table></div> 0.0413 0.0417 0.0428 0.0430 P6Y3M P6Y3M 0.5212 0.5299 0.5062 0.5072 0 0 3900000 P3Y1M6D P4Y <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes restricted stock units activity during the six months ended June 30, 2025:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Restricted<br/>Stock Units</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Weighted-<br/>Average<br/>Grant Date<br/>Fair Value<br/>Per Share</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Restricted stock units at December 31, 2024</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">763,261</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">38.25 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Granted</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">278,500</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">39.95 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Restrictions lapsed</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(212,421)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">40.55 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Forfeited</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(85,562)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">36.57 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Restricted stock units at June 30, 2025</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">743,778</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">38.42 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-bottom:1pt solid #000;padding:0 1pt"></td></tr></table></div> 763261 38.25 278500 39.95 212421 40.55 85562 36.57 743778 38.42 21700000 P2Y10M24D 0 2 P3Y <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes performance stock units activity during the six months ended June 30, 2025:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Performance<br/>Stock Units</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Weighted-<br/>Average<br/>Grant Date<br/>Fair Value<br/>Per Share</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Performance stock units at December 31, 2024</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">180,173</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">60.75 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Granted</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">1</span></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">153,503</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">59.71 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Restrictions lapsed</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(32,977)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">96.41</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Performance change</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">—</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Forfeited</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(68,887)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">57</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Performance stock units at June 30, 2025</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">231,812</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">56.17 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="12" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1 Includes a target number of 54,320 PSUs granted as part of the May 23, 2025, Inducement Awards, 27,160 of which have the same market condition as the PSUs granted under the 2022 Plan as described above, and 27,160 of which also include a performance condition with anywhere between 0 percent and 100 percent of the target number capable of being achieved during two <span style="-sec-ix-hidden:f-590">six</span>-month performance periods and then anywhere between 0 percent and 200 percent of such achieved PSUs capable of being earned and vesting during a <span style="-sec-ix-hidden:f-593">three</span>-year performance period depending on the Company's performance in the final year of the performance period and the award recipient's continued employment.</span></div></td></tr></table></div> 180173 60.75 153503 59.71 32977 96.41 0 0 68887 57 231812 56.17 54320 27160 27160 0 1 2 0 2 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table provides the assumptions used in the Monte Carlo pricing model valuation of PSUs during the six months ended June 30, 2025 and 2024: </span></div><div style="text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Risk-free interest rate</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3.98% - 4.08%</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4.37%</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected life (years)</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2.61 - 2.85</span></div></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2.88</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected volatility</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">52.40% - 53.20%</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">51.40%</span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected dividend yield</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">0%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">0%</span></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td></tr></table></div> 0.0398 0.0408 0.0437 P2Y7M9D P2Y10M6D P2Y10M17D 0.5240 0.5320 0.5140 0 0 8600000 P2Y3M18D <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table presents the assumptions used to estimate the fair value of the ESPP during the six months ended June 30, 2025 and 2024: </span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Risk-free interest rate</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4.29%</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">5.07% - 5.16%</span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected life (months)</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6.00</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6.00</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected volatility</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">65.60%</span></div></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">30.97% - 47.92%</span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Expected dividend yield</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">0%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">0%</span></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div> 0.0429 0.0507 0.0516 P6Y P6Y 0.6560 0.3097 0.4792 0 0 Accumulated Other Comprehensive Income (Loss)<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Other comprehensive income (loss) is comprised of foreign currency translation adjustments and net unrealized gains (losses) on investments in securities. </span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table presents the changes in accumulated other comprehensive income (loss) balances during the three and six months ended June 30, 2025 and 2024:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:40.415%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.051%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.054%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Three Months Ended<br/>June 30,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr style="height:12pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Balance at beginning of period</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(26,891)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(28,845)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(27,984)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(28,013)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Foreign currency translation adjustments</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Other comprehensive income (loss) before reclassifications</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2,300 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(678)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3,303 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(1,603)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 28pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Amounts reclassified from accumulated other comprehensive loss</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">- </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 37pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Net current-period other comprehensive income (loss)</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2,300 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(678)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3,303 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(1,603)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Net unrealized gains on investments in securities</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Other comprehensive income before reclassifications</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">28 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">91 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">118 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">184 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 28pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Amounts reclassified from accumulated other comprehensive loss</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 37pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Net current-period other comprehensive income</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">28 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">91 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">118 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">184 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Balance at end of period</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(24,563)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(29,432)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(24,563)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(29,432)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table presents the changes in accumulated other comprehensive income (loss) balances during the three and six months ended June 30, 2025 and 2024:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:40.415%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.051%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.054%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Three Months Ended<br/>June 30,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr style="height:12pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Balance at beginning of period</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(26,891)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(28,845)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(27,984)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(28,013)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Foreign currency translation adjustments</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Other comprehensive income (loss) before reclassifications</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2,300 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(678)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3,303 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(1,603)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 28pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Amounts reclassified from accumulated other comprehensive loss</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">- </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 37pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Net current-period other comprehensive income (loss)</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2,300 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(678)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3,303 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(1,603)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Net unrealized gains on investments in securities</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Other comprehensive income before reclassifications</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">28 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">91 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">118 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">184 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 28pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Amounts reclassified from accumulated other comprehensive loss</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 37pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Net current-period other comprehensive income</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">28 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">91 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">118 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">184 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Balance at end of period</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(24,563)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(29,432)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(24,563)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(29,432)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> -26891000 -28845000 -27984000 -28013000 2300000 -678000 3303000 -1603000 0 0 0 0 2300000 -678000 3303000 -1603000 28000 91000 118000 184000 0 0 0 0 28000 91000 118000 184000 -24563000 -29432000 -24563000 -29432000 Income Taxes<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The Company is subject to income tax in multiple jurisdictions and the use of estimates is required to determine the provision for income taxes. For the three months ended June 30, 2025 and 2024, the Company recorded an income tax provision of $2.2 million and $2.8 million, respectively. For the six months ended June 30, 2025 and 2024, the Company recorded an income tax provision of $4.6 million and $5.3 million, respectively. The income tax provision is based on the estimated annual effective tax rate for the year applied to pre-tax income. The effective income tax rate for the three months ended June 30, 2025 was 33.7 percent compared to 38.3 percent in the same period of the prior year. The effective tax rate decreased by 4.6 percent for the three months ended June 30, 2025 when compared to the same period in 2024, primarily due to a decrease in tax expense from the vesting of restricted stock units and the exercise of stock options. The effective income tax rate for the six months ended June 30, 2025 was 36.6 percent compared to 35.0 percent in the same period of the prior year. The effective tax rate increased by 1.6 percent for the six months ended June 30, 2025 when compared to the same period in 2024, primarily due to an increase in losses in jurisdictions that are not eligible for tax benefits due to valuation allowances.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The effective income tax rate for the three and six months ended June 30, 2025 differs from the U.S. federal statutory rate of 21.0 percent due to various factors, including operating in multiple state and foreign jurisdictions partially offset by tax credits for which the Company qualifies.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The Company had unrecognized tax benefits totaling $3.7 million as of June 30, 2025 and $3.4 million as of December 31, 2024, respectively, that if recognized would result in a reduction of the Company’s effective tax rate. The liabilities are classified as other long-term liabilities in the accompanying consolidated balance sheets. The Company recognizes interest and penalties related to income tax matters in income tax expense and reports the liability in current or long-term income taxes payable as appropriate. </span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">On July 4, 2025, the U.S. enacted H.R. 1 "A bill to provide for reconciliation pursuant to Title II of H. Con. Res. 14", commonly referred to as the One Big Beautiful Bill Act (OBBBA). Changes in tax laws may affect recorded deferred tax assets and deferred tax liabilities and our effective tax rate in the future and we continue to evaluate the impacts the new legislation will have on the Condensed Consolidated Financial Statements. As a result of the enactment of H.R. 1, we anticipate an impact to the deferred tax liability and the income tax payable related to the provisions for 100% bonus depreciation for assets placed in service after January 19, 2025 and full expensing of domestic research and experimental expenditures. We do not expect any material change to our ongoing tax rate as a result of this legislation.</span></div> 2200000 2800000 4600000 5300000 0.337 0.383 -0.046 0.366 0.350 0.016 0.210 0.210 3700000 3400000 Segment Reporting<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The Company’s reportable segments are based on the internal reporting used by the Company’s Chief Executive Officer, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Company’s reportable segments are based upon geographic region, consisting of the United States and Europe. The Corporate Unallocated category includes non-reportable segments, as well as research and development and general and administrative costs that the Company does not allocate directly to its operating segments.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Intercompany transactions primarily relate to intercontinental activity and have been eliminated and are excluded from the reported amounts. The difference between income from operations and pre-tax income relates to foreign currency-related gains and losses and interest income on cash balances and investments, which are not allocated to business segments. </span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes selected financial information by reportable segments:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:26.778%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.051%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.053%"></td><td style="width:0.1%"></td></tr><tr><td colspan="24" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Three Months Ended June 30, 2025</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Corporate Unallocated</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Total</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Revenue</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">110,712 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">24,351 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">135,063 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Segment expenses</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">1</span></div></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">83,025 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">29,170 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">17,750 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">129,945 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Exit, Disposal and Goodwill impairment costs</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">149 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">149 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Income (Loss) from Operations</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">27,687 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(4,968)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(17,750)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4,969 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:26.778%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.051%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.053%"></td><td style="width:0.1%"></td></tr><tr><td colspan="24" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Three Months Ended June 30, 2024</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Corporate Unallocated</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Total</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Revenue</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">98,541 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">27,090 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">125,631 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Segment expenses</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">1</span></div></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">74,300 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">28,822 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">16,510 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">119,632 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Exit, Disposal and Goodwill impairment costs</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Income (Loss) from Operations</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">24,241 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(1,732)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(16,510)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">5,999 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:26.778%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.051%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.053%"></td><td style="width:0.1%"></td></tr><tr><td colspan="24" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended June 30, 2025</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Corporate Unallocated</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Total</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Revenue</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">210,979 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">50,289 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">261,268 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Segment expenses</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">1</span></div></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">157,795 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">58,970 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">34,893 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">251,658 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Exit, Disposal and Goodwill impairment costs</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">110 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">110 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Income (Loss) from Operations</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">53,184 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(8,791)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(34,893)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">9,500 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:26.778%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.051%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.053%"></td><td style="width:0.1%"></td></tr><tr><td colspan="24" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended June 30, 2024</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Corporate Unallocated</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Total</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Revenue</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">200,022 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">53,499 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">253,521 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Segment expenses</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">1</span></div></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">149,449 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">57,675 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">33,571 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">240,695 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Exit, Disposal and Goodwill impairment costs</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Income (Loss) from Operations</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">50,573 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(4,176)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(33,571)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">12,826 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt;padding-left:36pt;text-indent:-9pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">1 </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Segment expenses consist primarily of raw materials, equipment depreciation, employee compensation including benefits, commissions and stock-based compensation, facilities costs and overhead allocations associated with the manufacturing process for molds and custom parts, marketing programs such as electronic, print and pay-per-click advertising and trade shows and other related costs for our United States and Europe reportable segments. Segment expenses for our Corporate Unallocated reportable segment consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements of existing product </span></div><div style="margin-top:10pt;padding-left:36pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">lines, software developed for internal use, maintenance of internally developed software, quality assurance and testing, employee compensation including benefits and stock-based compensation, severance, professional service fees related to accounting, tax and legal, and other related overhead costs.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total long-lived assets, expenditures for additions to long-lived assets, and depreciation and amortization expense were as follows:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">June 30,<br/>2025</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">December 31,<br/>2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Total long-lived assets:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">United States</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">171,170 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">181,291 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Europe</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">44,607 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">45,972 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total Long-lived Assets</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">215,777 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">227,263 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Three Months Ended<br/>June 30,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Expenditures for additions to long-lived assets:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">United States</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,125 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3,532 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2,293 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4,366 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Europe</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">343 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">665 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">437 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2,418 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total expenditures for additions to long-lived assets</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,468 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4,197 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2,730 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6,784 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Three Months Ended<br/>June 30,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Depreciation and Amortization:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">United States</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">7,003 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">7,186 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">14,012 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">14,511 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Europe</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,484 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,732 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3,090 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3,476 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Corporate Unallocated</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">83 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">54 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">162 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">88 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total depreciation and amortization</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,570 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,972 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">17,264 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">18,075 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Revenue by product line the three and six months ended June 30, 2025 and 2024 were as follows:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Three Months Ended<br/>June 30,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(dollars in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Revenue:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Injection Molding</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">47,415 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">49,080 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">96,138 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">101,743 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">CNC Machining</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">61,945 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">51,239 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">114,788 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">101,171 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3D Printing</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">21,215 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">21,281 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">41,409 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">42,863 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Sheet Metal</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4,303 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3,922 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,514 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">7,475 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Other Revenue</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">185 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">109 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">419 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">269 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total Revenue</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">135,063 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">125,631 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">261,268 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">253,521 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes selected financial information by reportable segments:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:26.778%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.051%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.053%"></td><td style="width:0.1%"></td></tr><tr><td colspan="24" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Three Months Ended June 30, 2025</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Corporate Unallocated</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Total</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Revenue</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">110,712 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">24,351 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">135,063 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Segment expenses</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">1</span></div></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">83,025 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">29,170 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">17,750 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">129,945 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Exit, Disposal and Goodwill impairment costs</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">149 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">149 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Income (Loss) from Operations</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">27,687 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(4,968)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(17,750)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4,969 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:26.778%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.051%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.053%"></td><td style="width:0.1%"></td></tr><tr><td colspan="24" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Three Months Ended June 30, 2024</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Corporate Unallocated</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Total</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Revenue</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">98,541 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">27,090 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">125,631 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Segment expenses</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">1</span></div></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">74,300 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">28,822 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">16,510 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">119,632 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Exit, Disposal and Goodwill impairment costs</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Income (Loss) from Operations</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">24,241 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(1,732)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(16,510)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">5,999 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:26.778%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.051%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.053%"></td><td style="width:0.1%"></td></tr><tr><td colspan="24" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended June 30, 2025</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Corporate Unallocated</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Total</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Revenue</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">210,979 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">50,289 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">261,268 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Segment expenses</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">1</span></div></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">157,795 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">58,970 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">34,893 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">251,658 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Exit, Disposal and Goodwill impairment costs</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">110 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">110 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Income (Loss) from Operations</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">53,184 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(8,791)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(34,893)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">9,500 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:26.778%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.900%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.051%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.053%"></td><td style="width:0.1%"></td></tr><tr><td colspan="24" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended June 30, 2024</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">United States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Corporate Unallocated</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:9pt;font-weight:700;line-height:120%">Total</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Revenue</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">200,022 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">53,499 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">253,521 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Segment expenses</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">1</span></div></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">149,449 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">57,675 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">33,571 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">240,695 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Exit, Disposal and Goodwill impairment costs</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Income (Loss) from Operations</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">50,573 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(4,176)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(33,571)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">12,826 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div><div style="margin-top:10pt;padding-left:36pt;text-indent:-9pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">1 </span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Segment expenses consist primarily of raw materials, equipment depreciation, employee compensation including benefits, commissions and stock-based compensation, facilities costs and overhead allocations associated with the manufacturing process for molds and custom parts, marketing programs such as electronic, print and pay-per-click advertising and trade shows and other related costs for our United States and Europe reportable segments. Segment expenses for our Corporate Unallocated reportable segment consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements of existing product </span></div><div style="margin-top:10pt;padding-left:36pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">lines, software developed for internal use, maintenance of internally developed software, quality assurance and testing, employee compensation including benefits and stock-based compensation, severance, professional service fees related to accounting, tax and legal, and other related overhead costs.</span></div> 110712000 24351000 0 135063000 83025000 29170000 17750000 129945000 0 149000 0 149000 27687000 -4968000 -17750000 4969000 98541000 27090000 0 125631000 74300000 28822000 16510000 119632000 0 0 0 0 24241000 -1732000 -16510000 5999000 210979000 50289000 0 261268000 157795000 58970000 34893000 251658000 0 110000 0 110000 53184000 -8791000 -34893000 9500000 200022000 53499000 0 253521000 149449000 57675000 33571000 240695000 0 0 0 0 50573000 -4176000 -33571000 12826000 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total long-lived assets, expenditures for additions to long-lived assets, and depreciation and amortization expense were as follows:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:71.930%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.083%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">June 30,<br/>2025</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">December 31,<br/>2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Total long-lived assets:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">United States</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">171,170 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">181,291 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Europe</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">44,607 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">45,972 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total Long-lived Assets</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">215,777 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">227,263 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 1pt"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr></table></div> 171170000 181291000 44607000 45972000 215777000 227263000 <div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Three Months Ended<br/>June 30,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Expenditures for additions to long-lived assets:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">United States</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,125 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3,532 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2,293 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4,366 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Europe</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">343 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">665 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">437 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2,418 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total expenditures for additions to long-lived assets</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,468 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4,197 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">2,730 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">6,784 </span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> 1125000 3532000 2293000 4366000 343000 665000 437000 2418000 1468000 4197000 2730000 6784000 <div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Three Months Ended<br/>June 30,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Depreciation and Amortization:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">United States</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">7,003 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">7,186 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">14,012 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">14,511 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Europe</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,484 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">1,732 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3,090 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3,476 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Corporate Unallocated</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">83 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">54 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">162 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">88 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total depreciation and amortization</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,570 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,972 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">17,264 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">18,075 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> 7003000 7186000 14012000 14511000 1484000 1732000 3090000 3476000 83000 54000 162000 88000 8570000 8972000 17264000 18075000 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Revenue by product line the three and six months ended June 30, 2025 and 2024 were as follows:</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr style="height:9pt"><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Three Months Ended<br/>June 30,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended<br/>June 30,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(dollars in thousands)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2025</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">2024</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Revenue:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Injection Molding</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">47,415 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">49,080 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">96,138 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">101,743 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">CNC Machining</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">61,945 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">51,239 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">114,788 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">101,171 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3D Printing</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">21,215 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">21,281 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">41,409 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">42,863 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Sheet Metal</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">4,303 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">3,922 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">8,514 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">7,475 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Other Revenue</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">185 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">109 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">419 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">269 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Total Revenue</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">135,063 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">125,631 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">261,268 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">253,521 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000;border-top:3pt double #000;padding:0 1pt"></td></tr></table></div> 47415000 49080000 96138000 101743000 61945000 51239000 114788000 101171000 21215000 21281000 41409000 42863000 4303000 3922000 8514000 7475000 185000 109000 419000 269000 135063000 125631000 261268000 253521000 false false false false