0001628280-23-027513.txt : 20230804 0001628280-23-027513.hdr.sgml : 20230804 20230804152036 ACCESSION NUMBER: 0001628280-23-027513 CONFORMED SUBMISSION TYPE: 10-Q PUBLIC DOCUMENT COUNT: 63 CONFORMED PERIOD OF REPORT: 20230630 FILED AS OF DATE: 20230804 DATE AS OF CHANGE: 20230804 FILER: COMPANY DATA: COMPANY CONFORMED NAME: Proto Labs Inc CENTRAL INDEX KEY: 0001443669 STANDARD INDUSTRIAL CLASSIFICATION: FABRICATED STRUCTURAL METAL PRODUCTS [3440] IRS NUMBER: 000000000 FISCAL YEAR END: 1231 FILING VALUES: FORM TYPE: 10-Q SEC ACT: 1934 Act SEC FILE NUMBER: 001-35435 FILM NUMBER: 231143706 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-20230630.htm 10-Q prlb-20230630
000144366912-312023Q2falseP3Y00014436692023-01-012023-06-3000014436692023-08-01xbrli:shares00014436692023-06-30iso4217:USD00014436692022-12-31iso4217:USDxbrli:shares00014436692023-04-012023-06-3000014436692022-04-012022-06-3000014436692022-01-012022-06-300001443669us-gaap:CommonStockMember2022-12-310001443669us-gaap:AdditionalPaidInCapitalMember2022-12-310001443669us-gaap:RetainedEarningsMember2022-12-310001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2022-12-310001443669us-gaap:CommonStockMember2023-01-012023-03-310001443669us-gaap:AdditionalPaidInCapitalMember2023-01-012023-03-3100014436692023-01-012023-03-310001443669us-gaap:RetainedEarningsMember2023-01-012023-03-310001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2023-01-012023-03-310001443669us-gaap:CommonStockMember2023-03-310001443669us-gaap:AdditionalPaidInCapitalMember2023-03-310001443669us-gaap:RetainedEarningsMember2023-03-310001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2023-03-3100014436692023-03-310001443669us-gaap:CommonStockMember2023-04-012023-06-300001443669us-gaap:AdditionalPaidInCapitalMember2023-04-012023-06-300001443669us-gaap:RetainedEarningsMember2023-04-012023-06-300001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2023-04-012023-06-300001443669us-gaap:CommonStockMember2023-06-300001443669us-gaap:AdditionalPaidInCapitalMember2023-06-300001443669us-gaap:RetainedEarningsMember2023-06-300001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2023-06-300001443669us-gaap:CommonStockMember2021-12-310001443669us-gaap:AdditionalPaidInCapitalMember2021-12-310001443669us-gaap:RetainedEarningsMember2021-12-310001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2021-12-3100014436692021-12-310001443669us-gaap:CommonStockMember2022-01-012022-03-310001443669us-gaap:AdditionalPaidInCapitalMember2022-01-012022-03-3100014436692022-01-012022-03-310001443669us-gaap:RetainedEarningsMember2022-01-012022-03-310001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2022-01-012022-03-310001443669us-gaap:CommonStockMember2022-03-310001443669us-gaap:AdditionalPaidInCapitalMember2022-03-310001443669us-gaap:RetainedEarningsMember2022-03-310001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2022-03-3100014436692022-03-310001443669us-gaap:CommonStockMember2022-04-012022-06-300001443669us-gaap:AdditionalPaidInCapitalMember2022-04-012022-06-300001443669us-gaap:RetainedEarningsMember2022-04-012022-06-300001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2022-04-012022-06-300001443669us-gaap:CommonStockMember2022-06-300001443669us-gaap:AdditionalPaidInCapitalMember2022-06-300001443669us-gaap:RetainedEarningsMember2022-06-300001443669us-gaap:AccumulatedOtherComprehensiveIncomeMember2022-06-3000014436692022-06-300001443669prlb:EmployeeStockOptionAndOtherMember2023-04-012023-06-300001443669us-gaap:MarketingRelatedIntangibleAssetsMember2023-06-300001443669us-gaap:MarketingRelatedIntangibleAssetsMember2022-12-310001443669us-gaap:NoncompeteAgreementsMember2023-06-300001443669us-gaap:NoncompeteAgreementsMember2022-12-310001443669us-gaap:NoncompeteAgreementsMembersrt:MinimumMember2023-06-300001443669us-gaap:NoncompeteAgreementsMembersrt:MaximumMember2023-06-300001443669us-gaap:ComputerSoftwareIntangibleAssetMember2023-06-300001443669us-gaap:ComputerSoftwareIntangibleAssetMember2022-12-310001443669prlb:SoftwarePlatformMember2023-06-300001443669prlb:SoftwarePlatformMember2022-12-310001443669us-gaap:TradeNamesMember2023-06-300001443669us-gaap:TradeNamesMember2022-12-310001443669us-gaap:CustomerRelationshipsMember2023-06-300001443669us-gaap:CustomerRelationshipsMember2022-12-310001443669us-gaap:CustomerRelationshipsMembersrt:MinimumMember2023-06-300001443669srt:MaximumMemberus-gaap:CustomerRelationshipsMember2023-06-300001443669srt:EuropeMemberprlb:Acquired3dHubsMember2021-01-222021-01-22iso4217:EUR0001443669country:USprlb:Acquired3dHubsMember2021-01-222021-01-2200014436692022-01-012022-12-310001443669us-gaap:CashMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel1Member2023-06-300001443669us-gaap:CashMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel2Member2023-06-300001443669us-gaap:CashMemberus-gaap:FairValueInputsLevel3Memberus-gaap:FairValueMeasurementsRecurringMember2023-06-300001443669us-gaap:CashMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel1Member2022-12-310001443669us-gaap:CashMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel2Member2022-12-310001443669us-gaap:CashMemberus-gaap:FairValueInputsLevel3Memberus-gaap:FairValueMeasurementsRecurringMember2022-12-310001443669us-gaap:MoneyMarketFundsMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel1Member2023-06-300001443669us-gaap:MoneyMarketFundsMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel2Member2023-06-300001443669us-gaap:MoneyMarketFundsMemberus-gaap:FairValueInputsLevel3Memberus-gaap:FairValueMeasurementsRecurringMember2023-06-300001443669us-gaap:MoneyMarketFundsMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel1Member2022-12-310001443669us-gaap:MoneyMarketFundsMemberus-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel2Member2022-12-310001443669us-gaap:MoneyMarketFundsMemberus-gaap:FairValueInputsLevel3Memberus-gaap:FairValueMeasurementsRecurringMember2022-12-310001443669us-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel1Member2023-06-300001443669us-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel2Member2023-06-300001443669us-gaap:FairValueInputsLevel3Memberus-gaap:FairValueMeasurementsRecurringMember2023-06-300001443669us-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel1Member2022-12-310001443669us-gaap:FairValueMeasurementsRecurringMemberus-gaap:FairValueInputsLevel2Member2022-12-310001443669us-gaap:FairValueInputsLevel3Memberus-gaap:FairValueMeasurementsRecurringMember2022-12-310001443669us-gaap:USStatesAndPoliticalSubdivisionsMember2023-06-300001443669us-gaap:CorporateDebtSecuritiesMember2023-06-300001443669us-gaap:USGovernmentAgenciesDebtSecuritiesMember2023-06-300001443669us-gaap:BankTimeDepositsMember2023-06-300001443669us-gaap:USStatesAndPoliticalSubdivisionsMember2022-12-310001443669us-gaap:CorporateDebtSecuritiesMember2022-12-310001443669us-gaap:USGovernmentAgenciesDebtSecuritiesMember2022-12-310001443669us-gaap:BankTimeDepositsMember2022-12-310001443669prlb:LongtermIncentivePlan2012Member2022-02-232022-08-290001443669prlb:LongtermIncentivePlan2012Member2023-01-012023-06-300001443669prlb:ESPPMember2023-01-012023-06-30xbrli:pure0001443669us-gaap:EmployeeStockOptionMember2023-01-012023-06-300001443669us-gaap:EmployeeStockOptionMembersrt:MinimumMember2023-01-012023-06-300001443669srt:MaximumMemberus-gaap:EmployeeStockOptionMember2023-01-012023-06-300001443669us-gaap:EmployeeStockOptionMember2022-01-012022-06-300001443669us-gaap:EmployeeStockOptionMember2023-06-300001443669us-gaap:RestrictedStockMembersrt:MinimumMember2023-01-012023-06-300001443669srt:MaximumMemberus-gaap:RestrictedStockMember2023-01-012023-06-300001443669us-gaap:RestrictedStockMember2022-12-310001443669us-gaap:RestrictedStockMember2021-12-310001443669us-gaap:RestrictedStockMember2023-01-012023-06-300001443669us-gaap:RestrictedStockMember2022-01-012022-06-300001443669us-gaap:RestrictedStockMember2023-06-300001443669us-gaap:RestrictedStockMember2022-06-300001443669us-gaap:PerformanceSharesMember2023-06-300001443669us-gaap:PerformanceSharesMember2023-01-012023-06-300001443669us-gaap:PerformanceSharesMember2022-12-310001443669us-gaap:PerformanceSharesMember2022-01-012022-06-300001443669prlb:EmployeeStockPurchasePlanMembersrt:MinimumMember2023-01-012023-06-300001443669srt:MaximumMemberprlb:EmployeeStockPurchasePlanMember2023-01-012023-06-300001443669prlb:EmployeeStockPurchasePlanMembersrt:MinimumMember2022-01-012022-06-300001443669srt:MaximumMemberprlb:EmployeeStockPurchasePlanMember2022-01-012022-06-300001443669prlb:EmployeeStockPurchasePlanMember2023-01-012023-06-300001443669prlb:EmployeeStockPurchasePlanMember2022-01-012022-06-300001443669us-gaap:AccumulatedTranslationAdjustmentMember2023-01-012023-06-300001443669us-gaap:AccumulatedTranslationAdjustmentMember2023-04-012023-06-300001443669us-gaap:AccumulatedTranslationAdjustmentMember2022-04-012022-06-300001443669us-gaap:AccumulatedTranslationAdjustmentMember2022-01-012022-06-300001443669us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember2023-04-012023-06-300001443669us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember2022-04-012022-06-300001443669us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember2023-01-012023-06-300001443669us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember2022-01-012022-06-300001443669prlb:UnitedStatesSegmentMemberus-gaap:OperatingSegmentsMember2023-04-012023-06-300001443669prlb:UnitedStatesSegmentMemberus-gaap:OperatingSegmentsMember2022-04-012022-06-300001443669prlb:UnitedStatesSegmentMemberus-gaap:OperatingSegmentsMember2023-01-012023-06-300001443669prlb:UnitedStatesSegmentMemberus-gaap:OperatingSegmentsMember2022-01-012022-06-300001443669prlb:EuropeSegmentMemberus-gaap:OperatingSegmentsMember2023-04-012023-06-300001443669prlb:EuropeSegmentMemberus-gaap:OperatingSegmentsMember2022-04-012022-06-300001443669prlb:EuropeSegmentMemberus-gaap:OperatingSegmentsMember2023-01-012023-06-300001443669prlb:EuropeSegmentMemberus-gaap:OperatingSegmentsMember2022-01-012022-06-300001443669us-gaap:OperatingSegmentsMemberprlb:JapanSegmentMember2023-04-012023-06-300001443669us-gaap:OperatingSegmentsMemberprlb:JapanSegmentMember2022-04-012022-06-300001443669us-gaap:OperatingSegmentsMemberprlb:JapanSegmentMember2023-01-012023-06-300001443669us-gaap:OperatingSegmentsMemberprlb:JapanSegmentMember2022-01-012022-06-300001443669us-gaap:OperatingSegmentsMember2023-04-012023-06-300001443669us-gaap:OperatingSegmentsMember2022-04-012022-06-300001443669us-gaap:OperatingSegmentsMember2023-01-012023-06-300001443669us-gaap:OperatingSegmentsMember2022-01-012022-06-300001443669prlb:CorporateUnallocatedAndJapanSegmentMemberus-gaap:OperatingSegmentsMember2023-04-012023-06-300001443669prlb:CorporateUnallocatedAndJapanSegmentMemberus-gaap:OperatingSegmentsMember2022-04-012022-06-300001443669prlb:CorporateUnallocatedAndJapanSegmentMemberus-gaap:OperatingSegmentsMember2023-01-012023-06-300001443669prlb:CorporateUnallocatedAndJapanSegmentMemberus-gaap:OperatingSegmentsMember2022-01-012022-06-300001443669prlb:UnitedStatesSegmentMemberus-gaap:OperatingSegmentsMember2023-06-300001443669prlb:UnitedStatesSegmentMemberus-gaap:OperatingSegmentsMember2022-12-310001443669prlb:EuropeSegmentMemberus-gaap:OperatingSegmentsMember2023-06-300001443669prlb:EuropeSegmentMemberus-gaap:OperatingSegmentsMember2022-12-310001443669us-gaap:OperatingSegmentsMemberprlb:JapanSegmentMember2023-06-300001443669us-gaap:OperatingSegmentsMemberprlb:JapanSegmentMember2022-12-310001443669us-gaap:OperatingSegmentsMember2023-06-300001443669us-gaap:OperatingSegmentsMember2022-12-310001443669prlb:InjectionMoldingProtomoldMember2023-04-012023-06-300001443669prlb:InjectionMoldingProtomoldMember2022-04-012022-06-300001443669prlb:InjectionMoldingProtomoldMember2023-01-012023-06-300001443669prlb:InjectionMoldingProtomoldMember2022-01-012022-06-300001443669prlb:CNCMachiningFirstcutMember2023-04-012023-06-300001443669prlb:CNCMachiningFirstcutMember2022-04-012022-06-300001443669prlb:CNCMachiningFirstcutMember2023-01-012023-06-300001443669prlb:CNCMachiningFirstcutMember2022-01-012022-06-300001443669prlb:ThreeDPrintingFinelineMember2023-04-012023-06-300001443669prlb:ThreeDPrintingFinelineMember2022-04-012022-06-300001443669prlb:ThreeDPrintingFinelineMember2023-01-012023-06-300001443669prlb:ThreeDPrintingFinelineMember2022-01-012022-06-300001443669prlb:SheetMetalMember2023-04-012023-06-300001443669prlb:SheetMetalMember2022-04-012022-06-300001443669prlb:SheetMetalMember2023-01-012023-06-300001443669prlb:SheetMetalMember2022-01-012022-06-300001443669prlb:OtherProductsMember2023-04-012023-06-300001443669prlb:OtherProductsMember2022-04-012022-06-300001443669prlb:OtherProductsMember2023-01-012023-06-300001443669prlb:OtherProductsMember2022-01-012022-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, 2023
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: 26,095,434 shares of Common Stock, par value $0.001 per share, were outstanding at August 1, 2023.


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,
2023
December 31,
2022
(Unaudited)
Assets
Current assets
Cash and cash equivalents$66,493 $56,558 
Short-term marketable securities19,945 23,568 
Accounts receivable, net of allowance for doubtful accounts of $2,209 and $1,706 as of June 30, 2023, and December 31, 2022, respectively
75,034 76,225 
Inventory14,311 13,578 
Income taxes receivable868 4,042 
Prepaid expenses and other current assets8,501 12,597 
Total current assets185,152 186,568 
Property and equipment, net248,614 257,785 
Goodwill273,991 273,991 
Other intangible assets, net28,353 31,250 
Long-term marketable securities16,344 26,419 
Operating lease assets3,084 3,844 
Finance lease assets16,934 17,532 
Other long-term assets4,738 4,779 
Total assets$777,210 $802,168 
Liabilities and shareholders' equity
Current liabilities  
Accounts payable$16,474 $17,356 
Accrued compensation12,486 12,743 
Accrued liabilities and other19,155 22,384 
Current operating lease liabilities1,209 1,561 
Current finance lease liabilities16,549 17,537 
Income taxes payable348 - 
Total current liabilities66,221 71,581 
Long-term operating lease liabilities1,833 2,255 
Long-term finance lease liabilities745  
Long-term deferred tax liabilities20,790 26,322 
Other long-term liabilities4,936 4,362 
Total liabilities94,525 104,520 
Shareholders' equity  
Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of each of June 30, 2023, and December 31, 2022
- - 
Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 26,095,434 and 26,888,425 shares as of June 30, 2023, and December 31, 2022, respectively
26 27 
Additional paid-in capital464,950 473,740 
Retained earnings246,930 258,236 
Accumulated other comprehensive loss(29,221)(34,355)
Total shareholders' equity682,685 697,648 
Total liabilities and shareholders' equity$777,210 $802,168 
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,
2023202220232022
Statements of Operations:
Revenue$122,265 $126,902 $248,124 $251,070 
Cost of revenue69,142 69,480 141,225 137,844 
Gross profit53,123 57,422 106,899 113,226 
Operating expenses  
Marketing and sales21,730 21,055 44,181 41,641 
Research and development9,865 9,450 20,542 20,007 
General and administrative15,822 16,522 32,655 33,293 
Closure of Japan business98 5,194 164 5,194 
Total operating expenses47,515 52,221 97,542 100,135 
Income from operations5,608 5,201 9,357 13,091 
Other (loss) income, net(3,368)1 (2,078)(299)
Income before income taxes2,240 5,202 7,279 12,792 
Provision for income taxes2,623 2,645 5,003 5,140 
Net (loss) income$(383)$2,557 $2,276 $7,652 
Net (loss) income per share:
Basic$(0.01)$0.09 $0.09 $0.28 
Diluted$(0.01)$0.09 $0.09 $0.28 
Shares used to compute net (loss) income per share:
Basic26,210,47827,530,73926,414,46727,515,583
Diluted26,210,47827,536,82326,445,42727,524,019
Comprehensive Income (Loss) (net of tax)
Comprehensive income (loss)$3,890 $(11,287)$7,410 $(11,680)
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, 202226,888,42527 473,740 258,236 (34,355)697,648 
Common shares issued on exercise of options and other, net of shares withheld for tax obligations26,798(401)(401)
Stock-based compensation expense-3,695 3,695 
Repurchases of common stock and other(712,500)(1)(11,849)(9,475)(21,325)
Net income-2,659 2,659 
Other comprehensive income
Foreign currency translation adjustment-527 527 
Net unrealized gains (losses) on investments in securities-334 334 
Comprehensive income    3,520 
Balance at March 31, 202326,202,723$26 $465,185 $251,420 $(33,494)$683,137 
Common shares issued on exercise of options and other, net of shares withheld for tax obligations169,229962 962 
Stock-based compensation expense-3,675 3,675 
Repurchases of common stock and other(276,518)(4,872)(4,107)(8,979)
Net loss-(383)(383)
Other comprehensive income
Foreign currency translation adjustment-4,254 4,254 
Net unrealized gains (losses) on investments in securities-19 19 
Comprehensive income3,890 
Balance at June 30, 202326,095,434$26 $464,950 $246,930 $(29,221)$682,685 
Common StockAdditional
Paid-In
Capital
Retained
Earnings
Accumulated Other
Comprehensive
Loss
Total
SharesAmount
Balance at December 31, 202127,465,94528 468,548 376,734 (16,817)828,493 
Common shares issued on exercise of options and other, net of shares withheld for tax obligations27,716(462)(462)
Stock-based compensation expense-4,397 4,397 
Repurchases of common stock-
Net income-5,095 5,095 
Other comprehensive loss
Foreign currency translation adjustment-(4,972)(4,972)
Net unrealized gains (losses) on investments in securities-(516)(516)
Comprehensive loss(393)
Balance at March 31, 202227,493,661$28 $472,483 $381,829 $(22,305)$832,035 
Common shares issued on exercise of options and other, net of shares withheld for tax obligations122,7051,158 1,158 
Stock-based compensation expense-4,031 4,031 
Repurchases of common stock(113,266)(1,932)(3,307)(5,239)
Net income-2,557 2,557 
Other comprehensive loss
Foreign currency translation adjustment-(13,515)(13,515)
Net unrealized gains (losses) on investments in securities-(329)(329)
Comprehensive loss(11,287)
Balance at June 30, 202227,503,100$28 $475,740 $381,079 $(36,149)$820,698 
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,
20232022
Operating activities
Net income$2,276 $7,652 
Adjustments to reconcile net income to net cash provided by operating activities:  
Depreciation and amortization18,883 20,274 
Stock-based compensation expense7,370 8,428 
Deferred taxes(5,605)(5,653)
Interest on finance lease obligations568 - 
Loss on foreign currency translation3,906 - 
Impairments related to closure of Japan business- 1,792 
Gain on disposal of property and equipment(428)- 
Other215 32 
Changes in operating assets and liabilities:  
Accounts receivable1,106 (5,748)
Inventories(551)(1,783)
Prepaid expenses and other4,193 (298)
Income taxes3,524 (1,250)
Accounts payable(961)(521)
Accrued liabilities and other(2,629)8,115 
Net cash provided by operating activities31,867 31,040 
Investing activities
Purchases of property, equipment and other capital assets(6,829)(6,030)
Proceeds from sales of property, equipment and other capital assets623 - 
Purchases of marketable securities- (38,882)
Proceeds from sales of marketable securities- 1,000 
Proceeds from call redemptions and maturities of marketable securities14,020 7,396 
Net cash provided by (used in) investing activities7,814 (36,516)
Financing activities
Proceeds from exercises of stock options1,986 2,311 
Purchases of shares withheld for tax obligations(1,425)(1,615)
Repurchases of common stock(30,064)(5,239)
Principal repayments of finance lease obligations(163)(278)
Net cash used in financing activities(29,666)(4,821)
Effect of exchange rate changes on cash and cash equivalents(80)(966)
Net increase (decrease) in cash and cash equivalents9,935 (11,263)
Cash and cash equivalents, beginning of period56,558 65,929 
Cash and cash equivalents, end of period$66,493 $54,666 
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, 2022, as filed with the Securities and Exchange Commission (SEC) on February 21, 2023.
The accompanying Consolidated Balance Sheet as of December 31, 2022 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, 2023 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. There are no pending accounting pronouncements that are expected to have a material impact on the Company's Consolidated Financial Statements.
Note 3 – Net (Loss) Income per Common Share
Basic net (loss) income per share is computed based on the weighted-average number of common shares outstanding. Diluted net (loss) 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 380,848 and 220,776 for the three months ended June 30, 2023 and 2022, respectively, and 407,119 and 208,840 for the six months ended June 30, 2023 and 2022, respectively.
6

The table below sets forth the computation of basic and diluted net (loss) income per share:
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands, except share and per share amounts)2023202220232022
Net (loss) income$(383)$2,557 $2,276 $7,652 
Basic - weighted-average shares outstanding:26,210,47827,530,73926,414,46727,515,583
Effect of dilutive securities:
Employee stock options and other1
6,08430,9608,436
Diluted - weighted-average shares outstanding:26,210,47827,536,82326,445,42727,524,019
Net (loss) income per share:
Basic$(0.01)$0.09 $0.09 $0.28 
Diluted$(0.01)$0.09 $0.09 $0.28 
1 For the three months ended June 30, 2023, 14,084 of dilutive securities for employee stock options and other were not included in the diluted weighted average shares outstanding due to the net loss for the three months ended June 30, 2023.
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, 2023.
Intangible assets other than goodwill at June 30, 2023 and December 31, 2022 were as follows:
June 30, 2023December 31, 2022Useful
Life (in years)
Weighted Average
Useful Life Remaining
(in years)
(in thousands)GrossAccumulated
Amortization
NetGrossAccumulated
Amortization
Net
Intangible assets with finite lives:
Marketing assets$930 $(852)$78 $930 $(806)$124 10.00.8
Non-compete agreement832 (545)287 828 (487)341 
2.0 - 5.0
1.8
Software technology13,229 (7,068)6,161 13,229 (6,383)6,846 10.04.5
Software platform26,247 (5,510)20,737 26,054 (4,337)21,717 12.09.6
Tradenames352 (286)66 350 (227)123 3.00.6
Customer relationships12,213 (11,189)1,024 12,197 (10,098)2,099 
3.0 - 9.0
0.4
Total intangible assets$53,803 $(25,450)$28,353 $53,588 $(22,338)$31,250 
Intangible assets allocated to the acquired Hubs 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 losses related to intangible assets were $1.5 million and $1.7 million as of June 30, 2023 and December 31, 2022, respectively. Amortization expense for intangible assets was $1.5 million for each of the three months ended June 30, 2023 and 2022 and $3.1 million for each of the six months ended June 30, 2023 and 2022, respectively.
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 2023$2,894
20243,741
20253,644
20263,542
20273,533
Thereafter10,999
Total estimated amortization expense$28,353
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, 2023 and December 31, 2022 measured at fair value on a recurring basis:
June 30, 2023December 31, 2022
(in thousands)Level 1Level 2Level 3Level 1Level 2Level 3
Financial Assets:
Cash$56,768 $- $- $38,862 $- $- 
Money market mutual fund9,725 - - 17,696 - - 
Marketable securities5,457 30,832 - 9,881 40,106 - 
Total$71,950 $30,832 $- $66,439 $40,106 $- 
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, 2023 and December 31, 2022:
June 30, 2023
(in thousands)CostUnrealized GainsUnrealized LossesFair Value
U.S. municipal securities$12,229 $- $(293)$11,936 
Corporate debt securities4,050 - (93)3,957 
U.S. government agency securities20,787 - (637)20,150 
Certificates of deposit/time deposits249 - (3)246 
Total marketable securities$37,315 $- $(1,026)$36,289 
December 31, 2022
(in thousands)CostUnrealized GainsUnrealized LossesFair Value
U.S. municipal securities$15,574 $- $(417)$15,157 
Corporate debt securities9,578 - (205)9,373 
U.S. government agency securities25,275 - (750)24,525 
Certificates of deposit/time deposits939 - (7)932 
Total marketable securities$51,366 $- $(1,379)$49,987 
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, 2023 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,
2023
Due in one year or less$19,945 
Due after one year through five years16,344 
Total marketable securities$36,289 
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,
2023
December 31,
2022
Total inventory$14,855 $13,965 
Allowance for obsolescence(544)(387)
Inventory, net of allowance$14,311 $13,578 
Note 8 – Stock-Based Compensation
Under the Company’s 2012 Long-Term Incentive Plan, as amended (the 2012 Plan), the Company had the ability to grant stock options, stock appreciation rights (SARs), restricted stock, restricted stock units, other stock-based awards and cash incentive awards through February 23, 2022. On July 8, 2022, the board of directors approved the Proto Labs, Inc. 2022 Long-Term Incentive Plan (the 2022 Plan), which was approved by the Company's shareholders at a Special Meeting of Shareholders on August 29, 2022. No awards were granted from February 23, 2022 to August 29, 2022. Awards outstanding under the 2012 Plan as of August 29, 2022 will continue to be subject to the terms of the 2012 Plan, but if those awards subsequently expire, are forfeited or cancelled or are settled in cash, the shares subject to those awards will become available for awards under the 2022 Plan. 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 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 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.
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 $3.7 million and $4.0 million for the three months ended June 30, 2023 and 2022, respectively, and $7.4 million and $8.4 million for the six months ended June 30, 2023 and 2022.
10

Stock Options
The following table summarizes stock option activity during the six months ended June 30, 2023:
Stock OptionsWeighted-
Average
Exercise Price
Options outstanding at December 31, 2022263,992$79.07 
Granted186,80433.36 
Exercised--
Forfeited(35,702)63.70 
Expired(15,848)55.67 
Options outstanding at June 30, 2023399,246$59.99 
Exercisable at June 30, 2023125,050$90.81 
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, 2023 was $16.36.
The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the six months ended June 30, 2023 and 2022:
Six Months Ended June 30,
20232022
Risk-free interest rate
3.90% - 4.55%
1.94%
Expected life (years)
2.00 - 6.25
6.25
Expected volatility
49.23% - 55.92%
45.95%
Expected dividend yield0%0%
As of June 30, 2023, there was $5.3 million of unrecognized compensation expense related to unvested stock options, which is expected to be recognized over a weighted-average period of 2.8 years.
Restricted Stock
Restricted stock 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 activity during the six months ended June 30, 2023:
Restricted
Stock
Weighted-
Average
Grant Date
Fair Value
Per Share
Restricted stock at December 31, 2022478,596$70.36 
Granted406,15032.50 
Restrictions lapsed(135,687)80.02 
Forfeited(65,821)70.09 
Restricted stock at June 30, 2023683,238$45.88 
As of June 30, 2023, there was $25.3 million of unrecognized compensation expense related to non-vested restricted stock, which is expected to be recognized over a weighted-average period of 2.9 years.
Performance Stock
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. Certain PSUs granted by the Company in 2021 are based on performance conditions and the related compensation cost is based on the probability that the performance conditions will be achieved. The Company’s PSUs granted in 2020, 2022, 2023 and certain PSUs granted in 2021 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 activity during the six months ended June 30, 2023:
Performance
Stock
Weighted-
Average
Grant Date
Fair Value
Per Share
Performance stock at December 31, 202235,802$77.91 
Granted71,29557.79 
Restrictions lapsed-- 
Performance change-- 
Forfeited-- 
Performance stock at June 30, 2023107,097$74.08 
12

The following table provides the assumptions used in the Monte Carlo pricing model valuation of PSUs during the six months ended June 30, 2023 and 2022:
Six Months Ended
June 30,
20232022
Risk-free interest rate4.35%1.76%
Expected life (years)2.882.87
Expected volatility58.00%53.50%
Expected dividend yield0%0%
As of June 30, 2023, there was $5.5 million of unrecognized compensation expense related to non-vested performance stock, 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, 2023 and 2022:
Six Months Ended
June 30,
20232022
Risk-free interest rate
4.60 - 4.82%
0.17 - 2.06%
Expected life (months)6.006.00
Expected volatility
47.38 - 67.84%
47.05 - 53.44%
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. During the three and six months ended June 30, 2023 we recognized a $3.9 million foreign currency translation loss from the substantial completion on the closure of our Japan business.
The following table presents the changes in accumulated other comprehensive income (loss) balances during the three and six months ended June 30, 2023 and 2022:
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2023202220232022
Balance at beginning of period$(33,494)$(22,305)$(34,355)$(16,817)
Foreign currency translation adjustments
Other comprehensive income (loss) before reclassifications348 (13,515)875 (18,487)
Amounts reclassified from accumulated other comprehensive loss3,906 - 3,906 - 
Net current-period other comprehensive income (loss)4,254 (13,515)4,781 (18,487)
Net unrealized gains (losses) on investments in securities
Other comprehensive income (loss) before reclassifications19 (329)353 (845)
Amounts reclassified from accumulated other comprehensive loss- - - - 
Net current-period other comprehensive income (loss)19 (329)353 (845)
Balance at end of period$(29,221)$(36,149)$(29,221)$(36,149)
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, 2023 and 2022, the Company recorded an income tax provision of $2.6 million and $2.6 million, respectively. For the six months ended June 30, 2023 and 2022, the Company recorded an income tax provision of $5.0 million and $5.1 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, 2023 was 117.1 percent compared to 50.8 percent in the same period of the prior year. The effective tax rate increased by 66.3 percent for the three months ended June 30, 2023 when compared to the same period in 2022, primarily due to the tax impact of the foreign currency translation loss from the substantial completion on the closure of our Japan business. The effective income tax rate for the six months ended June 30, 2023 was 68.7 percent compared to 40.2 percent in the same period of the prior year. The effective tax rate increased by 28.5 percent for the six months ended June 30, 2023 when compared to the same period in 2022, primarily due to the tax impact of the foreign currency translation loss from the substantial completion on the closure of our Japan business.
The effective income tax rate for the three and six months ended June 30, 2023 differs from the U.S. federal statutory rate of 21.0 percent due to various factors, including operating in multiple state and foreign jurisdictions and tax credits for which the Company qualifies.
The Company had unrecognized tax benefits totaling $3.6 million as of June 30, 2023 and $3.2 million as of December 31, 2022, 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
14

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.
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 Corporate Unallocated and Japan 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.
Revenue and income from operations by reportable segment for the three and six months ended June 30, 2023 and 2022 were as follows:
Three Months Ended
June 30,
Six Months Ended
June 30,
(dollars in thousands)2023202220232022
Revenue:
United States$96,321 $100,655 $194,067 $196,151 
Europe25,944 23,391 54,057 47,977 
Japan- 2,856 - 6,942 
Total revenue$122,265 $126,902 $248,124 $251,070 
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2023202220232022
Income (Loss) from Operations:
United States$22,053 $26,168 $42,534 $48,691 
Europe(3,380)(2,249)(5,863)(3,928)
Corporate Unallocated and Japan(13,065)(18,718)(27,314)(31,672)
Total Income from Operations$5,608 $5,201 $9,357 $13,091 
Total long-lived assets at June 30, 2023 and December 31, 2022 were as follows:
(in thousands)June 30,
2023
December 31,
2022
Total long-lived assets:
United States$194,656 $203,816 
Europe53,958 53,835 
Japan- 134 
Total Long-lived Assets$248,614 $257,785 
15

Revenue by product line for the three and six months ended June 30, 2023 and 2022 were as follows:
Three Months Ended
June 30,
Six Months Ended
June 30,
(dollars in thousands)2023202220232022
Revenue:
Injection Molding$48,819 $53,355 $100,767 $106,753 
CNC Machining48,297 48,222 96,401 94,320 
3D Printing21,005 19,963 42,330 39,635 
Sheet Metal3,939 5,160 8,187 9,847 
Other Revenue205 202 439 515 
Total Revenue$122,265 $126,902 $248,124 $251,070 
16

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, 2022.
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 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 and fastest digital manufacturers of custom prototypes and on-demand production parts. Our mission is to empower companies to bring new ideas to market by offering the fastest and most comprehensive digital manufacturing service in the world. Our automated quoting and manufacturing systems allow us to produce commercial-grade plastic, metal, and liquid silicone rubber parts in as fast as one day. We manufacture prototype and low volume production parts for companies worldwide, who are under increasing pressure to bring their finished products to market faster than their competition. We utilize injection molding, computer numerical control (CNC) machining, 3D printing and sheet metal fabrication to manufacture custom parts for our customers. For most of our offerings, our proprietary technology eliminates most of the time-consuming and expensive skilled labor conventionally required to quote and manufacture parts. Our customers conduct nearly all of their business with us over the Internet. 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. In addition, we serve procurement and supply chain professionals seeking to manufacture custom parts on-demand. Through the acquisition of Hubs (formerly 3D Hubs, Inc.) (Hubs) in 2021, we are able to provide our customers access to a global network of premium manufacturing partners who reside across North America, Europe and Asia, complementing our in-house manufacturing. We believe our use of advanced technology enables 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.
On May 27, 2022, our board of directors approved a plan for the closure of our manufacturing facility in Japan and announced an intention to cease operations in the region. Affected employees in Japan will receive severance and other transition assistance that meet or exceed local requirements. We expect to complete the closure plan within the year.
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 in order to better serve the evolving preferences and needs of product developers and engineers. In 2021, we augmented our internal manufacturing operations through our acquisition of Hubs to expand the envelope of custom parts we can provide to our customers through a network of premium manufacturing partners in each of our product lines.
Injection Molding
Our Injection Molding product line uses our 3D CAD-to-CNC machining technology for the automated design and manufacture of molds, which are then used to produce custom plastic and liquid silicone rubber injection-molded parts and over-molded and insert-molded injection-molded parts on commercially available equipment. Our Injection Molding product line works best for on-demand production, bridge tooling, pilot runs and functional prototyping. Our affordable molds and quick turnaround times help reduce design risk and limit overall production costs for product developers and engineers. Because we retain possession of the molds, customers who need short-run production often come back to Proto
17

Labs’ Injection Molding product line for additional quantities. They do so to support pilot production for product testing, while their tooling for high-volume production is being prepared, because they need on-demand manufacturing due to disruptions in their manufacturing process, because their product requires limited annual quantity or because they need end-of-life production support. In 2017, we launched an on-demand manufacturing injection molding service. This service utilizes our existing processes, but is designed to fulfill the needs of customers with on-going production needs.
CNC Machining
Our CNC Machining product line uses commercially available CNC machines to offer milling and turning. CNC milling is a manufacturing process that cuts plastic and metal blocks into one or more custom parts based on the 3D CAD model uploaded by the customer. CNC turning is a subtractive manufacturing process that rotates a metal rod while a cutting tool is used to remove material and create final parts. Quick-turn CNC machining works best for prototyping, form and fit testing, jigs and fixtures and functional components for end-use applications.
Industrial 3D Printing
Our Industrial 3D Printing product line includes SL, SLS, DMLS, MJF, PolyJet, Carbon DLS and fused deposition modeling (FDM) processes, which offers customers a wide-variety of high-quality, precision rapid prototyping and low volume production. These processes create parts with a high level of accuracy, detail, strength and durability. Industrial 3D Printing is best suited for functional prototypes, complex designs and end-use applications.
Sheet Metal
Our Sheet Metal product line includes quick-turn and e-commerce-enabled custom sheet metal parts, providing customers with prototype and low-volume production parts. The rapid prototype sheet metal process is most often used when form, fit and function are all a priority. Our manufacturing process uses customer 3D CAD models uploaded by the customer to fabricate rapid prototyping sheet metal or end-use production parts and assemblies.
Key Financial Measures and Trends
Revenue
Our operations are comprised of three geographic operating segments in the United States, Europe and Japan. On May 27, 2022, our board of directors approved a plan for the closure of our manufacturing facility in Japan and announced an intention to cease operations in the region. Revenue is derived from our Injection Molding, CNC Machining, 3D Printing and Sheet Metal product lines. 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 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.
During the three months ended June 30, 2023, we served 23,377 unique product developers and engineers who purchased our products through our web-based customer interface, a decrease of 2.8% over the same period in 2022. During the six months ended June 30, 2023, we served 35,743 unique product developers and engineers who purchased our products through our web-based customer interface, a decrease of 3.1% over the same period in 2022.
18

Cost of Revenue, Gross Profit and Gross Margin
Cost of revenue consists primarily of raw materials, equipment depreciation, employee compensation, benefits, stock-based compensation, facilities costs and overhead allocations associated with the manufacturing process for molds and customer parts. 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 by product line, pricing, sales volume, manufacturing costs, the costs associated with increasing production capacity, the mix between domestic and foreign revenue sources, the mix between revenue produced in our internal manufacturing operations and outsourced to our external manufacturing partners, the mix between premium expedited manufacturing and longer lead times, 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 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 programs such as electronic, print and pay-per-click advertising, trade shows and other related overhead, which includes an allocation of information technology expense including amortization of Protolabs 2.0 software assets. We expect sales and marketing expense to increase in the future as we increase the number of marketing and sales professionals and marketing programs 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, which includes an allocation of information technology expense including amortization of Protolabs 2.0 software assets. We expect general and administrative expense to increase in the future as we continue to grow and expand as a global organization.
Closure of Japan business. Closure of Japan business expense is driven by our decision to close the Japan manufacturing facility and exit the Japan market. The expenses consist primarily of operating expense, including employee severance, write-down of fixed assets, facility-related charges and goodwill impairment charges.
Other Income (Loss), net
Other income (loss), 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 2023 and beyond may differ from historical effective tax rates due to increases in losses in foreign
19

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.
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)20232022$%20232022$%
Revenue$122,265 100.0 $126,902 100.0 $(4,637)(3.7)$248,124 100.0 $251,070 100.0 $(2,946)(1.2)
Cost of revenue69,142 56.6 69,480 54.8 (338)(0.5)141,225 56.9 137,844 54.9 3,381 2.5 
Gross profit53,123 43.4 57,422 45.2 (4,299)(7.5)106,899 43.1 113,226 45.1 (6,327)(5.6)
Operating expenses
Marketing and sales21,730 17.8 21,055 16.6 675 3.2 44,181 17.8 41,641 16.6 2,540 6.1 
Research and development9,865 8.1 9,450 7.4 415 4.4 20,542 8.3 20,007 8.0 535 2.7 
General and administrative15,822 12.9 16,522 13.0 (700)(4.2)32,655 13.2 33,293 13.3 (638)(1.9)
Closure of Japan business98 0.1 5,194 4.1 (5,096)(98.1)164 0.1 5,194 2.1 (5,030)(96.8)
Total operating expenses47,515 38.9 52,221 41.2 (4,706)(9.0)97,542 39.3 100,135 39.9 (2,593)(2.6)
Income from operations5,608 4.6 5,201 4.1 407 7.8 9,357 3.8 13,091 5.2 (3,734)(28.5)
Other (loss) income, net(3,368)(2.8)— (3,369)(336,900.0)(2,078)(0.8)(299)(0.1)(1,779)595.0 
Income before income taxes2,240 1.8 5,202 4.1 (2,962)(56.9)7,279 2.9 12,792 5.1 (5,513)(43.1)
Provision for income taxes2,623 2.1 2,645 2.1 (22)(0.8)5,003 2.0 5,140 2.0 (137)(2.7)
Net (loss) income$(383)(0.3 %)$2,557 2.0 %$(2,940)(115.0)%$2,276 0.9 %$7,652 3.0 %$(5,376)(70.3)%
Stock-based compensation expense included in the statements of operations data above for the three and six months June 30, 2023 and 2022 were as follows:
Three Months Ended June 30,Six Months Ended June 30,
(dollars in thousands)2023202220232022
Stock options, restricted stock and performance stock$3,267 $3,668 $6,588 $7,674 
Employee stock purchase plan408 363 782 754 
Total stock-based compensation expense$3,675 $4,031 $7,370 $8,428 
Cost of revenue$461 $528 $926 $1,115 
Operating expenses:
Marketing and sales855 813 1,548 1,550 
Research and development641 471 1,213 1,100 
General and administrative1,718 2,219 3,683 4,663 
Total stock-based compensation expense$3,675 $4,031 $7,370 $8,428 
20

Comparison of Three Months Ended June 30, 2023 and 2022
Revenue
Revenue by reportable segment and the related changes for the three months ended June 30, 2023 and 2022 were as follows:
Three Months Ended June 30,
20232022Change
(dollars in thousands)$% of Total Revenue$% of Total Revenue$%
Revenue:
United States$96,321 78.8 %$100,655 79.3 %$(4,334)(4.3)%
Europe25,944 21.2 %23,391 18.4 %2,553 10.9 
Japan— %2,856 2.3 %(2,856)(100.0)
Total revenue$122,265 100.0 %$126,902 100.0 %$(4,637)(3.7 %)
Our revenue decreased $4.6 million, or 3.7%, for the three months ended June 30, 2023 compared to the same period in 2022. By reportable segment, revenue in the United States decreased $4.3 million, or 4.3%, for the three months ended June 30, 2023 compared to the same period in 2022. Revenue in Europe increased $2.6 million, or 10.9%, and revenue in Japan decreased $2.9 million, or 100.0% in each case for the three months ended June 30, 2023 compared to the same period in 2022. The decrease in Japan revenue was driven by our decision in the second quarter of 2022 to close our Japan operations. Revenue generated from our digital network powered by Hubs was $20.2 million and $11.3 million for the three months ended June 30, 2023 and 2022, respectively. International revenue was negatively impacted by $0.5 million during three months ended June 30, 2023 compared to the same period in 2022 as a result of foreign currency movements, primarily the weakening of the British Pound and Euro relative to the United States Dollar.
During the three months ended June 30, 2023, we served 23,377 unique product developers and engineers, which is a decrease of 2.8% from the same period in 2022. Our decline in product developers and engineers served decreased at a lesser rate than our revenue decline, resulting in an increase in the average spend per product developer and engineer.
Revenue by product line and the related changes for the three months ended June 30, 2023 and 2022 were as follows:
Three Months Ended June 30,
20232022Change
(dollars in thousands)$% of Total Revenue$% of Total Revenue$%
Revenue:
Injection Molding$48,819 39.9 %$53,355 42.0 %$(4,536)(8.5)%
CNC Machining48,297 39.5 48,222 38.0 75 0.2 
3D Printing21,005 17.2 19,963 15.7 1,042 5.2 
Sheet Metal3,939 3.2 5,160 4.1 (1,221)(23.7)
Other Revenue205 0.2 202 0.2 1.5 
Total Revenue$122,265 100.0 %$126,902 100.0 %$(4,637)(3.7)%
By product line, our revenue decrease was driven by a 8.5% decrease in Injection Molding revenue and a 23.7% decrease in Sheet Metal revenue, which was partially offset by a 0.2% increase in CNC Machining revenue, a 5.2% increase in 3D Printing revenue and a 1.5% increase in Other Revenue, in each case for the three months ended June 30, 2023 compared to the same period in 2022.
21

Cost of Revenue, Gross Profit and Gross Margin
Cost of Revenue. Cost of revenue decreased $0.3 million, or 0.5%, for the three months ended June 30, 2023 compared to the same period in 2022, which was less than the rate of revenue decrease of 3.7% for the three months ended June 30, 2023 compared to the same period in 2022. The decrease in the cost of revenue of $0.3 million was primarily driven by reduced headcount and decreases in overtime and contract labor expense and led to lower personnel and related costs of $3.8 million, which were partly offset by increases in raw material and product costs of $3.5 million primarily driven by higher revenue volumes in our digital network offering during the three months ended June 30, 2023 compared to the same period in 2022.
Gross Profit and Gross Margin. Gross profit decreased from $57.4 million in the three months ended June 30, 2022 to $53.1 million in the three months ended June 30, 2023. Gross margin decreased from 45.2% in the three months ended June 30, 2022 to 43.4% in the three months ended June 30, 2023.
Operating Expenses, Other (Loss) Income, net and Provision for Income Taxes
Marketing and Sales. Marketing and sales expenses increased $0.7 million, or 3.2%, during the three months ended June 30, 2023 compared to the same period in 2022. The increase in marketing and sales expenses was primarily driven by increases in personnel and related costs of $0.5 million and marketing program cost increases of $0.2 million during the three months ended June 30, 2023 when compared to the same period in 2022.
Research and Development. Our research and development expenses increased $0.4 million, or 4.4%, during the three months ended June 30, 2023 compared to the same period in 2022 primarily due to increases of $0.5 million in personnel and related costs, which were partially offset by decreases of $0.1 million in professional services.
General and Administrative. Our general and administrative expenses decreased $0.7 million, or 4.2%, during the three months ended June 30, 2023 compared to the same period in 2022 primarily due to decreases of $0.3 million stock based compensation costs and personnel and related costs of $0.5 million, which were partially offset by an increase of $0.1 million in professional services and operating costs.
Closure of Japan business. Our decision to close our Japan business resulted in $0.1 million in operating expenses during the three months ended June 30, 2023, a decrease of $5.1 million or 98.1% compared to the same period in 2022. During the three months ended June 30, 2022, we recognized $2.2 million of employee severance, $1.2 million related to the write-down of fixed assets, $0.9 million of facility-related charges, $0.6 million in goodwill impairment and $0.3 million in other closure related charges.
Other (loss) income, net. We recognized other loss, net of $3.4 million for the three months ended June 30, 2023, a decrease of $3.4 million compared to other income, net of zero for the three months ended June 30, 2022. Other income, net for the three months ended June 30, 2023 primarily consisted of a $3.9 million foreign currency translation loss from the substantial completion on the closure of our Japan business, partly offset by $0.5 million in interest income on investments and other income. Other income, net for the three months ended June 30, 2022 primarily consisted of a $0.3 million loss on foreign currency, which was offset by interest income on investments and other income.
Provision for Income Taxes. Our effective tax rate of 117.1% for the three months ended June 30, 2023 increased 66.3% compared to 50.8% for the same period in 2022. The increase in the effective tax rate is primarily due to the foreign currency translation loss from the substantial completion on the closure of our Japan business, which is not deductible for tax purposes. Our income tax provision of $2.6 million for the three months ended June 30, 2023 was consistent as compared to the same period in 2022.
22

Comparison of Six Months Ended June 30, 2023 and 2022
Revenue
Revenue by reportable segment and the related changes for the six months ended June 30, 2023 and 2022 were as follows:
Six Months Ended June 30,
20232022Change
(dollars in thousands)$% of Total Revenue$% of Total Revenue$%
Revenue:
United States$194,067 78.2 %$196,151 78.1 %$(2,084)(1.1)%
Europe54,057 21.8 %47,977 19.1 %6,080 12.7 
Japan— %6,942 2.8 %(6,942)(100.0)
Total revenue$248,124 100.0 %$251,070 100.0 %$(2,946)(1.2 %)
Our revenue decreased $2.9 million, or 1.2%, for the six months ended June 30, 2023 compared to the same period in 2022. By reportable segment, revenue in the United States decreased $2.1 million, or 1.1%, for the six months ended June 30, 2023 compared to the same period in 2022. Revenue in Europe increased $6.1 million, or 12.7%, and revenue in Japan decreased $6.9 million, or 100.0% in each case for the six months ended June 30, 2023 compared to the same period in 2022. The decrease in Japan revenue was driven by our decision in the second quarter of 2022 to close our Japan operations. Revenue generated from our digital network powered by Hubs was $37.5 million and $21.6 million for the six months ended June 30, 2023 and 2022, respectively. International revenue was negatively impacted by $3.0 million during six months ended June 30, 2023 compared to the same period in 2022 as a result of foreign currency movements, primarily the weakening of the British Pound and Euro relative to the United States Dollar.
During the six months ended June 30, 2023, we served 35,743 unique product developers and engineers, a decrease of 3.1% from the same period in 2022. Our decrease in product developers and engineers served decreased at a higher rate than our revenue decline, resulting in a decrease in the average spend per product developer and engineer.
Revenue by product line and the related changes for the six months ended June 30, 2023 and 2022 were as follows:
Six Months Ended June 30,
20232022Change
(dollars in thousands)$% of Total Revenue$% of Total Revenue$%
Revenue:
Injection Molding$100,767 40.6 %$106,753 42.5 %$(5,986)(5.6)%
CNC Machining96,401 38.9 94,320 37.6 2,081 2.2 
3D Printing42,330 17.1 39,635 15.8 2,695 6.8 
Sheet Metal8,187 3.3 9,847 3.9 (1,660)(16.9)
Other Revenue439 0.1 515 0.2 (76)(14.8)
Total Revenue$248,124 100.0 %$251,070 100.0 %$(2,946)(1.2)%
By product line, our revenue decrease was driven by a 5.6% decrease in Injection Molding revenue, a 16.9% decrease in Sheet Metal revenue and a 14.8% decrease in Other Revenue, which was partially offset by a 2.2% increase in CNC Machining revenue and a 6.8% increase in 3D Printing revenue in each case for the six months ended June 30, 2023 compared to the same period in 2022.
23

Cost of Revenue, Gross Profit and Gross Margin
Cost of Revenue. Cost of revenue increased $3.4 million, or 2.5%, for the six months ended June 30, 2023 compared to the same period in 2022, which was higher than the rate of revenue decrease of 1.2% for the six months ended June 30, 2023 compared to the same period in 2022. The increase in cost of revenue of $3.4 million was primarily driven by increases in raw material and product costs of $9.0 million primarily driven by higher revenue volumes in our digital network offering, partly offset by reduced headcount and decreases in overtime and contract labor expense and led to lower personnel and related costs of $5.6 million during the six months ended June 30, 2023 compared to the same period in 2022.
Gross Profit and Gross Margin. Gross profit decreased from $113.2 million in the six months ended June 30, 2022 to $106.9 million in the six months ended June 30, 2023. Gross margin decreased from 45.1% in the six months ended June 30, 2022 to 43.1% in the six months ended June 30, 2023.
Operating Expenses, Other Income (Loss), net and Provision for Income Taxes
Marketing and Sales. Marketing and sales expenses increased $2.5 million, or 6.1%, during the six months ended June 30, 2023 compared to the same period in 2022. The increase was driven by increases in personnel and related costs of $2.0 million and marketing program cost increases of $0.5 million during the six months ended June 30, 2023 when compared to the same period in 2022.
Research and Development. Our research and development expenses increased $0.5 million, or 2.7%, during the six months ended June 30, 2023 compared to the same period in 2022 primarily due to personnel and related cost increases of $1.1 million, which were partially offset by decreases in professional services and other operating costs of $0.6 million.
General and Administrative. Our general and administrative expenses decreased $0.6 million, or 1.9%, during the six months ended June 30, 2023 compared to the same period in 2022 primarily due to decreases in stock based compensation costs of $0.5 million and personnel and related costs of $0.1 million.
Closure of Japan business. Our decision to close our Japan business resulted in $0.2 million in operating expenses during the six months ended June 30, 2023, a decrease of $5.0 million or 96.8% compared to the same period in 2022. During the six months ended June 30, 2022, we recognized $2.2 million of employee severance, $1.2 million related to the write-down of fixed assets, $0.9 million of facility-related charges, $0.6 million in goodwill impairment and $0.3 million in other closure related charges.
Other loss, net. We recognized other loss, net of $2.1 million for the six months ended June 30, 2023, a increase of $1.8 million compared to other loss, net of $0.3 million for the six months ended June 30, 2022. Other loss, net for the six months ended June 30, 2023 primarily consisted of a $3.9 million foreign currency translation loss from the substantial completion on the closure of our Japan business, which was partially offset by $1.8 million in interest income on investments and other income. Other income, net for the six months ended June 30, 2022 primarily consisted of a $0.4 million loss on foreign currency, which was offset by $0.1 million in interest income on investments and other income.
Provision for Income Taxes. Our effective tax rate of 68.7% for the six months ended June 30, 2023 increased 28.5% compared to 40.2% for the same period in 2022. The increase in the effective tax rate is primarily due to the foreign currency translation loss from the substantial completion on the closure of our Japan business, which is not deductible for tax purposes. Our income tax provision of $5.0 million for the six months ended June 30, 2023 decreased $0.1 million compared to our income tax provision of $5.1 million for the six months ended June 30, 2022.
24

Liquidity and Capital Resources
Cash Flows
The following table summarizes our cash flows during the six months ended June 30, 2023 and 2022:
Six Months Ended June 30,
(dollars in thousands)20232022
Net cash provided by operating activities$31,867 $31,040 
Net cash provided by (used in) investing activities7,814 (36,516)
Net cash used in financing activities(29,666)(4,821)
Effect of exchange rate changes on cash and cash equivalents(80)(966)
Net increase (decrease) in cash and cash equivalents$9,935 $(11,263)
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 $66.5 million as of June 30, 2023, an increase of $9.9 million from December 31, 2022. The increase in our cash was primarily due to cash provided by operating activities of $31.9 million and proceeds from call redemptions and maturities of marketable securities of $14.0 million, which were partially offset by $6.8 million for purchases of property, equipment and other capital assets, and $30.1 million in repurchases of common stock.
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 $31.9 million during the six months ended June 30, 2023 and primarily consisted of net income of $2.3 million, adjusted for certain non-cash items, including depreciation and amortization of $18.9 million, stock-based compensation expense of $7.4 million, interest on finance lease obligations of $0.6 million and changes in operating assets and liabilities and other items totaling $4.7 million, which were partially offset by deferred taxes of $5.6 million. Cash flows from operating activities were $31.0 million during the six months ended June 30, 2022 and primarily consisted of net income of $7.7 million, adjusted for certain non-cash items, including depreciation and amortization of $20.3 million and stock-based compensation expense of $8.4 million, and impairments related to the closure of our Japan business of $1.8 million, which were partially offset by deferred taxes of $5.7 million and changes in operating assets and liabilities and other items totaling $1.5 million.
Cash flows from operating activities increased $0.8 million during the six months ended June 30, 2023 compared to the same period in 2022, primarily due to increases in interest on finance lease obligations of $0.6 million, foreign currency translation losses of $3.9 million and changes in operating assets and liabilities totaling $6.1 million, which were partially offset by decreases in net income of $5.4 million, stock-based compensation of $1.1 million, impairments related to the closure of Japan business of $1.8 million and depreciation and amortization of $1.4 million.
Cash Flows from Investing Activities
Cash provided by investing activities was $7.8 million during the six months ended June 30, 2023, consisting of $14.0 million in proceeds from call redemptions and maturities of marketable securities, which were partially offset by $6.2 million for net purchases of property, equipment and other capital assets.
Cash used in investing activities was $36.5 million during the six months ended June 30, 2022, consisting of $30.5 million for net purchases of marketable securities and $6.0 million for the purchases of property, equipment and other capital assets.
Cash Flows from Financing Activities
Cash used in financing activities was $29.7 million during the six months ended June 30, 2023, consisting of $30.1 million in repurchases of common stock, $1.4 million in purchases of shares withheld for tax obligations associated with equity
25

transactions, and $0.2 million for repayments of finance lease obligations, which were partially offset by $2.0 million in proceeds from exercises of stock option.
Cash used in financing activities was $4.8 million during the six months ended June 30, 2022, consisting of $5.2 million in repurchases of common stock, $1.6 million in purchases of shares withheld for tax obligations associated with equity transactions, which were partially offset by $2.3 million in proceeds from exercises of stock options.
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 Pat II, Item 8 in our Annual Report on Form 10-K for the year ended December 31, 2022. There were no material changes to our critical accounting policies and estimates during the six months ended June 30, 2023.
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.
26

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 costs and operating expenses in British Pounds, Euros and Japanese Yen.
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. During the three and six months ended June 30, 2023, we recognized a foreign currency translation loss of $3.9 million in connection with substantially completing our closure of our Japan business. We recognized foreign currency losses of $0.1 million and $0.3 million during the three months ended June 30, 2023 and 2022, respectively. We recognized foreign currency gains of $0.1 million and $0.4 million during the six months ended June 30, 2023 and 2022, respectively. The changes in foreign exchange rates had a negative impact on consolidated revenue of $0.5 million for the three months ended June 30, 2023 and $3.0 million for the six months ended June 30, 2023 as compared to the same period in 2022.
27

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 (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, 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 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.
28

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, 2022 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 9, 2017, our board of directors authorized the repurchase of shares of our common stock from time to time on the open market or in privately negotiated purchases, at an aggregate purchase price of up to $50 million. On May 16, 2019, we announced that our board of directors approved a $50 million increase in our authorized stock repurchase program and extended the term of the program through December 31, 2023, which increased the stock repurchase program to $100 million. On December 8, 2021, our board of directors approved another $50 million increase in our authorized stock repurchase program, which increased the total repurchases authorized to $150 million. On November 17, 2022, our board of directors approved a $50 million increase in our authorized stock repurchase program, which increased the total repurchases authorized to $200 million and extended the term of the program through December 31, 2024. On February 7, 2023 our board of directors approved a $50 million increase in our authorized stock repurchase program, which increased the stock repurchase authorized to $250 million. We have $102.2 million remaining under this authorization. The timing and amount of any share repurchases will be determined by our management based on market conditions and other factors.
During the three months ended June 30, 2023, we repurchased 276,518 shares of our common stock at a total purchase price of $8.9 million under this program. Common stock repurchase activity through June 30, 2023 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) (1)
April 1, 2023 through April 30, 2023$— $111,176 
May 1, 2023 through May 31, 2023187,068$31.70 187,068$105,246 
June 1, 2023 through June 30, 202389,450$33.62 89,450$102,239 
276,518$32.32 276,518$102,239 
Item 3. Defaults Upon Senior Securities
No matters to disclose.
Item 4. Mine Safety Disclosures
No matters to disclose.
29

Item 5. Other Information
During the three months ended June 30, 2023, none of our directors or officers (as defined in Rule 16a-1(f) of the Exchange Act) adopted 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 the SEC’s rules).
Item 6. Exhibits
The following documents are filed as part of this report:
Exhibit NumberDescription of Exhibit
3.1
3.2
3.3
10.1
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.
30

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: August 4, 2023
/s/ Robert Bodor
Robert Bodor
President and Chief Executive Officer
(Principal Executive Officer)
Date: August 4, 2023
/s/ Daniel Schumacher
Daniel Schumacher
Chief Financial Officer
(Principal Financial Officer)
31
EX-31.1 2 prlb-20230630xexx311.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, Robert Bodor, 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: August 4, 2023
By:/s/ Robert Bodor
Robert Bodor
President and Chief Executive Officer
(Principal Executive Officer)

EX-31.2 3 prlb-20230630xexx312.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: August 4, 2023
By:/s/ Daniel Schumacher
Daniel Schumacher
Chief Financial Officer
(Principal Financial Officer)

EX-32.1 4 prlb-20230630xexx321.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, Robert Bodor, 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, 2023 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: August 4, 2023
By:/s/ Robert Bodor
Name:Robert Bodor
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, 2023 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: August 4, 2023
By:/s/ Daniel Schumacher
Name:Daniel Schumacher
Title:Chief Financial Officer

EX-101.SCH 5 prlb-20230630.xsd XBRL TAXONOMY EXTENSION SCHEMA DOCUMENT 0000001 - Document - Cover link:presentationLink link:calculationLink link:definitionLink 0000002 - Statement - Consolidated Balance Sheets link:presentationLink link:calculationLink link:definitionLink 0000003 - Statement - Consolidated Balance Sheets (Parenthetical) link:presentationLink link:calculationLink link:definitionLink 0000004 - Statement - Consolidated Statements of Comprehensive Income (Unaudited) link:presentationLink link:calculationLink link:definitionLink 0000005 - Statement - Consolidated Statements of Shareholders' Equity link:presentationLink link:calculationLink link:definitionLink 0000006 - Statement - Consolidated Statements of Cash Flows (Unaudited) link:presentationLink link:calculationLink link:definitionLink 0000007 - Disclosure - Basis of Presentation link:presentationLink link:calculationLink link:definitionLink 0000008 - Disclosure - Recent Accounting Pronouncements link:presentationLink link:calculationLink link:definitionLink 0000009 - Disclosure - Net (Loss) Income per Common Share link:presentationLink link:calculationLink link:definitionLink 0000010 - Disclosure - Intangible Assets, Goodwill and Other link:presentationLink link:calculationLink link:definitionLink 0000011 - Disclosure - Fair Value Measures and Disclosures link:presentationLink link:calculationLink link:definitionLink 0000012 - Disclosure - Marketable Securities link:presentationLink link:calculationLink link:definitionLink 0000013 - Disclosure - Inventory link:presentationLink link:calculationLink link:definitionLink 0000014 - Disclosure - Stock-Based Compensation link:presentationLink link:calculationLink link:definitionLink 0000015 - Disclosure - Accumulated Other Comprehensive Income (Loss) link:presentationLink link:calculationLink link:definitionLink 0000016 - Disclosure - Income Taxes link:presentationLink link:calculationLink link:definitionLink 0000017 - Disclosure - Segment Reporting link:presentationLink link:calculationLink link:definitionLink 9954701 - Disclosure - Net (Loss) Income per Common Share (Tables) link:presentationLink link:calculationLink link:definitionLink 9954702 - Disclosure - Goodwill and Other Intangible Assets (Tables) link:presentationLink link:calculationLink link:definitionLink 9954703 - Disclosure - Fair Value Measurements (Tables) link:presentationLink link:calculationLink link:definitionLink 9954704 - Disclosure - Marketable Securities (Tables) link:presentationLink link:calculationLink link:definitionLink 9954705 - Disclosure - Inventory (Tables) link:presentationLink link:calculationLink link:definitionLink 9954706 - Disclosure - Stock-Based Compensation (Tables) link:presentationLink link:calculationLink link:definitionLink 9954707 - Disclosure - Accumulated Other Comprehensive Income (Loss) (Tables) link:presentationLink link:calculationLink link:definitionLink 9954708 - Disclosure - Segment Reporting (Tables) link:presentationLink link:calculationLink link:definitionLink 9954709 - Disclosure - Net (Loss) Income per Common Share - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9954710 - Disclosure - Net (Loss) Income per Common Share -Schedule of Computation Of Basic and Diluted Net Income Per Share (Details) link:presentationLink link:calculationLink link:definitionLink 9954711 - Disclosure - Goodwill and Other Intangible Assets - Schedule of Intangible Assets Other Than Goodwill (Details) link:presentationLink link:calculationLink link:definitionLink 9954712 - Disclosure - Goodwill and Other Intangible Assets - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9954713 - Disclosure - Goodwill and Other Intangible Assets - Future Amortization Expense (Details) link:presentationLink link:calculationLink link:definitionLink 9954714 - Disclosure - Fair Value Measurements - Financial Assets Measured At Fair Value On A Recurring Basis (Details) link:presentationLink link:calculationLink link:definitionLink 9954715 - Disclosure - Marketable Securities - Short-Term and Long-Term Marketable Securities (Details) link:presentationLink link:calculationLink link:definitionLink 9954716 - Disclosure - Marketable Securities - Maturities of Available-For-Sale Debt Securities (Details) link:presentationLink link:calculationLink link:definitionLink 9954717 - Disclosure - Inventory (Details) link:presentationLink link:calculationLink link:definitionLink 9954718 - Disclosure - Stock-Based Compensation - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9954719 - Disclosure - Stock-Based Compensation - Option Activity (Details) link:presentationLink link:calculationLink link:definitionLink 9954720 - Disclosure - Stock-Based Compensation - Weighted Average Assumptions (Details) link:presentationLink link:calculationLink link:definitionLink 9954721 - Disclosure - Stock-Based Compensation - Stock Activity (Details) link:presentationLink link:calculationLink link:definitionLink 9954722 - Disclosure - Accumulated Other Comprehensive Income (Loss) - Narrative (Details) link:presentationLink link:calculationLink link:definitionLink 9954723 - Disclosure - Accumulated Other Comprehensive Income (Loss) - Changes In Accumulated Other Comprehensive Income (Loss) (Details) link:presentationLink link:calculationLink link:definitionLink 9954724 - Disclosure - Income Taxes (Details) link:presentationLink link:calculationLink link:definitionLink 9954725 - Disclosure - Segment Reporting - Revenue by Geographic Areas (Details) link:presentationLink link:calculationLink link:definitionLink 9954726 - Disclosure - Segment Reporting - Income From Operation by Geographic Areas (Details) link:presentationLink link:calculationLink link:definitionLink 9954727 - Disclosure - Segment Reporting - Long-Lived Assets by Geographic Areas (Details) link:presentationLink link:calculationLink link:definitionLink 9954728 - Disclosure - Segment Reporting - Disaggregation of Revenue (Details) link:presentationLink link:calculationLink link:definitionLink EX-101.CAL 6 prlb-20230630_cal.xml XBRL TAXONOMY EXTENSION CALCULATION LINKBASE DOCUMENT EX-101.DEF 7 prlb-20230630_def.xml XBRL TAXONOMY EXTENSION DEFINITION LINKBASE DOCUMENT EX-101.LAB 8 prlb-20230630_lab.xml XBRL TAXONOMY EXTENSION LABEL LINKBASE DOCUMENT Stock Appreciation Rights (SARs) Stock Appreciation Rights (SARs) [Member] Pay vs Performance Disclosure [Line Items] Proceeds from sales of marketable securities Proceeds from Sale of Debt Securities, Available-for-Sale Statistical Measurement [Domain] Statistical Measurement [Domain] Allowance for obsolescence Inventory Valuation Reserves Research and development Research and Development Expense Software platform Software Platform [Member] Information pertaining to software platform. Changes in operating assets and liabilities: Increase (Decrease) in Operating Capital [Abstract] Underlying Security Market Price Change Underlying Security Market Price Change, Percent Stock-based award, term (in years) Share-Based Compensation Arrangement by Share-Based Payment Award, Expiration Period Award Type [Domain] Award Type [Domain] Fair Value as of Grant Date Award Grant Date Fair Value Beginning balance (in shares) Ending balance (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Number Performance change, weighted-average grant date fair value (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. Statement of Stockholders' Equity [Abstract] Statement of Stockholders' Equity [Abstract] Investments, Debt and Equity Securities [Abstract] Long-term deferred tax liabilities Deferred Income Tax Liabilities, Net MNPI Disclosure Timed for Compensation Value MNPI Disclosure Timed for Compensation Value [Flag] Performance Shares Performance Shares [Member] Segment Reporting [Abstract] Accounts payable Accounts Payable, Current Impairments related to closure of Japan business Disposal Group, Not Discontinued Operation, Loss (Gain) on Write-down Restatement Determination Date: Restatement Determination Date [Axis] Corporate debt securities Corporate Debt Securities [Member] Federal statutory rate (in percent) Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent Insider Trading Policies and Procedures [Line Items] Option exercisable (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Number Rule 10b5-1 Arrangement Terminated Rule 10b5-1 Arrangement Terminated [Flag] Restatement does not require Recovery Restatement Does Not Require Recovery [Text Block] Geographical [Axis] Geographical [Axis] Income Taxes Income Tax Disclosure [Text Block] Expected dividend yield Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Dividend Rate Current liabilities Liabilities, Current [Abstract] Preferred stock, par value (in dollars per share) Preferred Stock, Par or Stated Value Per Share Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of each of June 30, 2023, and December 31, 2022 Preferred Stock, Value, Issued 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] Fair Value, Recurring and Nonrecurring [Table] Fair Value, Recurring and Nonrecurring [Table] Diluted (in dollars per share) Earnings Per Share, Diluted PEO Total Compensation Amount PEO Total Compensation Amount Employee Stock Option and Other Employee Stock Option and Other [Member] Employee Stock Option and Other Accounts receivable, net of allowance for doubtful accounts of $2,209 and $1,706 as of June 30, 2023, and December 31, 2022, respectively Accounts Receivable, after Allowance for Credit Loss, Current Trading Arrangements, by Individual Trading Arrangements, by Individual [Table] Level 3 Fair Value, Inputs, Level 3 [Member] Options outstanding, beginning balance (in shares) Options outstanding, ending balance (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number Common shares issued on exercise of options and other, net of shares withheld for tax obligations Stock Issued During Period, Value, Stock Options Exercised Trading Symbol Trading Symbol U.S. government agency securities US Government Agencies Debt Securities [Member] Non-PEO NEO Average Compensation Actually Paid Amount Non-PEO NEO Average Compensation Actually Paid Amount Non-compete agreement Noncompete Agreements [Member] Granted, weighted-average exercise price (in dollars per share) Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Grants in Period, Weighted Average Exercise Price 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 Net (loss) income Net (loss) income Net income Net Income (Loss) Total current liabilities Liabilities, Current Fair Value Disclosures [Abstract] Changed Peer Group, Footnote Changed Peer Group, Footnote [Text Block] Company Selected Measure Name Company Selected Measure Name Acquired Finite-Lived Intangible Assets [Line Items] Acquired Finite-Lived Intangible Assets [Line Items] Liabilities and shareholders' equity Liabilities and Equity [Abstract] Shareholders' equity Equity, Attributable to Parent [Abstract] Amounts reclassified from accumulated other comprehensive loss Reclassification from AOCI, Current Period, Net of Tax, Attributable to Parent Unrealized Losses Debt Securities, Available-for-Sale, Accumulated Gross Unrealized Loss, before Tax Exercised (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period Total inventory Inventory, Gross Schedule of Earnings Per Share, Basic and Diluted Schedule of Earnings Per Share, Basic and Diluted [Table Text Block] Cost of revenue Cost of Goods and Services Sold Japan Japan Segment [Member] Operating segment for Japan. Stock-based award, vesting period (in years) Share-Based Compensation Arrangement by Share-Based Payment Award, Award Vesting Period Proceeds from sales of property, equipment and other capital assets Proceeds from Sale of Productive Assets Executive Category: Executive Category [Axis] Effect of exchange rate changes on cash and cash equivalents Effect of Exchange Rate on Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Including Disposal Group and Discontinued Operations United States United States Segment [Member] Operating segment for United States. Recent Accounting Pronouncements Significant Accounting Policies [Text Block] Exercised, weighted-average exercise price (in dollars per share) Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price Level 1 Fair Value, Inputs, Level 1 [Member] Name Measure Name Short-term marketable securities Marketable Securities, Current Name Forgone Recovery, Individual Name Goodwill Goodwill Equity Components [Axis] Equity Components [Axis] Financial Instruments [Domain] Financial Instruments [Domain] Additional 402(v) Disclosure Additional 402(v) Disclosure [Text Block] Granted (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Gross Underlying Securities Award Underlying Securities Amount Entity Small Business Entity Small Business Discount from market price (in percent) Share-Based Compensation Arrangement by Share-Based Payment Award, Discount from Market Price, Offering Date 2027 Finite-Lived Intangible Asset, Expected Amortization, Year Four Local Phone Number Local Phone Number Accounts receivable Increase (Decrease) in Accounts Receivable Recovery of Erroneously Awarded Compensation Disclosure [Line Items] Net unrealized gains (losses) on investments in securities OCI, Debt Securities, Available-for-Sale, Unrealized Holding Gain (Loss), before Adjustment, after Tax Measurement Frequency [Axis] Measurement Frequency [Axis] Long-term operating lease liabilities Operating Lease, Liability, Noncurrent Investments Classified by Contractual Maturity Date Investments Classified by Contractual Maturity Date [Table Text Block] 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] Forgone Recovery due to Violation of Home Country Law, Amount Forgone Recovery due to Violation of Home Country Law, Amount Europe Europe [Member] Income taxes payable Accrued Income Taxes, Current Product and Service [Domain] Product and Service [Domain] Other Performance Measure, Amount Other Performance Measure, Amount Aggregate Available Trading Arrangement, Securities Aggregate Available Amount Inventories Increase (Decrease) in Inventories Investing activities Net Cash Provided by (Used in) Investing Activities [Abstract] Insider Trading Policies and Procedures Not Adopted Insider Trading Policies and Procedures Not Adopted [Text Block] Award Type [Axis] Award Type [Axis] Anti-dilutive options excluded from calculation of diluted weighted average shares outstanding (in shares) Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount Awards granted in period (in shares) Granted (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period Acquired 3D Hubs Acquired 3D Hubs [Member] Represents acquired 3D Hubs. Plan Name [Domain] Plan Name [Domain] Document Quarterly Report Document Quarterly Report Income taxes receivable Income Taxes Receivable, Current Fair Value Hierarchy and NAV [Domain] Fair Value Hierarchy and NAV [Domain] Intangible assets acquired Finite-Lived Intangible Assets Acquired Remaining 2023 Finite-Lived Intangible Asset, Expected Amortization, Remainder of Fiscal Year Trading Arrangement: Trading Arrangement [Axis] PEO Actually Paid Compensation Amount PEO Actually Paid Compensation Amount Entity File Number Entity File Number Schedule of Antidilutive Securities Excluded from Computation of Earnings Per Share [Table] Schedule of Antidilutive Securities Excluded from Computation of Earnings Per Share [Table] Current operating lease liabilities Operating Lease, Liability, Current Net unrealized gains (losses) on investments in securities AOCI, Accumulated Gain (Loss), Debt Securities, Available-for-Sale, Parent [Member] Software technology Computer Software, Intangible Asset [Member] Closure of Japan business Closure of Japan Business Amount of operating expense from disposal group. Amortization expense for intangible assets Amortization of Intangible Assets Entity Shell Company Entity Shell Company Business Acquisition, Acquiree [Domain] Business Acquisition, Acquiree [Domain] Other comprehensive income (loss) before reclassifications OCI, before Reclassifications, Net of Tax, Attributable to Parent Net Finite-Lived Intangible Assets, Net Restatement Determination Date Restatement Determination Date Income taxes Increase (Decrease) in Income Taxes Payable Rule 10b5-1 Arrangement Adopted Rule 10b5-1 Arrangement Adopted [Flag] Asset Class [Axis] Asset Class [Axis] Accumulated Amortization Finite-Lived Intangible Assets, Accumulated Amortization Stock Price or TSR Estimation Method Stock Price or TSR Estimation Method [Text Block] Shares used to compute net (loss) income per share: Weighted Average Number of Shares Outstanding Reconciliation [Abstract] Common stock, issued (in shares) Common Stock, Shares, Issued Restrictions lapsed (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period Gross profit Gross Profit Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions [Table Text Block] Security Exchange Name Security Exchange Name Total Assets, Fair Value Disclosure 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). Accumulated other comprehensive loss Accumulated Other Comprehensive Income (Loss), Net of Tax Foreign currency translation adjustments Accumulated Foreign Currency Adjustment Attributable to Parent [Member] Stock Options Employee Stock Option [Member] Stock based award, unrecognized compensation expense, period for recognition (in years) Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition Maximum Maximum [Member] Comprehensive income (loss) Comprehensive income Comprehensive Income (Loss), Net of Tax, Attributable to Parent Schedule of Acquired Finite-Lived Intangible Asset by Major Class [Table] Schedule of Acquired Finite-Lived Intangible Asset by Major Class [Table] Stock based award, unrecognized compensation expense Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount Document Type Document Type Tabular List, Table Tabular List [Table Text Block] ESPP ESPP [Member] ESPP [member Entity Address, Address Line One Entity Address, Address Line One Long-term marketable securities Marketable Securities, Noncurrent Accrued liabilities and other Accrued Liabilities and Other Liabilities Antidilutive Securities, Name [Domain] Antidilutive Securities, Name [Domain] Stock-Based Compensation Share-Based Payment Arrangement [Text Block] Purchases of marketable securities Payments to Acquire Debt Securities, Available-for-Sale Weighted- Average Exercise Price Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract] Business Acquisition [Axis] Business Acquisition [Axis] Allowance for credit loss, current Accounts Receivable, Allowance for Credit Loss, Current Schedule of Finite-Lived Intangible Assets Schedule of Finite-Lived Intangible Assets [Table Text Block] Cash Cash [Member] Income Statement [Abstract] Income Statement [Abstract] Revenue Total revenue Revenue from Contract with Customer, Including Assessed Tax Forfeited (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures in Period Title of 12(b) Security Title of 12(b) Security Insider Trading Policies and Procedures Adopted Insider Trading Policies and Procedures Adopted [Flag] Cash and cash equivalents Cash and Cash Equivalents, Fair Value Disclosure Aggregate Erroneous Compensation Not Yet Determined Aggregate Erroneous Compensation Not Yet Determined [Text Block] Operating Segments Operating Segments [Member] Beginning balance, weighted-average grant date fair value (in dollars per share) Ending balance, weighted-average grant date fair value (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 Income Tax Disclosure [Abstract] Forgone Recovery due to Expense of Enforcement, Amount Forgone Recovery due to Expense of Enforcement, Amount Share-Based Payment Arrangement [Abstract] Entity Tax Identification Number Entity Tax Identification Number Inventory Inventory, net of allowance Inventory, Net Statistical Measurement [Axis] Statistical Measurement [Axis] Financial Instrument [Axis] Financial Instrument [Axis] Entity Interactive Data Current Entity Interactive Data Current CNC Machining CNC Machining (Firstcut) [Member] Represents the CNC Machining (Firstcut) product. Debt Securities, Available-for-Sale [Table] Debt Securities, Available-for-Sale [Table] Total Shareholder Return Amount Total Shareholder Return Amount Repurchases of common stock Payments for Repurchase of Common Stock Entity Common Stock, Shares Outstanding Entity Common Stock, Shares Outstanding Adjustment To PEO Compensation, Footnote Adjustment To PEO Compensation, Footnote [Text Block] Inventory Disclosure [Abstract] Segments [Domain] Segments [Domain] Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items] Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items] Fair Value Hierarchy and NAV [Axis] Fair Value Hierarchy and NAV [Axis] Consolidation Items [Domain] Consolidation Items [Domain] Retained earnings Retained Earnings (Accumulated Deficit) Measure: Measure [Axis] Name Outstanding Recovery, Individual Name Entity Incorporation, State or Country Code Entity Incorporation, State or Country Code Current assets Assets, Current [Abstract] Entity Address, State or Province Entity Address, State or Province Compensation Actually Paid vs. Total Shareholder Return Compensation Actually Paid vs. Total Shareholder Return [Text Block] Operating activities Net Cash Provided by (Used in) Operating Activities [Abstract] Antidilutive Securities Excluded from Computation of Earnings Per Share [Line Items] Antidilutive Securities Excluded from Computation of Earnings Per Share [Line Items] 2024 Finite-Lived Intangible Asset, Expected Amortization, Year One Common stock, outstanding (in shares) Beginning balance (in shares) Ending balance (in shares) Common Stock, Shares, Outstanding Proceeds from call redemptions and maturities of marketable securities Proceeds from Maturities, Prepayments and Calls of Debt Securities, Available-for-Sale PEO PEO [Member] Long-Term Incentive Plan 2012 Long-Term Incentive Plan 2012 [Member] Information pertaining to the 2012 Long-Term Incentive Plan. Comprehensive Income (Loss) Comprehensive Income (Loss) [Table Text Block] Other Other Operating Activities, Cash Flow Statement Accumulated Other Comprehensive Income (Loss) [Line Items] Accumulated Other Comprehensive Income (Loss) [Line Items] Asset Class [Domain] Asset Class [Domain] Common stock, par value (in dollars per share) Common Stock, Par or Stated Value Per Share Net cash provided by (used in) investing activities Net Cash Provided by (Used in) Investing Activities Schedule of Inventory, Current Schedule of Inventory, Current [Table Text Block] Stock Options Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding [Roll Forward] Repurchases of common stock and other Stock Repurchased and Retired During Period, Value Outstanding Aggregate Erroneous Compensation Amount Outstanding Aggregate Erroneous Compensation Amount Effective income tax rate (in percent) Effective Income Tax Rate Reconciliation, Percent Effective income tax rate, increase (decrease) 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. Total liabilities Liabilities Expected volatility Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Volatility Rate Basis of Presentation Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block] Total Shareholder Return Vs Peer Group Total Shareholder Return Vs Peer Group [Text Block] Prepaid expenses and other Increase (Decrease) in Prepaid Expense and Other Assets Accumulated Other Comprehensive Loss AOCI Attributable to Parent [Member] Aggregate Erroneous Compensation Amount Aggregate Erroneous Compensation Amount Measurement Frequency [Domain] Measurement Frequency [Domain] All Executive Categories All Executive Categories [Member] Accumulated Other Comprehensive Income (Loss) [Table] Accumulated Other Comprehensive Income (Loss) [Table] Non-Rule 10b5-1 Arrangement Adopted Non-Rule 10b5-1 Arrangement Adopted [Flag] Plan Name [Axis] Plan Name [Axis] Net (loss) income per share: Earnings Per Share [Abstract] Stock Share-Based Compensation Arrangement by Share-Based Payment Award, Non-Option Equity Instruments, Outstanding [Roll Forward] Marketing and sales Selling and Marketing Expense Foreign currency losses Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, before Tax Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 26,095,434 and 26,888,425 shares as of June 30, 2023, and December 31, 2022, respectively Common Stock, Value, Issued General and administrative General and Administrative Expense 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 Organization, Consolidation and Presentation of Financial Statements [Abstract] Tradenames Trade Names [Member] Awards Close in Time to MNPI Disclosures, Table Awards Close in Time to MNPI Disclosures [Table Text Block] Total current assets Assets, Current Other intangible assets, net Other Intangible Assets, Net Principal repayments of finance lease obligations Finance Lease, Principal Payments All Individuals All Individuals [Member] Other (loss) income, net Other Nonoperating Income (Expense) Entity Filer Category Entity Filer Category Non-PEO NEO Average Total Compensation Amount Non-PEO NEO Average Total Compensation Amount Statement [Table] Statement [Table] Current Fiscal Year End Date Current Fiscal Year End Date Goodwill and Other Intangible Assets Goodwill and Intangible Assets Disclosure [Text Block] Unrecognized tax benefits Unrecognized Tax Benefits PEO Name PEO Name Preferred stock, authorized (in shares) Preferred Stock, Shares Authorized Other Revenue Other Products [Member] Represents other products. Granted, weighted-average grant date fair value (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 Expired (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Expirations in Period Preferred stock, outstanding (in shares) Preferred Stock, Shares Outstanding Net cash provided by operating activities Net Cash Provided by (Used in) Operating Activities Schedule of Finite-Lived Intangible Assets, Future Amortization Expense Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block] Income from Operations by Geographic Area Income from Operations by Geographic Area [Table Text Block] Tabular disclosure of income from operations by geographic area. Erroneously Awarded Compensation Recovery Erroneously Awarded Compensation Recovery [Table] 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. Depreciation and amortization Depreciation, Depletion and Amortization Award Timing, How MNPI Considered Award Timing, How MNPI Considered [Text Block] Statement of Financial Position [Abstract] Statement of Financial Position [Abstract] Total shareholders' equity Beginning balance Ending balance Equity, Attributable to Parent Consolidation Items [Axis] Consolidation Items [Axis] Restricted Stock Restricted Stock [Member] 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. Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table] Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table] Finite-Lived Intangible Assets, Major Class Name [Domain] Finite-Lived Intangible Assets, Major Class Name [Domain] Foreign currency translation adjustment Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax Expected life (years) Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Term Income before income taxes Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest U.S. municipal securities US States and Political Subdivisions Debt Securities [Member] Preferred stock, issued (in shares) Preferred Stock, Shares Issued Level 2 Fair Value, Inputs, Level 2 [Member] Entity Emerging Growth Company Entity Emerging Growth Company Long-Lived Assets by Geographic Areas Long-Lived Assets by Geographic Areas [Table Text Block] Debt Securities, Available-for-Sale, Fair Value, Fiscal Year Maturity [Abstract] Debt Securities, Available-for-Sale, Fair Value, Fiscal Year Maturity [Abstract] Increase (Decrease) in Stockholders' Equity [Roll Forward] Increase (Decrease) in Stockholders' Equity [Roll Forward] Named Executive Officers, Footnote Named Executive Officers, Footnote [Text Block] Europe Europe Segment [Member] Operating segment for Europe Document Fiscal Period Focus Document Fiscal Period Focus Useful Life (in years) Finite-Lived Intangible Asset, Useful Life Accrued liabilities and other Increase (Decrease) in Accrued Liabilities and Other Operating Liabilities Pay vs Performance Disclosure, Table Pay vs Performance [Table Text Block] Antidilutive Securities [Axis] Antidilutive Securities [Axis] Title Trading Arrangement, Individual Title Options outstanding, beginning balance, weighted-average exercise price (in dollars per share) Options outstanding, ending balance, weighted-average exercise price (in dollars per share) Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price Stock-based compensation expense Share-Based Payment Arrangement, Noncash Expense Revenue from External Customers by Geographic Areas Revenue from External Customers by Geographic Areas [Table Text Block] Accumulated Other Comprehensive Income (Loss) Disclosure of Reclassification Amount [Text Block] Common Stock Common Stock [Member] Individual: Individual [Axis] Marketing assets Marketing-Related Intangible Assets [Member] City Area Code City Area Code Entity Address, Postal Zip Code Entity Address, Postal Zip Code Product and Service [Axis] Product and Service [Axis] Net (Loss) Income per Common Share Earnings Per Share [Text Block] Document Fiscal Year Focus Document Fiscal Year Focus Geographical [Domain] Geographical [Domain] Minimum Minimum [Member] Property and equipment, net Total Long-lived Assets Property, Plant and Equipment, Net Share-Based Payment Arrangement, Option, Activity Share-Based Payment Arrangement, Option, Activity [Table Text Block] Exercise Price Award Exercise Price Employee Stock Purchase Plan Employee Stock Purchase Plan [Member] Information pertaining to the Employee Stock Purchase Plan. Finite-Lived Intangible Assets by Major Class [Axis] Finite-Lived Intangible Assets by Major Class [Axis] Net (loss) income per share: Earnings Per Share, Basic and Diluted EPS [Abstract] Earnings Per Share, Basic and Diluted EPS Statement of Cash Flows [Abstract] Statement of Cash Flows [Abstract] Assets Assets [Abstract] Award Timing MNPI Disclosure Award Timing MNPI Disclosure [Text Block] Goodwill and Intangible Assets Disclosure [Abstract] Available-for-Sale Securities, Debt Maturities [Abstract] Available-for-Sale Securities, Debt Maturities [Abstract] Loss on foreign currency translation Gain (Loss), Foreign Currency Transaction, before Tax Purchases of shares withheld for tax obligations Payment, Tax Withholding, Share-Based Payment Arrangement Net cash used in financing activities Net Cash Provided by (Used in) Financing Activities Fair Value, Assets Measured on Recurring Basis Fair Value, Assets Measured on Recurring Basis [Table Text Block] Retained Earnings Retained Earnings [Member] 3D Printing 3D Printing (Fineline) [Member] Represents the 3D Printing (Fineline) product. Adjustment to Non-PEO NEO Compensation Footnote Adjustment to Non-PEO NEO Compensation Footnote [Text Block] Total liabilities and shareholders' equity Liabilities and Equity Cost Debt Securities, Available-for-Sale, Amortized Cost Other long-term assets Other Assets, Noncurrent Peer Group Total Shareholder Return Amount Peer Group Total Shareholder Return Amount Risk-free interest rate Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Risk Free Interest Rate Weighted Average Useful Life Remaining (in years) Finite-Lived Intangible Assets, Remaining Amortization Period Basic (in dollars per share) Earnings Per Share, Basic Operating lease assets Operating Lease, Right-of-Use Asset Accounting Policies [Abstract] Accounting Policies [Abstract] Equity Valuation Assumption Difference, Footnote Equity Valuation Assumption Difference, Footnote [Text Block] Erroneous Compensation Analysis Erroneous Compensation Analysis [Text Block] Arrangement Duration Trading Arrangement Duration Entity Address, City or Town Entity Address, City or Town Award Timing MNPI Considered Award Timing MNPI Considered [Flag] Sheet Metal Sheet Metal [Member] Represents the information pertaining to sheet metal. Document Transition Report Document Transition Report Award Timing Predetermined Award Timing Predetermined [Flag] Termination Date Trading Arrangement Termination Date Accounts payable Increase (Decrease) in Accounts Payable Common stock, authorized (in shares) Common Stock, Shares Authorized Debt securities, available-for-sale Fair Value Total marketable securities Debt Securities, Available-for-Sale Unrealized Gains Debt Securities, Available-for-Sale, Accumulated Gross Unrealized Gain, before Tax 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 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. Adjustments to reconcile net income to net cash provided by operating activities: Adjustments to Reconcile Net Income (Loss) to Cash Provided by (Used in) Operating Activities [Abstract] All Trading Arrangements All Trading Arrangements [Member] All Adjustments to Compensation All Adjustments to Compensation [Member] Award Timing Disclosures [Line Items] Marketable Securities Investment [Text Block] Compensation Amount Outstanding Recovery Compensation Amount 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). Forfeited, weighted-average grant date fair value (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 Deferred taxes Deferred Income Tax Expense (Benefit) Forfeited, weighted-average exercise price (in dollars per share) Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price Prepaid expenses and other current assets Prepaid Expense and Other Assets, Current 2026 Finite-Lived Intangible Asset, Expected Amortization, Year Three Forfeited (in shares) Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeited in Period Insider Trading Arrangements [Line Items] Schedule of Segment Reporting Information, by Segment [Table] Schedule of Segment Reporting Information, by Segment [Table] 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 Entity Registrant Name Entity Registrant Name Material Terms of Trading Arrangement Material Terms of Trading Arrangement [Text Block] Award Timing Method Award Timing Method [Text Block] Employee stock options and other (in shares) Incremental Common Shares Attributable to Dilutive Effect of Share-Based Payment Arrangements 2025 Finite-Lived Intangible Asset, Expected Amortization, Year Two Adjustment to Compensation, Amount Adjustment to Compensation Amount 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. Document Period End Date Document Period End Date Compensation Actually Paid vs. Net Income Compensation Actually Paid vs. Net Income [Text Block] Adoption Date Trading Arrangement Adoption Date Peer Group Issuers, Footnote Peer Group Issuers, Footnote [Text Block] 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 Long-term finance lease liabilities Finance Lease, Liability, Noncurrent Entity Central Index Key Entity Central Index Key Segment Reporting Information [Line Items] Segment Reporting Information [Line Items] Gain on disposal of property and equipment Gain (Loss) on Disposition of Property Plant Equipment Stock-based compensation expense Share-Based Payment Arrangement, Expense Non-Rule 10b5-1 Arrangement Terminated Non-Rule 10b5-1 Arrangement Terminated [Flag] Gross Finite-Lived Intangible Assets, Gross Effect of dilutive securities: Dilutive Securities, Effect on Basic Earnings Per Share [Abstract] Provision for income taxes Income Tax Expense (Benefit) Finance lease assets Finance Lease, Right-of-Use Asset, after Accumulated Amortization Accrued compensation Employee-related Liabilities, Current Fair Value Measurements Fair Value Disclosures [Text Block] Name Trading Arrangement, Individual Name Net current-period other comprehensive income (loss) Other Comprehensive Income (Loss), Net of Tax, Portion Attributable to Parent Disaggregation of Revenue Disaggregation of Revenue [Table Text Block] Debt Securities, Available-for-Sale [Line Items] Debt Securities, Available-for-Sale [Line Items] Inventory Inventory Disclosure [Text Block] Corporate Unallocated and Japan Corporate Unallocated and Japan Segment [Member] Segment for corporate unallocated expenses and Japan. Compensation Actually Paid vs. Company Selected Measure Compensation Actually Paid vs. Company Selected Measure [Text Block] Amendment Flag Amendment Flag Money market mutual fund Money Market Funds [Member] Injection Molding Injection Molding (Protomold) [Member] Represents the Injection Molding (Protomold) product. 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] Cash and cash equivalents Cash and Cash Equivalents, at Carrying Value Due in one year or less Debt Securities, Available-for-Sale, Fair Value, Maturity, Allocated and Single Maturity Date, Year One Financial Assets: Assets, Fair Value Disclosure [Abstract] Repurchases of common stock and other (in shares) Stock Repurchased and Retired During Period, Shares Certificates of deposit/time deposits Bank Time Deposits [Member] Compensation Actually Paid vs. Other Measure Compensation Actually Paid vs. Other Measure [Text Block] Diluted (in shares) Diluted - weighted-average shares outstanding (in shares) Weighted Average Number of Shares Outstanding, Diluted Forgone Recovery, Explanation of Impracticability Forgone Recovery, Explanation of Impracticability [Text Block] Operating expenses Operating Expenses [Abstract] Regulated Operations [Abstract] Purchases of property, equipment and other capital assets Payments to Acquire Property, Plant, and Equipment Company Selected Measure Amount Company Selected Measure Amount Additional paid-in capital Additional Paid in Capital, Common Stock Additional Paid-In Capital Additional Paid-in Capital [Member] Expired, weighted-average exercise price (in dollars per share) Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Expirations in Period, Weighted Average Exercise Price Cash and cash equivalents, beginning of period Cash and cash equivalents, end of period Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Including Disposal Group and Discontinued Operations Total assets Assets Name Awards Close in Time to MNPI Disclosures, Individual Name Cover [Abstract] Cover [Abstract] Stock-based compensation expense APIC, Share-Based Payment Arrangement, Increase for Cost Recognition UNITED STATES UNITED STATES Fair Value, Recurring Fair Value, Recurring [Member] Other long-term liabilities Other Liabilities, Noncurrent Restrictions lapsed, weighted-average grant date fair value (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 Non-NEOs Non-NEOs [Member] Total operating expenses Operating Expenses Segment Reporting Segment Reporting Disclosure [Text Block] Net increase (decrease) in cash and cash equivalents Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Period Increase (Decrease), Including Exchange Rate Effect Financing activities Net Cash Provided by (Used in) Financing Activities [Abstract] Non-PEO NEO Non-PEO NEO [Member] Equity Component [Domain] Equity Component [Domain] Current finance lease liabilities Finance Lease, Liability, Current Adjustment to Compensation: Adjustment to Compensation [Axis] Purchase price of common stock (in percent) Share-Based Compensation Arrangement by Share-Based Payment Award, Purchase Price of Common Stock, Percent Non-GAAP Measure Description Non-GAAP Measure Description [Text Block] Basic (in shares) Basic - weighted-average shares outstanding (in shares) Weighted Average Number of Shares Outstanding, Basic Entity Current Reporting Status Entity Current Reporting Status Income from operations Total Income from Operations Operating Income (Loss) Statements of Operations: Revenues [Abstract] Finite-Lived Intangible Assets, Net, Amortization Expense, Fiscal Year Maturity [Abstract] Finite-Lived Intangible Assets, Net, Amortization Expense, Fiscal Year Maturity [Abstract] Comprehensive Income (Loss) (net of tax) Comprehensive Income (Loss), Net of Tax, Attributable to Parent [Abstract] Proceeds from exercises of stock options Proceeds, Issuance of Shares, Share-Based Payment Arrangement, Including Option Exercised Pay vs Performance Disclosure Pay vs Performance Disclosure [Table] Segments [Axis] Segments [Axis] Statement [Line Items] Statement [Line Items] Interest on finance lease obligations Accretion Expense Other comprehensive income (loss) Other Comprehensive Income (Loss), Net of Tax [Abstract] Schedule of Nonvested Performance-Based Units Activity Schedule of Nonvested Performance-Based Units Activity [Table Text Block] Additional Disclosures Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Additional Disclosures [Abstract] Forgone Recovery due to Disqualification of Tax Benefits, Amount Forgone Recovery due to Disqualification of Tax Benefits, Amount Awards Close in Time to MNPI Disclosures Awards Close in Time to MNPI Disclosures [Table] Customer relationships Customer Relationships [Member] Debt Securities, Available-for-Sale Debt Securities, Available-for-Sale [Table Text Block] EX-101.PRE 9 prlb-20230630_pre.xml XBRL TAXONOMY EXTENSION PRESENTATION LINKBASE DOCUMENT XML 10 R1.htm IDEA: XBRL DOCUMENT v3.23.2
Cover - shares
6 Months Ended
Jun. 30, 2023
Aug. 01, 2023
Cover [Abstract]    
Document Type 10-Q  
Document Quarterly Report true  
Document Period End Date Jun. 30, 2023  
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   26,095,434
Entity Central Index Key 0001443669  
Current Fiscal Year End Date --12-31  
Document Fiscal Year Focus 2023  
Document Fiscal Period Focus Q2  
Amendment Flag false  
XML 11 R2.htm IDEA: XBRL DOCUMENT v3.23.2
Consolidated Balance Sheets - USD ($)
$ in Thousands
Jun. 30, 2023
Dec. 31, 2022
Current assets    
Cash and cash equivalents $ 66,493 $ 56,558
Short-term marketable securities 19,945 23,568
Accounts receivable, net of allowance for doubtful accounts of $2,209 and $1,706 as of June 30, 2023, and December 31, 2022, respectively 75,034 76,225
Inventory 14,311 13,578
Income taxes receivable 868 4,042
Prepaid expenses and other current assets 8,501 12,597
Total current assets 185,152 186,568
Property and equipment, net 248,614 257,785
Goodwill 273,991 273,991
Other intangible assets, net 28,353 31,250
Long-term marketable securities 16,344 26,419
Operating lease assets 3,084 3,844
Finance lease assets 16,934 17,532
Other long-term assets 4,738 4,779
Total assets 777,210 802,168
Current liabilities    
Accounts payable 16,474 17,356
Accrued compensation 12,486 12,743
Accrued liabilities and other 19,155 22,384
Current operating lease liabilities 1,209 1,561
Current finance lease liabilities 16,549 17,537
Income taxes payable 348 0
Total current liabilities 66,221 71,581
Long-term operating lease liabilities 1,833 2,255
Long-term finance lease liabilities 745 0
Long-term deferred tax liabilities 20,790 26,322
Other long-term liabilities 4,936 4,362
Total liabilities 94,525 104,520
Shareholders' equity    
Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of each of June 30, 2023, and December 31, 2022 0 0
Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 26,095,434 and 26,888,425 shares as of June 30, 2023, and December 31, 2022, respectively 26 27
Additional paid-in capital 464,950 473,740
Retained earnings 246,930 258,236
Accumulated other comprehensive loss (29,221) (34,355)
Total shareholders' equity 682,685 697,648
Total liabilities and shareholders' equity $ 777,210 $ 802,168
XML 12 R3.htm IDEA: XBRL DOCUMENT v3.23.2
Consolidated Balance Sheets (Parenthetical) - USD ($)
$ in Thousands
Jun. 30, 2023
Dec. 31, 2022
Statement of Financial Position [Abstract]    
Allowance for credit loss, current $ 2,209 $ 1,706
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) 26,095,434 26,888,425
Common stock, outstanding (in shares) 26,095,434 26,888,425
XML 13 R4.htm IDEA: XBRL DOCUMENT v3.23.2
Consolidated Statements of Comprehensive Income (Unaudited) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2023
Jun. 30, 2022
Jun. 30, 2023
Jun. 30, 2022
Statements of Operations:        
Revenue $ 122,265 $ 126,902 $ 248,124 $ 251,070
Cost of revenue 69,142 69,480 141,225 137,844
Gross profit 53,123 57,422 106,899 113,226
Operating expenses        
Marketing and sales 21,730 21,055 44,181 41,641
Research and development 9,865 9,450 20,542 20,007
General and administrative 15,822 16,522 32,655 33,293
Closure of Japan business 98 5,194 164 5,194
Total operating expenses 47,515 52,221 97,542 100,135
Income from operations 5,608 5,201 9,357 13,091
Other (loss) income, net (3,368) 1 (2,078) (299)
Income before income taxes 2,240 5,202 7,279 12,792
Provision for income taxes 2,623 2,645 5,003 5,140
Net (loss) income $ (383) $ 2,557 $ 2,276 $ 7,652
Net (loss) income per share:        
Basic (in dollars per share) $ (0.01) $ 0.09 $ 0.09 $ 0.28
Diluted (in dollars per share) $ (0.01) $ 0.09 $ 0.09 $ 0.28
Shares used to compute net (loss) income per share:        
Basic (in shares) 26,210,478 27,530,739 26,414,467 27,515,583
Diluted (in shares) 26,210,478 27,536,823 26,445,427 27,524,019
Comprehensive Income (Loss) (net of tax)        
Comprehensive income (loss) $ 3,890 $ (11,287) $ 7,410 $ (11,680)
XML 14 R5.htm IDEA: XBRL DOCUMENT v3.23.2
Consolidated Statements of Shareholders' Equity - USD ($)
$ in Thousands
Total
Common Stock
Additional Paid-In Capital
Retained Earnings
Accumulated Other Comprehensive Loss
Beginning balance (in shares) at Dec. 31, 2021   27,465,945      
Beginning balance at Dec. 31, 2021 $ 828,493 $ 28 $ 468,548 $ 376,734 $ (16,817)
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)   27,716      
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (462)   (462)    
Stock-based compensation expense 4,397   4,397    
Net (loss) income 5,095     5,095  
Other comprehensive income (loss)          
Foreign currency translation adjustment (4,972)       (4,972)
Net unrealized gains (losses) on investments in securities (516)       (516)
Comprehensive income (393)        
Ending balance (in shares) at Mar. 31, 2022   27,493,661      
Ending balance at Mar. 31, 2022 832,035 $ 28 472,483 381,829 (22,305)
Beginning balance (in shares) at Dec. 31, 2021   27,465,945      
Beginning balance at Dec. 31, 2021 828,493 $ 28 468,548 376,734 (16,817)
Increase (Decrease) in Stockholders' Equity [Roll Forward]          
Net (loss) income 7,652        
Other comprehensive income (loss)          
Comprehensive income (11,680)        
Ending balance (in shares) at Jun. 30, 2022   27,503,100      
Ending balance at Jun. 30, 2022 820,698 $ 28 475,740 381,079 (36,149)
Beginning balance (in shares) at Mar. 31, 2022   27,493,661      
Beginning balance at Mar. 31, 2022 832,035 $ 28 472,483 381,829 (22,305)
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)   122,705      
Common shares issued on exercise of options and other, net of shares withheld for tax obligations 1,158   1,158    
Stock-based compensation expense 4,031   4,031    
Repurchases of common stock and other (in shares)   (113,266)      
Repurchases of common stock and other (5,239)   (1,932) (3,307)  
Net (loss) income 2,557     2,557  
Other comprehensive income (loss)          
Foreign currency translation adjustment (13,515)       (13,515)
Net unrealized gains (losses) on investments in securities (329)       (329)
Comprehensive income (11,287)        
Ending balance (in shares) at Jun. 30, 2022   27,503,100      
Ending balance at Jun. 30, 2022 $ 820,698 $ 28 475,740 381,079 (36,149)
Beginning balance (in shares) at Dec. 31, 2022 26,888,425 26,888,425      
Beginning balance at Dec. 31, 2022 $ 697,648 $ 27 473,740 258,236 (34,355)
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)   26,798      
Common shares issued on exercise of options and other, net of shares withheld for tax obligations (401)   (401)    
Stock-based compensation expense 3,695   3,695    
Repurchases of common stock and other (in shares)   (712,500)      
Repurchases of common stock and other (21,325) $ (1) (11,849) (9,475)  
Net (loss) income 2,659     2,659  
Other comprehensive income (loss)          
Foreign currency translation adjustment 527       527
Net unrealized gains (losses) on investments in securities 334       334
Comprehensive income 3,520        
Ending balance (in shares) at Mar. 31, 2023   26,202,723      
Ending balance at Mar. 31, 2023 $ 683,137 $ 26 465,185 251,420 (33,494)
Beginning balance (in shares) at Dec. 31, 2022 26,888,425 26,888,425      
Beginning balance at Dec. 31, 2022 $ 697,648 $ 27 473,740 258,236 (34,355)
Increase (Decrease) in Stockholders' Equity [Roll Forward]          
Net (loss) income 2,276        
Other comprehensive income (loss)          
Comprehensive income $ 7,410        
Ending balance (in shares) at Jun. 30, 2023 26,095,434 26,095,434      
Ending balance at Jun. 30, 2023 $ 682,685 $ 26 464,950 246,930 (29,221)
Beginning balance (in shares) at Mar. 31, 2023   26,202,723      
Beginning balance at Mar. 31, 2023 683,137 $ 26 465,185 251,420 (33,494)
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)   169,229      
Common shares issued on exercise of options and other, net of shares withheld for tax obligations 962   962    
Stock-based compensation expense 3,675   3,675    
Repurchases of common stock and other (in shares)   (276,518)      
Repurchases of common stock and other (8,979)   (4,872) (4,107)  
Net (loss) income (383)     (383)  
Other comprehensive income (loss)          
Foreign currency translation adjustment 4,254       4,254
Net unrealized gains (losses) on investments in securities 19       19
Comprehensive income $ 3,890        
Ending balance (in shares) at Jun. 30, 2023 26,095,434 26,095,434      
Ending balance at Jun. 30, 2023 $ 682,685 $ 26 $ 464,950 $ 246,930 $ (29,221)
XML 15 R6.htm IDEA: XBRL DOCUMENT v3.23.2
Consolidated Statements of Cash Flows (Unaudited) - USD ($)
$ in Thousands
6 Months Ended
Jun. 30, 2023
Jun. 30, 2022
Operating activities    
Net income $ 2,276 $ 7,652
Adjustments to reconcile net income to net cash provided by operating activities:    
Depreciation and amortization 18,883 20,274
Stock-based compensation expense 7,370 8,428
Deferred taxes (5,605) (5,653)
Interest on finance lease obligations 568 0
Loss on foreign currency translation 3,906 0
Impairments related to closure of Japan business 0 1,792
Gain on disposal of property and equipment (428) 0
Other 215 32
Changes in operating assets and liabilities:    
Accounts receivable 1,106 (5,748)
Inventories (551) (1,783)
Prepaid expenses and other 4,193 (298)
Income taxes 3,524 (1,250)
Accounts payable (961) (521)
Accrued liabilities and other (2,629) 8,115
Net cash provided by operating activities 31,867 31,040
Investing activities    
Purchases of property, equipment and other capital assets (6,829) (6,030)
Proceeds from sales of property, equipment and other capital assets 623 0
Purchases of marketable securities 0 (38,882)
Proceeds from sales of marketable securities 0 1,000
Proceeds from call redemptions and maturities of marketable securities 14,020 7,396
Net cash provided by (used in) investing activities 7,814 (36,516)
Financing activities    
Proceeds from exercises of stock options 1,986 2,311
Purchases of shares withheld for tax obligations (1,425) (1,615)
Repurchases of common stock (30,064) (5,239)
Principal repayments of finance lease obligations (163) (278)
Net cash used in financing activities (29,666) (4,821)
Effect of exchange rate changes on cash and cash equivalents (80) (966)
Net increase (decrease) in cash and cash equivalents 9,935 (11,263)
Cash and cash equivalents, beginning of period 56,558 65,929
Cash and cash equivalents, end of period $ 66,493 $ 54,666
XML 16 R7.htm IDEA: XBRL DOCUMENT v3.23.2
Basis of Presentation
6 Months Ended
Jun. 30, 2023
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, 2022, as filed with the Securities and Exchange Commission (SEC) on February 21, 2023.
The accompanying Consolidated Balance Sheet as of December 31, 2022 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, 2023 as referenced above.
XML 17 R8.htm IDEA: XBRL DOCUMENT v3.23.2
Recent Accounting Pronouncements
6 Months Ended
Jun. 30, 2023
Accounting Policies [Abstract]  
Recent Accounting Pronouncements Recent Accounting PronouncementsThe Company did not recently adopt any accounting pronouncements that had a material impact on the Company's Consolidated Financial Statements. There are no pending accounting pronouncements that are expected to have a material impact on the Company's Consolidated Financial Statements.
XML 18 R9.htm IDEA: XBRL DOCUMENT v3.23.2
Net (Loss) Income per Common Share
6 Months Ended
Jun. 30, 2023
Earnings Per Share [Abstract]  
Net (Loss) Income per Common Share Net (Loss) Income per Common ShareBasic net (loss) income per share is computed based on the weighted-average number of common shares outstanding. Diluted net (loss) 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 380,848 and 220,776 for the three months ended June 30, 2023 and 2022, respectively, and 407,119 and 208,840 for the six months ended June 30, 2023 and 2022, respectively.
The table below sets forth the computation of basic and diluted net (loss) income per share:
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands, except share and per share amounts)2023202220232022
Net (loss) income$(383)$2,557 $2,276 $7,652 
Basic - weighted-average shares outstanding:26,210,47827,530,73926,414,46727,515,583
Effect of dilutive securities:
Employee stock options and other1
6,08430,9608,436
Diluted - weighted-average shares outstanding:26,210,47827,536,82326,445,42727,524,019
Net (loss) income per share:
Basic$(0.01)$0.09 $0.09 $0.28 
Diluted$(0.01)$0.09 $0.09 $0.28 
1 For the three months ended June 30, 2023, 14,084 of dilutive securities for employee stock options and other were not included in the diluted weighted average shares outstanding due to the net loss for the three months ended June 30, 2023.
XML 19 R10.htm IDEA: XBRL DOCUMENT v3.23.2
Intangible Assets, Goodwill and Other
6 Months Ended
Jun. 30, 2023
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, 2023.
Intangible assets other than goodwill at June 30, 2023 and December 31, 2022 were as follows:
June 30, 2023December 31, 2022Useful
Life (in years)
Weighted Average
Useful Life Remaining
(in years)
(in thousands)GrossAccumulated
Amortization
NetGrossAccumulated
Amortization
Net
Intangible assets with finite lives:
Marketing assets$930 $(852)$78 $930 $(806)$124 10.00.8
Non-compete agreement832 (545)287 828 (487)341 
2.0 - 5.0
1.8
Software technology13,229 (7,068)6,161 13,229 (6,383)6,846 10.04.5
Software platform26,247 (5,510)20,737 26,054 (4,337)21,717 12.09.6
Tradenames352 (286)66 350 (227)123 3.00.6
Customer relationships12,213 (11,189)1,024 12,197 (10,098)2,099 
3.0 - 9.0
0.4
Total intangible assets$53,803 $(25,450)$28,353 $53,588 $(22,338)$31,250 
Intangible assets allocated to the acquired Hubs 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 losses related to intangible assets were $1.5 million and $1.7 million as of June 30, 2023 and December 31, 2022, respectively. Amortization expense for intangible assets was $1.5 million for each of the three months ended June 30, 2023 and 2022 and $3.1 million for each of the six months ended June 30, 2023 and 2022, respectively.
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 2023$2,894
20243,741
20253,644
20263,542
20273,533
Thereafter10,999
Total estimated amortization expense$28,353
XML 20 R11.htm IDEA: XBRL DOCUMENT v3.23.2
Fair Value Measures and Disclosures
6 Months Ended
Jun. 30, 2023
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, 2023 and December 31, 2022 measured at fair value on a recurring basis:
June 30, 2023December 31, 2022
(in thousands)Level 1Level 2Level 3Level 1Level 2Level 3
Financial Assets:
Cash$56,768 $$$38,862 $$
Money market mutual fund9,725 17,696 
Marketable securities5,457 30,832 9,881 40,106 
Total$71,950 $30,832 $$66,439 $40,106 $
XML 21 R12.htm IDEA: XBRL DOCUMENT v3.23.2
Marketable Securities
6 Months Ended
Jun. 30, 2023
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, 2023 and December 31, 2022:
June 30, 2023
(in thousands)CostUnrealized GainsUnrealized LossesFair Value
U.S. municipal securities$12,229 $$(293)$11,936 
Corporate debt securities4,050 (93)3,957 
U.S. government agency securities20,787 (637)20,150 
Certificates of deposit/time deposits249 (3)246 
Total marketable securities$37,315 $$(1,026)$36,289 
December 31, 2022
(in thousands)CostUnrealized GainsUnrealized LossesFair Value
U.S. municipal securities$15,574 $$(417)$15,157 
Corporate debt securities9,578 (205)9,373 
U.S. government agency securities25,275 (750)24,525 
Certificates of deposit/time deposits939 (7)932 
Total marketable securities$51,366 $$(1,379)$49,987 
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, 2023 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,
2023
Due in one year or less$19,945 
Due after one year through five years16,344 
Total marketable securities$36,289 
XML 22 R13.htm IDEA: XBRL DOCUMENT v3.23.2
Inventory
6 Months Ended
Jun. 30, 2023
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,
2023
December 31,
2022
Total inventory$14,855 $13,965 
Allowance for obsolescence(544)(387)
Inventory, net of allowance$14,311 $13,578 
XML 23 R14.htm IDEA: XBRL DOCUMENT v3.23.2
Stock-Based Compensation
6 Months Ended
Jun. 30, 2023
Share-Based Payment Arrangement [Abstract]  
Stock-Based Compensation Stock-Based Compensation
Under the Company’s 2012 Long-Term Incentive Plan, as amended (the 2012 Plan), the Company had the ability to grant stock options, stock appreciation rights (SARs), restricted stock, restricted stock units, other stock-based awards and cash incentive awards through February 23, 2022. On July 8, 2022, the board of directors approved the Proto Labs, Inc. 2022 Long-Term Incentive Plan (the 2022 Plan), which was approved by the Company's shareholders at a Special Meeting of Shareholders on August 29, 2022. No awards were granted from February 23, 2022 to August 29, 2022. Awards outstanding under the 2012 Plan as of August 29, 2022 will continue to be subject to the terms of the 2012 Plan, but if those awards subsequently expire, are forfeited or cancelled or are settled in cash, the shares subject to those awards will become available for awards under the 2022 Plan. 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 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 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.
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 $3.7 million and $4.0 million for the three months ended June 30, 2023 and 2022, respectively, and $7.4 million and $8.4 million for the six months ended June 30, 2023 and 2022.
Stock Options
The following table summarizes stock option activity during the six months ended June 30, 2023:
Stock OptionsWeighted-
Average
Exercise Price
Options outstanding at December 31, 2022263,992$79.07 
Granted186,80433.36 
Exercised--
Forfeited(35,702)63.70 
Expired(15,848)55.67 
Options outstanding at June 30, 2023399,246$59.99 
Exercisable at June 30, 2023125,050$90.81 
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, 2023 was $16.36.
The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the six months ended June 30, 2023 and 2022:
Six Months Ended June 30,
20232022
Risk-free interest rate
3.90% - 4.55%
1.94%
Expected life (years)
2.00 - 6.25
6.25
Expected volatility
49.23% - 55.92%
45.95%
Expected dividend yield0%0%
As of June 30, 2023, there was $5.3 million of unrecognized compensation expense related to unvested stock options, which is expected to be recognized over a weighted-average period of 2.8 years.
Restricted Stock
Restricted stock 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 activity during the six months ended June 30, 2023:
Restricted
Stock
Weighted-
Average
Grant Date
Fair Value
Per Share
Restricted stock at December 31, 2022478,596$70.36 
Granted406,15032.50 
Restrictions lapsed(135,687)80.02 
Forfeited(65,821)70.09 
Restricted stock at June 30, 2023683,238$45.88 
As of June 30, 2023, there was $25.3 million of unrecognized compensation expense related to non-vested restricted stock, which is expected to be recognized over a weighted-average period of 2.9 years.
Performance Stock
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. Certain PSUs granted by the Company in 2021 are based on performance conditions and the related compensation cost is based on the probability that the performance conditions will be achieved. The Company’s PSUs granted in 2020, 2022, 2023 and certain PSUs granted in 2021 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 activity during the six months ended June 30, 2023:
Performance
Stock
Weighted-
Average
Grant Date
Fair Value
Per Share
Performance stock at December 31, 202235,802$77.91 
Granted71,29557.79 
Restrictions lapsed-
Performance change-
Forfeited-
Performance stock at June 30, 2023107,097$74.08 
The following table provides the assumptions used in the Monte Carlo pricing model valuation of PSUs during the six months ended June 30, 2023 and 2022:
Six Months Ended
June 30,
20232022
Risk-free interest rate4.35%1.76%
Expected life (years)2.882.87
Expected volatility58.00%53.50%
Expected dividend yield0%0%
As of June 30, 2023, there was $5.5 million of unrecognized compensation expense related to non-vested performance stock, 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, 2023 and 2022:
Six Months Ended
June 30,
20232022
Risk-free interest rate
4.60 - 4.82%
0.17 - 2.06%
Expected life (months)6.006.00
Expected volatility
47.38 - 67.84%
47.05 - 53.44%
Expected dividend yield0%0%
XML 24 R15.htm IDEA: XBRL DOCUMENT v3.23.2
Accumulated Other Comprehensive Income (Loss)
6 Months Ended
Jun. 30, 2023
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. During the three and six months ended June 30, 2023 we recognized a $3.9 million foreign currency translation loss from the substantial completion on the closure of our Japan business.
The following table presents the changes in accumulated other comprehensive income (loss) balances during the three and six months ended June 30, 2023 and 2022:
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2023202220232022
Balance at beginning of period$(33,494)$(22,305)$(34,355)$(16,817)
Foreign currency translation adjustments
Other comprehensive income (loss) before reclassifications348 (13,515)875 (18,487)
Amounts reclassified from accumulated other comprehensive loss3,906 3,906 
Net current-period other comprehensive income (loss)4,254 (13,515)4,781 (18,487)
Net unrealized gains (losses) on investments in securities
Other comprehensive income (loss) before reclassifications19 (329)353 (845)
Amounts reclassified from accumulated other comprehensive loss
Net current-period other comprehensive income (loss)19 (329)353 (845)
Balance at end of period$(29,221)$(36,149)$(29,221)$(36,149)
XML 25 R16.htm IDEA: XBRL DOCUMENT v3.23.2
Income Taxes
6 Months Ended
Jun. 30, 2023
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, 2023 and 2022, the Company recorded an income tax provision of $2.6 million and $2.6 million, respectively. For the six months ended June 30, 2023 and 2022, the Company recorded an income tax provision of $5.0 million and $5.1 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, 2023 was 117.1 percent compared to 50.8 percent in the same period of the prior year. The effective tax rate increased by 66.3 percent for the three months ended June 30, 2023 when compared to the same period in 2022, primarily due to the tax impact of the foreign currency translation loss from the substantial completion on the closure of our Japan business. The effective income tax rate for the six months ended June 30, 2023 was 68.7 percent compared to 40.2 percent in the same period of the prior year. The effective tax rate increased by 28.5 percent for the six months ended June 30, 2023 when compared to the same period in 2022, primarily due to the tax impact of the foreign currency translation loss from the substantial completion on the closure of our Japan business.
The effective income tax rate for the three and six months ended June 30, 2023 differs from the U.S. federal statutory rate of 21.0 percent due to various factors, including operating in multiple state and foreign jurisdictions and tax credits for which the Company qualifies.
The Company had unrecognized tax benefits totaling $3.6 million as of June 30, 2023 and $3.2 million as of December 31, 2022, 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.
XML 26 R17.htm IDEA: XBRL DOCUMENT v3.23.2
Segment Reporting
6 Months Ended
Jun. 30, 2023
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 Corporate Unallocated and Japan 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.
Revenue and income from operations by reportable segment for the three and six months ended June 30, 2023 and 2022 were as follows:
Three Months Ended
June 30,
Six Months Ended
June 30,
(dollars in thousands)2023202220232022
Revenue:
United States$96,321 $100,655 $194,067 $196,151 
Europe25,944 23,391 54,057 47,977 
Japan2,856 6,942 
Total revenue$122,265 $126,902 $248,124 $251,070 
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2023202220232022
Income (Loss) from Operations:
United States$22,053 $26,168 $42,534 $48,691 
Europe(3,380)(2,249)(5,863)(3,928)
Corporate Unallocated and Japan(13,065)(18,718)(27,314)(31,672)
Total Income from Operations$5,608 $5,201 $9,357 $13,091 
Total long-lived assets at June 30, 2023 and December 31, 2022 were as follows:
(in thousands)June 30,
2023
December 31,
2022
Total long-lived assets:
United States$194,656 $203,816 
Europe53,958 53,835 
Japan134 
Total Long-lived Assets$248,614 $257,785 
Revenue by product line for the three and six months ended June 30, 2023 and 2022 were as follows:
Three Months Ended
June 30,
Six Months Ended
June 30,
(dollars in thousands)2023202220232022
Revenue:
Injection Molding$48,819 $53,355 $100,767 $106,753 
CNC Machining48,297 48,222 96,401 94,320 
3D Printing21,005 19,963 42,330 39,635 
Sheet Metal3,939 5,160 8,187 9,847 
Other Revenue205 202 439 515 
Total Revenue$122,265 $126,902 $248,124 $251,070 
XML 27 R18.htm IDEA: XBRL DOCUMENT v3.23.2
Pay vs Performance Disclosure - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2023
Mar. 31, 2023
Jun. 30, 2022
Mar. 31, 2022
Jun. 30, 2023
Jun. 30, 2022
Pay vs Performance Disclosure            
Net income $ (383) $ 2,659 $ 2,557 $ 5,095 $ 2,276 $ 7,652
XML 28 R19.htm IDEA: XBRL DOCUMENT v3.23.2
Insider Trading Arrangements
3 Months Ended
Jun. 30, 2023
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 29 R20.htm IDEA: XBRL DOCUMENT v3.23.2
Net (Loss) Income per Common Share (Tables)
6 Months Ended
Jun. 30, 2023
Earnings Per Share [Abstract]  
Schedule of Earnings Per Share, Basic and Diluted
The table below sets forth the computation of basic and diluted net (loss) income per share:
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands, except share and per share amounts)2023202220232022
Net (loss) income$(383)$2,557 $2,276 $7,652 
Basic - weighted-average shares outstanding:26,210,47827,530,73926,414,46727,515,583
Effect of dilutive securities:
Employee stock options and other1
6,08430,9608,436
Diluted - weighted-average shares outstanding:26,210,47827,536,82326,445,42727,524,019
Net (loss) income per share:
Basic$(0.01)$0.09 $0.09 $0.28 
Diluted$(0.01)$0.09 $0.09 $0.28 
1 For the three months ended June 30, 2023, 14,084 of dilutive securities for employee stock options and other were not included in the diluted weighted average shares outstanding due to the net loss for the three months ended June 30, 2023.
XML 30 R21.htm IDEA: XBRL DOCUMENT v3.23.2
Goodwill and Other Intangible Assets (Tables)
6 Months Ended
Jun. 30, 2023
Goodwill and Intangible Assets Disclosure [Abstract]  
Schedule of Finite-Lived Intangible Assets
Intangible assets other than goodwill at June 30, 2023 and December 31, 2022 were as follows:
June 30, 2023December 31, 2022Useful
Life (in years)
Weighted Average
Useful Life Remaining
(in years)
(in thousands)GrossAccumulated
Amortization
NetGrossAccumulated
Amortization
Net
Intangible assets with finite lives:
Marketing assets$930 $(852)$78 $930 $(806)$124 10.00.8
Non-compete agreement832 (545)287 828 (487)341 
2.0 - 5.0
1.8
Software technology13,229 (7,068)6,161 13,229 (6,383)6,846 10.04.5
Software platform26,247 (5,510)20,737 26,054 (4,337)21,717 12.09.6
Tradenames352 (286)66 350 (227)123 3.00.6
Customer relationships12,213 (11,189)1,024 12,197 (10,098)2,099 
3.0 - 9.0
0.4
Total intangible assets$53,803 $(25,450)$28,353 $53,588 $(22,338)$31,250 
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 2023$2,894
20243,741
20253,644
20263,542
20273,533
Thereafter10,999
Total estimated amortization expense$28,353
XML 31 R22.htm IDEA: XBRL DOCUMENT v3.23.2
Fair Value Measurements (Tables)
6 Months Ended
Jun. 30, 2023
Fair Value Disclosures [Abstract]  
Fair Value, Assets Measured on Recurring Basis
The following table summarizes financial assets as of June 30, 2023 and December 31, 2022 measured at fair value on a recurring basis:
June 30, 2023December 31, 2022
(in thousands)Level 1Level 2Level 3Level 1Level 2Level 3
Financial Assets:
Cash$56,768 $$$38,862 $$
Money market mutual fund9,725 17,696 
Marketable securities5,457 30,832 9,881 40,106 
Total$71,950 $30,832 $$66,439 $40,106 $
XML 32 R23.htm IDEA: XBRL DOCUMENT v3.23.2
Marketable Securities (Tables)
6 Months Ended
Jun. 30, 2023
Investments, Debt and Equity Securities [Abstract]  
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, 2023 and December 31, 2022:
June 30, 2023
(in thousands)CostUnrealized GainsUnrealized LossesFair Value
U.S. municipal securities$12,229 $$(293)$11,936 
Corporate debt securities4,050 (93)3,957 
U.S. government agency securities20,787 (637)20,150 
Certificates of deposit/time deposits249 (3)246 
Total marketable securities$37,315 $$(1,026)$36,289 
December 31, 2022
(in thousands)CostUnrealized GainsUnrealized LossesFair Value
U.S. municipal securities$15,574 $$(417)$15,157 
Corporate debt securities9,578 (205)9,373 
U.S. government agency securities25,275 (750)24,525 
Certificates of deposit/time deposits939 (7)932 
Total marketable securities$51,366 $$(1,379)$49,987 
Investments Classified by Contractual Maturity Date
The June 30, 2023 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,
2023
Due in one year or less$19,945 
Due after one year through five years16,344 
Total marketable securities$36,289 
XML 33 R24.htm IDEA: XBRL DOCUMENT v3.23.2
Inventory (Tables)
6 Months Ended
Jun. 30, 2023
Inventory Disclosure [Abstract]  
Schedule of Inventory, Current
The Company’s inventory consisted of the following as of the dates indicated:
(in thousands)June 30,
2023
December 31,
2022
Total inventory$14,855 $13,965 
Allowance for obsolescence(544)(387)
Inventory, net of allowance$14,311 $13,578 
XML 34 R25.htm IDEA: XBRL DOCUMENT v3.23.2
Stock-Based Compensation (Tables)
6 Months Ended
Jun. 30, 2023
Share-Based Payment Arrangement [Abstract]  
Share-Based Payment Arrangement, Option, Activity
The following table summarizes stock option activity during the six months ended June 30, 2023:
Stock OptionsWeighted-
Average
Exercise Price
Options outstanding at December 31, 2022263,992$79.07 
Granted186,80433.36 
Exercised--
Forfeited(35,702)63.70 
Expired(15,848)55.67 
Options outstanding at June 30, 2023399,246$59.99 
Exercisable at June 30, 2023125,050$90.81 
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, 2023 and 2022:
Six Months Ended June 30,
20232022
Risk-free interest rate
3.90% - 4.55%
1.94%
Expected life (years)
2.00 - 6.25
6.25
Expected volatility
49.23% - 55.92%
45.95%
Expected dividend yield0%0%
Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity
The following table summarizes restricted stock activity during the six months ended June 30, 2023:
Restricted
Stock
Weighted-
Average
Grant Date
Fair Value
Per Share
Restricted stock at December 31, 2022478,596$70.36 
Granted406,15032.50 
Restrictions lapsed(135,687)80.02 
Forfeited(65,821)70.09 
Restricted stock at June 30, 2023683,238$45.88 
Schedule of Nonvested Performance-Based Units Activity
The following table summarizes performance stock activity during the six months ended June 30, 2023:
Performance
Stock
Weighted-
Average
Grant Date
Fair Value
Per Share
Performance stock at December 31, 202235,802$77.91 
Granted71,29557.79 
Restrictions lapsed-
Performance change-
Forfeited-
Performance stock at June 30, 2023107,097$74.08 
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, 2023 and 2022:
Six Months Ended
June 30,
20232022
Risk-free interest rate4.35%1.76%
Expected life (years)2.882.87
Expected volatility58.00%53.50%
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, 2023 and 2022:
Six Months Ended
June 30,
20232022
Risk-free interest rate
4.60 - 4.82%
0.17 - 2.06%
Expected life (months)6.006.00
Expected volatility
47.38 - 67.84%
47.05 - 53.44%
Expected dividend yield0%0%
XML 35 R26.htm IDEA: XBRL DOCUMENT v3.23.2
Accumulated Other Comprehensive Income (Loss) (Tables)
6 Months Ended
Jun. 30, 2023
Regulated Operations [Abstract]  
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, 2023 and 2022:
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2023202220232022
Balance at beginning of period$(33,494)$(22,305)$(34,355)$(16,817)
Foreign currency translation adjustments
Other comprehensive income (loss) before reclassifications348 (13,515)875 (18,487)
Amounts reclassified from accumulated other comprehensive loss3,906 3,906 
Net current-period other comprehensive income (loss)4,254 (13,515)4,781 (18,487)
Net unrealized gains (losses) on investments in securities
Other comprehensive income (loss) before reclassifications19 (329)353 (845)
Amounts reclassified from accumulated other comprehensive loss
Net current-period other comprehensive income (loss)19 (329)353 (845)
Balance at end of period$(29,221)$(36,149)$(29,221)$(36,149)
XML 36 R27.htm IDEA: XBRL DOCUMENT v3.23.2
Segment Reporting (Tables)
6 Months Ended
Jun. 30, 2023
Segment Reporting [Abstract]  
Revenue from External Customers by Geographic Areas
Revenue and income from operations by reportable segment for the three and six months ended June 30, 2023 and 2022 were as follows:
Three Months Ended
June 30,
Six Months Ended
June 30,
(dollars in thousands)2023202220232022
Revenue:
United States$96,321 $100,655 $194,067 $196,151 
Europe25,944 23,391 54,057 47,977 
Japan2,856 6,942 
Total revenue$122,265 $126,902 $248,124 $251,070 
Income from Operations by Geographic Area
Three Months Ended
June 30,
Six Months Ended
June 30,
(in thousands)2023202220232022
Income (Loss) from Operations:
United States$22,053 $26,168 $42,534 $48,691 
Europe(3,380)(2,249)(5,863)(3,928)
Corporate Unallocated and Japan(13,065)(18,718)(27,314)(31,672)
Total Income from Operations$5,608 $5,201 $9,357 $13,091 
Long-Lived Assets by Geographic Areas
Total long-lived assets at June 30, 2023 and December 31, 2022 were as follows:
(in thousands)June 30,
2023
December 31,
2022
Total long-lived assets:
United States$194,656 $203,816 
Europe53,958 53,835 
Japan134 
Total Long-lived Assets$248,614 $257,785 
Disaggregation of Revenue
Revenue by product line for the three and six months ended June 30, 2023 and 2022 were as follows:
Three Months Ended
June 30,
Six Months Ended
June 30,
(dollars in thousands)2023202220232022
Revenue:
Injection Molding$48,819 $53,355 $100,767 $106,753 
CNC Machining48,297 48,222 96,401 94,320 
3D Printing21,005 19,963 42,330 39,635 
Sheet Metal3,939 5,160 8,187 9,847 
Other Revenue205 202 439 515 
Total Revenue$122,265 $126,902 $248,124 $251,070 
XML 37 R28.htm IDEA: XBRL DOCUMENT v3.23.2
Net (Loss) Income per Common Share - Narrative (Details) - shares
3 Months Ended 6 Months Ended
Jun. 30, 2023
Jun. 30, 2022
Jun. 30, 2023
Jun. 30, 2022
Earnings Per Share [Abstract]        
Anti-dilutive options excluded from calculation of diluted weighted average shares outstanding (in shares) 380,848 220,776 407,119 208,840
XML 38 R29.htm IDEA: XBRL DOCUMENT v3.23.2
Net (Loss) 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, 2023
Mar. 31, 2023
Jun. 30, 2022
Mar. 31, 2022
Jun. 30, 2023
Jun. 30, 2022
Earnings Per Share [Abstract]            
Net (loss) income $ (383) $ 2,659 $ 2,557 $ 5,095 $ 2,276 $ 7,652
Basic - weighted-average shares outstanding (in shares) 26,210,478   27,530,739   26,414,467 27,515,583
Effect of dilutive securities:            
Employee stock options and other (in shares) 0   6,084   30,960 8,436
Diluted - weighted-average shares outstanding (in shares) 26,210,478   27,536,823   26,445,427 27,524,019
Net (loss) income per share:            
Basic (in dollars per share) $ (0.01)   $ 0.09   $ 0.09 $ 0.28
Diluted (in dollars per share) $ (0.01)   $ 0.09   $ 0.09 $ 0.28
Antidilutive Securities Excluded from Computation of Earnings Per Share [Line Items]            
Anti-dilutive options excluded from calculation of diluted weighted average shares outstanding (in shares) 380,848   220,776   407,119 208,840
Employee Stock Option and Other            
Antidilutive Securities Excluded from Computation of Earnings Per Share [Line Items]            
Anti-dilutive options excluded from calculation of diluted weighted average shares outstanding (in shares) 14,084          
XML 39 R30.htm IDEA: XBRL DOCUMENT v3.23.2
Goodwill and Other Intangible Assets - Schedule of Intangible Assets Other Than Goodwill (Details) - USD ($)
$ in Thousands
Jun. 30, 2023
Dec. 31, 2022
Acquired Finite-Lived Intangible Assets [Line Items]    
Gross $ 53,803 $ 53,588
Accumulated Amortization (25,450) (22,338)
Net 28,353 31,250
Marketing assets    
Acquired Finite-Lived Intangible Assets [Line Items]    
Gross 930 930
Accumulated Amortization (852) (806)
Net $ 78 124
Useful Life (in years) 10 years  
Weighted Average Useful Life Remaining (in years) 9 months 18 days  
Non-compete agreement    
Acquired Finite-Lived Intangible Assets [Line Items]    
Gross $ 832 828
Accumulated Amortization (545) (487)
Net $ 287 341
Weighted Average Useful Life Remaining (in years) 1 year 9 months 18 days  
Non-compete agreement | Minimum    
Acquired Finite-Lived Intangible Assets [Line Items]    
Useful Life (in years) 2 years  
Non-compete agreement | Maximum    
Acquired Finite-Lived Intangible Assets [Line Items]    
Useful Life (in years) 5 years  
Software technology    
Acquired Finite-Lived Intangible Assets [Line Items]    
Gross $ 13,229 13,229
Accumulated Amortization (7,068) (6,383)
Net $ 6,161 6,846
Useful Life (in years) 10 years  
Weighted Average Useful Life Remaining (in years) 4 years 6 months  
Software platform    
Acquired Finite-Lived Intangible Assets [Line Items]    
Gross $ 26,247 26,054
Accumulated Amortization (5,510) (4,337)
Net $ 20,737 21,717
Useful Life (in years) 12 years  
Weighted Average Useful Life Remaining (in years) 9 years 7 months 6 days  
Tradenames    
Acquired Finite-Lived Intangible Assets [Line Items]    
Gross $ 352 350
Accumulated Amortization (286) (227)
Net $ 66 123
Useful Life (in years) 3 years  
Weighted Average Useful Life Remaining (in years) 7 months 6 days  
Customer relationships    
Acquired Finite-Lived Intangible Assets [Line Items]    
Gross $ 12,213 12,197
Accumulated Amortization (11,189) (10,098)
Net $ 1,024 $ 2,099
Weighted Average Useful Life Remaining (in years) 4 months 24 days  
Customer relationships | Minimum    
Acquired Finite-Lived Intangible Assets [Line Items]    
Useful Life (in years) 3 years  
Customer relationships | Maximum    
Acquired Finite-Lived Intangible Assets [Line Items]    
Useful Life (in years) 9 years  
XML 40 R31.htm IDEA: XBRL DOCUMENT v3.23.2
Goodwill and Other Intangible Assets - Narrative (Details)
€ in Millions, $ in Millions
3 Months Ended 6 Months Ended 12 Months Ended
Jan. 22, 2021
EUR (€)
Jan. 22, 2021
USD ($)
Jun. 30, 2023
USD ($)
Jun. 30, 2022
USD ($)
Jun. 30, 2023
USD ($)
Jun. 30, 2022
USD ($)
Dec. 31, 2022
USD ($)
Acquired Finite-Lived Intangible Assets [Line Items]              
Foreign currency losses         $ 1.5   $ 1.7
Amortization expense for intangible assets     $ 1.5 $ 1.5 $ 3.1 $ 3.1  
UNITED STATES | Acquired 3D Hubs              
Acquired Finite-Lived Intangible Assets [Line Items]              
Intangible assets acquired   $ 16.6          
Europe | Acquired 3D Hubs              
Acquired Finite-Lived Intangible Assets [Line Items]              
Intangible assets acquired | € € 11.6            
XML 41 R32.htm IDEA: XBRL DOCUMENT v3.23.2
Goodwill and Other Intangible Assets - Future Amortization Expense (Details) - USD ($)
$ in Thousands
Jun. 30, 2023
Dec. 31, 2022
Finite-Lived Intangible Assets, Net, Amortization Expense, Fiscal Year Maturity [Abstract]    
Remaining 2023 $ 2,894  
2024 3,741  
2025 3,644  
2026 3,542  
2027 3,533  
Thereafter 10,999  
Net $ 28,353 $ 31,250
XML 42 R33.htm IDEA: XBRL DOCUMENT v3.23.2
Fair Value Measurements - Financial Assets Measured At Fair Value On A Recurring Basis (Details) - USD ($)
$ in Thousands
Jun. 30, 2023
Dec. 31, 2022
Financial Assets:    
Debt securities, available-for-sale $ 36,289 $ 49,987
Level 1 | Fair Value, Recurring    
Financial Assets:    
Debt securities, available-for-sale 5,457 9,881
Total 71,950 66,439
Level 2 | Fair Value, Recurring    
Financial Assets:    
Debt securities, available-for-sale 30,832 40,106
Total 30,832 40,106
Level 3 | Fair Value, Recurring    
Financial Assets:    
Debt securities, available-for-sale 0 0
Total 0 0
Cash | Level 1 | Fair Value, Recurring    
Financial Assets:    
Cash and cash equivalents 56,768 38,862
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 9,725 17,696
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 43 R34.htm IDEA: XBRL DOCUMENT v3.23.2
Marketable Securities - Short-Term and Long-Term Marketable Securities (Details) - USD ($)
$ in Thousands
Jun. 30, 2023
Dec. 31, 2022
Debt Securities, Available-for-Sale [Line Items]    
Cost $ 37,315 $ 51,366
Unrealized Gains 0 0
Unrealized Losses (1,026) (1,379)
Fair Value 36,289 49,987
U.S. municipal securities    
Debt Securities, Available-for-Sale [Line Items]    
Cost 12,229 15,574
Unrealized Gains 0 0
Unrealized Losses (293) (417)
Fair Value 11,936 15,157
Corporate debt securities    
Debt Securities, Available-for-Sale [Line Items]    
Cost 4,050 9,578
Unrealized Gains 0 0
Unrealized Losses (93) (205)
Fair Value 3,957 9,373
U.S. government agency securities    
Debt Securities, Available-for-Sale [Line Items]    
Cost 20,787 25,275
Unrealized Gains 0 0
Unrealized Losses (637) (750)
Fair Value 20,150 24,525
Certificates of deposit/time deposits    
Debt Securities, Available-for-Sale [Line Items]    
Cost 249 939
Unrealized Gains 0 0
Unrealized Losses (3) (7)
Fair Value $ 246 $ 932
XML 44 R35.htm IDEA: XBRL DOCUMENT v3.23.2
Marketable Securities - Maturities of Available-For-Sale Debt Securities (Details) - USD ($)
$ in Thousands
Jun. 30, 2023
Dec. 31, 2022
Debt Securities, Available-for-Sale, Fair Value, Fiscal Year Maturity [Abstract]    
Due in one year or less $ 19,945  
Due after one year through five years 16,344  
Total marketable securities $ 36,289 $ 49,987
XML 45 R36.htm IDEA: XBRL DOCUMENT v3.23.2
Inventory (Details) - USD ($)
$ in Thousands
Jun. 30, 2023
Dec. 31, 2022
Inventory Disclosure [Abstract]    
Total inventory $ 14,855 $ 13,965
Allowance for obsolescence (544) (387)
Inventory, net of allowance $ 14,311 $ 13,578
XML 46 R37.htm IDEA: XBRL DOCUMENT v3.23.2
Stock-Based Compensation - Narrative (Details) - USD ($)
$ / shares in Units, $ in Millions
3 Months Ended 6 Months Ended
Jun. 30, 2023
Jun. 30, 2022
Jun. 30, 2023
Aug. 29, 2022
Jun. 30, 2022
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]          
Stock-based compensation expense $ 3.7 $ 4.0 $ 7.4   $ 8.4
Stock-based award, weighted-average grant date fair value (in dollars per share)     $ 16.36    
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 5.3   $ 5.3    
Stock based award, unrecognized compensation expense, period for recognition (in years)     2 years 9 months 18 days    
Restricted Stock          
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]          
Awards granted in period (in shares)     406,150    
Stock based award, unrecognized compensation expense 25.3   $ 25.3    
Stock based award, unrecognized compensation expense, period for recognition (in years)     2 years 10 months 24 days    
Restricted Stock | Minimum          
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]          
Stock-based award, vesting period (in years)     3 years    
Restricted Stock | Maximum          
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]          
Stock-based award, vesting period (in years)     4 years    
Performance Shares          
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]          
Awards granted in period (in shares)     71,295    
Stock-based award, vesting period (in years)     3 years    
Stock based award, unrecognized compensation expense $ 5.5   $ 5.5    
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 2012          
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]          
Awards granted in period (in shares)       0  
Stock-based award, term (in years)     10 years    
XML 47 R38.htm IDEA: XBRL DOCUMENT v3.23.2
Stock-Based Compensation - Option Activity (Details)
6 Months Ended
Jun. 30, 2023
$ / shares
shares
Stock Options  
Options outstanding, beginning balance (in shares) | shares 263,992
Granted (in shares) | shares 186,804
Exercised (in shares) | shares 0
Forfeited (in shares) | shares (35,702)
Expired (in shares) | shares (15,848)
Options outstanding, ending balance (in shares) | shares 399,246
Weighted- Average Exercise Price  
Options outstanding, beginning balance, weighted-average exercise price (in dollars per share) | $ / shares $ 79.07
Granted, weighted-average exercise price (in dollars per share) | $ / shares 33.36
Exercised, weighted-average exercise price (in dollars per share) | $ / shares 0
Forfeited, weighted-average exercise price (in dollars per share) | $ / shares 63.70
Expired, weighted-average exercise price (in dollars per share) | $ / shares 55.67
Options outstanding, ending balance, weighted-average exercise price (in dollars per share) | $ / shares $ 59.99
Additional Disclosures  
Option exercisable (in shares) | shares 125,050
Options exercisable, weighted-average exercise price (in dollars per share) | $ / shares $ 90.81
XML 48 R39.htm IDEA: XBRL DOCUMENT v3.23.2
Stock-Based Compensation - Weighted Average Assumptions (Details)
6 Months Ended
Jun. 30, 2023
Jun. 30, 2022
Employee Stock Purchase Plan    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Expected life (years) 6 years 6 years
Expected dividend yield 0.00% 0.00%
Stock Options    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Risk-free interest rate   1.94%
Expected life (years)   6 years 3 months
Expected volatility   45.95%
Expected dividend yield 0.00% 0.00%
Performance Shares    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Risk-free interest rate 4.35% 1.76%
Expected life (years) 2 years 10 months 17 days 2 years 10 months 13 days
Expected volatility 58.00% 53.50%
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 4.60% 0.17%
Expected volatility 47.38% 47.05%
Minimum | Stock Options    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Risk-free interest rate 3.90%  
Expected life (years) 2 years  
Expected volatility 49.23%  
Maximum | Employee Stock Purchase Plan    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Risk-free interest rate 4.82% 2.06%
Expected volatility 67.84% 53.44%
Maximum | Stock Options    
Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]    
Risk-free interest rate 4.55%  
Expected life (years) 6 years 3 months  
Expected volatility 55.92%  
XML 49 R40.htm IDEA: XBRL DOCUMENT v3.23.2
Stock-Based Compensation - Stock Activity (Details) - $ / shares
6 Months Ended
Jun. 30, 2023
Jun. 30, 2022
Restricted Stock    
Stock    
Beginning balance (in shares) 478,596  
Granted (in shares) 406,150  
Restrictions lapsed (in shares) (135,687)  
Forfeited (in shares) (65,821)  
Ending balance (in shares) 683,238  
Weighted- Average Grant Date Fair Value Per Share    
Beginning balance, weighted-average grant date fair value (in dollars per share)   $ 70.36
Granted, weighted-average grant date fair value (in dollars per share)   32.50
Restrictions lapsed, weighted-average grant date fair value (in dollars per share)   80.02
Forfeited, weighted-average grant date fair value (in dollars per share)   70.09
Ending balance, weighted-average grant date fair value (in dollars per share)   $ 45.88
Performance Shares    
Stock    
Beginning balance (in shares) 35,802  
Granted (in shares) 71,295  
Restrictions lapsed (in shares) 0  
Performance change (in shares) 0  
Forfeited (in shares) 0  
Ending balance (in shares) 107,097  
Weighted- Average Grant Date Fair Value Per Share    
Beginning balance, weighted-average grant date fair value (in dollars per share) $ 77.91  
Granted, weighted-average grant date fair value (in dollars per share) 57.79  
Restrictions lapsed, weighted-average grant date fair value (in dollars per share) 0  
Performance change, weighted-average grant date fair value (in dollars per share) 0  
Forfeited, weighted-average grant date fair value (in dollars per share) 0  
Ending balance, weighted-average grant date fair value (in dollars per share) $ 74.08  
XML 50 R41.htm IDEA: XBRL DOCUMENT v3.23.2
Accumulated Other Comprehensive Income (Loss) - Narrative (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2023
Jun. 30, 2022
Jun. 30, 2023
Jun. 30, 2022
Foreign currency translation adjustments        
Accumulated Other Comprehensive Income (Loss) [Line Items]        
Amounts reclassified from accumulated other comprehensive loss $ 3,906 $ 0 $ 3,906 $ 0
XML 51 R42.htm IDEA: XBRL DOCUMENT v3.23.2
Accumulated Other Comprehensive Income (Loss) - Changes In Accumulated Other Comprehensive Income (Loss) (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2023
Jun. 30, 2022
Jun. 30, 2023
Jun. 30, 2022
Accumulated Other Comprehensive Income (Loss) [Line Items]        
Beginning balance $ 683,137 $ 832,035 $ 697,648 $ 828,493
Ending balance 682,685 820,698 682,685 820,698
Accumulated Other Comprehensive Loss        
Accumulated Other Comprehensive Income (Loss) [Line Items]        
Beginning balance (33,494) (22,305) (34,355) (16,817)
Ending balance (29,221) (36,149) (29,221) (36,149)
Foreign currency translation adjustments        
Accumulated Other Comprehensive Income (Loss) [Line Items]        
Other comprehensive income (loss) before reclassifications 348 (13,515) 875 (18,487)
Amounts reclassified from accumulated other comprehensive loss 3,906 0 3,906 0
Net current-period other comprehensive income (loss) 4,254 (13,515) 4,781 (18,487)
Net unrealized gains (losses) on investments in securities        
Accumulated Other Comprehensive Income (Loss) [Line Items]        
Other comprehensive income (loss) before reclassifications 19 (329) 353 (845)
Amounts reclassified from accumulated other comprehensive loss 0 0 0 0
Net current-period other comprehensive income (loss) $ 19 $ (329) $ 353 $ (845)
XML 52 R43.htm IDEA: XBRL DOCUMENT v3.23.2
Income Taxes (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2023
Jun. 30, 2022
Jun. 30, 2023
Jun. 30, 2022
Dec. 31, 2022
Income Tax Disclosure [Abstract]          
Provision for income taxes $ 2,623 $ 2,645 $ 5,003 $ 5,140  
Effective income tax rate (in percent) 117.10% 50.80% 68.70% 40.20%  
Effective income tax rate, increase (decrease) during period (in percent) 66.30%   28.50%    
Federal statutory rate (in percent) 21.00%   21.00%    
Unrecognized tax benefits $ 3,600   $ 3,600   $ 3,200
XML 53 R44.htm IDEA: XBRL DOCUMENT v3.23.2
Segment Reporting - Revenue by Geographic Areas (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2023
Jun. 30, 2022
Jun. 30, 2023
Jun. 30, 2022
Segment Reporting Information [Line Items]        
Total revenue $ 122,265 $ 126,902 $ 248,124 $ 251,070
Operating Segments        
Segment Reporting Information [Line Items]        
Total revenue 122,265 126,902 248,124 251,070
Operating Segments | United States        
Segment Reporting Information [Line Items]        
Total revenue 96,321 100,655 194,067 196,151
Operating Segments | Europe        
Segment Reporting Information [Line Items]        
Total revenue 25,944 23,391 54,057 47,977
Operating Segments | Japan        
Segment Reporting Information [Line Items]        
Total revenue $ 0 $ 2,856 $ 0 $ 6,942
XML 54 R45.htm IDEA: XBRL DOCUMENT v3.23.2
Segment Reporting - Income From Operation by Geographic Areas (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2023
Jun. 30, 2022
Jun. 30, 2023
Jun. 30, 2022
Segment Reporting Information [Line Items]        
Total Income from Operations $ 5,608 $ 5,201 $ 9,357 $ 13,091
Operating Segments        
Segment Reporting Information [Line Items]        
Total Income from Operations 5,608 5,201 9,357 13,091
Operating Segments | United States        
Segment Reporting Information [Line Items]        
Total Income from Operations 22,053 26,168 42,534 48,691
Operating Segments | Europe        
Segment Reporting Information [Line Items]        
Total Income from Operations (3,380) (2,249) (5,863) (3,928)
Operating Segments | Corporate Unallocated and Japan        
Segment Reporting Information [Line Items]        
Total Income from Operations $ (13,065) $ (18,718) $ (27,314) $ (31,672)
XML 55 R46.htm IDEA: XBRL DOCUMENT v3.23.2
Segment Reporting - Long-Lived Assets by Geographic Areas (Details) - USD ($)
$ in Thousands
Jun. 30, 2023
Dec. 31, 2022
Segment Reporting Information [Line Items]    
Total Long-lived Assets $ 248,614 $ 257,785
Operating Segments    
Segment Reporting Information [Line Items]    
Total Long-lived Assets 248,614 257,785
Operating Segments | United States    
Segment Reporting Information [Line Items]    
Total Long-lived Assets 194,656 203,816
Operating Segments | Europe    
Segment Reporting Information [Line Items]    
Total Long-lived Assets 53,958 53,835
Operating Segments | Japan    
Segment Reporting Information [Line Items]    
Total Long-lived Assets $ 0 $ 134
XML 56 R47.htm IDEA: XBRL DOCUMENT v3.23.2
Segment Reporting - Disaggregation of Revenue (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2023
Jun. 30, 2022
Jun. 30, 2023
Jun. 30, 2022
Segment Reporting Information [Line Items]        
Total revenue $ 122,265 $ 126,902 $ 248,124 $ 251,070
Injection Molding        
Segment Reporting Information [Line Items]        
Total revenue 48,819 53,355 100,767 106,753
CNC Machining        
Segment Reporting Information [Line Items]        
Total revenue 48,297 48,222 96,401 94,320
3D Printing        
Segment Reporting Information [Line Items]        
Total revenue 21,005 19,963 42,330 39,635
Sheet Metal        
Segment Reporting Information [Line Items]        
Total revenue 3,939 5,160 8,187 9,847
Other Revenue        
Segment Reporting Information [Line Items]        
Total revenue $ 205 $ 202 $ 439 $ 515
XML 57 prlb-20230630_htm.xml IDEA: XBRL DOCUMENT 0001443669 2023-01-01 2023-06-30 0001443669 2023-08-01 0001443669 2023-06-30 0001443669 2022-12-31 0001443669 2023-04-01 2023-06-30 0001443669 2022-04-01 2022-06-30 0001443669 2022-01-01 2022-06-30 0001443669 us-gaap:CommonStockMember 2022-12-31 0001443669 us-gaap:AdditionalPaidInCapitalMember 2022-12-31 0001443669 us-gaap:RetainedEarningsMember 2022-12-31 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2022-12-31 0001443669 us-gaap:CommonStockMember 2023-01-01 2023-03-31 0001443669 us-gaap:AdditionalPaidInCapitalMember 2023-01-01 2023-03-31 0001443669 2023-01-01 2023-03-31 0001443669 us-gaap:RetainedEarningsMember 2023-01-01 2023-03-31 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2023-01-01 2023-03-31 0001443669 us-gaap:CommonStockMember 2023-03-31 0001443669 us-gaap:AdditionalPaidInCapitalMember 2023-03-31 0001443669 us-gaap:RetainedEarningsMember 2023-03-31 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2023-03-31 0001443669 2023-03-31 0001443669 us-gaap:CommonStockMember 2023-04-01 2023-06-30 0001443669 us-gaap:AdditionalPaidInCapitalMember 2023-04-01 2023-06-30 0001443669 us-gaap:RetainedEarningsMember 2023-04-01 2023-06-30 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2023-04-01 2023-06-30 0001443669 us-gaap:CommonStockMember 2023-06-30 0001443669 us-gaap:AdditionalPaidInCapitalMember 2023-06-30 0001443669 us-gaap:RetainedEarningsMember 2023-06-30 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2023-06-30 0001443669 us-gaap:CommonStockMember 2021-12-31 0001443669 us-gaap:AdditionalPaidInCapitalMember 2021-12-31 0001443669 us-gaap:RetainedEarningsMember 2021-12-31 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2021-12-31 0001443669 2021-12-31 0001443669 us-gaap:CommonStockMember 2022-01-01 2022-03-31 0001443669 us-gaap:AdditionalPaidInCapitalMember 2022-01-01 2022-03-31 0001443669 2022-01-01 2022-03-31 0001443669 us-gaap:RetainedEarningsMember 2022-01-01 2022-03-31 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2022-01-01 2022-03-31 0001443669 us-gaap:CommonStockMember 2022-03-31 0001443669 us-gaap:AdditionalPaidInCapitalMember 2022-03-31 0001443669 us-gaap:RetainedEarningsMember 2022-03-31 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2022-03-31 0001443669 2022-03-31 0001443669 us-gaap:CommonStockMember 2022-04-01 2022-06-30 0001443669 us-gaap:AdditionalPaidInCapitalMember 2022-04-01 2022-06-30 0001443669 us-gaap:RetainedEarningsMember 2022-04-01 2022-06-30 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2022-04-01 2022-06-30 0001443669 us-gaap:CommonStockMember 2022-06-30 0001443669 us-gaap:AdditionalPaidInCapitalMember 2022-06-30 0001443669 us-gaap:RetainedEarningsMember 2022-06-30 0001443669 us-gaap:AccumulatedOtherComprehensiveIncomeMember 2022-06-30 0001443669 2022-06-30 0001443669 prlb:EmployeeStockOptionAndOtherMember 2023-04-01 2023-06-30 0001443669 us-gaap:MarketingRelatedIntangibleAssetsMember 2023-06-30 0001443669 us-gaap:MarketingRelatedIntangibleAssetsMember 2022-12-31 0001443669 us-gaap:NoncompeteAgreementsMember 2023-06-30 0001443669 us-gaap:NoncompeteAgreementsMember 2022-12-31 0001443669 srt:MinimumMember us-gaap:NoncompeteAgreementsMember 2023-06-30 0001443669 srt:MaximumMember us-gaap:NoncompeteAgreementsMember 2023-06-30 0001443669 us-gaap:ComputerSoftwareIntangibleAssetMember 2023-06-30 0001443669 us-gaap:ComputerSoftwareIntangibleAssetMember 2022-12-31 0001443669 prlb:SoftwarePlatformMember 2023-06-30 0001443669 prlb:SoftwarePlatformMember 2022-12-31 0001443669 us-gaap:TradeNamesMember 2023-06-30 0001443669 us-gaap:TradeNamesMember 2022-12-31 0001443669 us-gaap:CustomerRelationshipsMember 2023-06-30 0001443669 us-gaap:CustomerRelationshipsMember 2022-12-31 0001443669 srt:MinimumMember us-gaap:CustomerRelationshipsMember 2023-06-30 0001443669 srt:MaximumMember us-gaap:CustomerRelationshipsMember 2023-06-30 0001443669 srt:EuropeMember prlb:Acquired3dHubsMember 2021-01-22 2021-01-22 0001443669 country:US prlb:Acquired3dHubsMember 2021-01-22 2021-01-22 0001443669 2022-01-01 2022-12-31 0001443669 us-gaap:CashMember us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2023-06-30 0001443669 us-gaap:CashMember us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2023-06-30 0001443669 us-gaap:CashMember us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2023-06-30 0001443669 us-gaap:CashMember us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2022-12-31 0001443669 us-gaap:CashMember us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2022-12-31 0001443669 us-gaap:CashMember us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2022-12-31 0001443669 us-gaap:MoneyMarketFundsMember us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2023-06-30 0001443669 us-gaap:MoneyMarketFundsMember us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2023-06-30 0001443669 us-gaap:MoneyMarketFundsMember us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2023-06-30 0001443669 us-gaap:MoneyMarketFundsMember us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2022-12-31 0001443669 us-gaap:MoneyMarketFundsMember us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2022-12-31 0001443669 us-gaap:MoneyMarketFundsMember us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2022-12-31 0001443669 us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2023-06-30 0001443669 us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2023-06-30 0001443669 us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2023-06-30 0001443669 us-gaap:FairValueInputsLevel1Member us-gaap:FairValueMeasurementsRecurringMember 2022-12-31 0001443669 us-gaap:FairValueInputsLevel2Member us-gaap:FairValueMeasurementsRecurringMember 2022-12-31 0001443669 us-gaap:FairValueInputsLevel3Member us-gaap:FairValueMeasurementsRecurringMember 2022-12-31 0001443669 us-gaap:USStatesAndPoliticalSubdivisionsMember 2023-06-30 0001443669 us-gaap:CorporateDebtSecuritiesMember 2023-06-30 0001443669 us-gaap:USGovernmentAgenciesDebtSecuritiesMember 2023-06-30 0001443669 us-gaap:BankTimeDepositsMember 2023-06-30 0001443669 us-gaap:USStatesAndPoliticalSubdivisionsMember 2022-12-31 0001443669 us-gaap:CorporateDebtSecuritiesMember 2022-12-31 0001443669 us-gaap:USGovernmentAgenciesDebtSecuritiesMember 2022-12-31 0001443669 us-gaap:BankTimeDepositsMember 2022-12-31 0001443669 prlb:LongtermIncentivePlan2012Member 2022-02-23 2022-08-29 0001443669 prlb:LongtermIncentivePlan2012Member 2023-01-01 2023-06-30 0001443669 prlb:ESPPMember 2023-01-01 2023-06-30 0001443669 us-gaap:EmployeeStockOptionMember 2023-01-01 2023-06-30 0001443669 srt:MinimumMember us-gaap:EmployeeStockOptionMember 2023-01-01 2023-06-30 0001443669 srt:MaximumMember us-gaap:EmployeeStockOptionMember 2023-01-01 2023-06-30 0001443669 us-gaap:EmployeeStockOptionMember 2022-01-01 2022-06-30 0001443669 us-gaap:EmployeeStockOptionMember 2023-06-30 0001443669 srt:MinimumMember us-gaap:RestrictedStockMember 2023-01-01 2023-06-30 0001443669 srt:MaximumMember us-gaap:RestrictedStockMember 2023-01-01 2023-06-30 0001443669 us-gaap:RestrictedStockMember 2022-12-31 0001443669 us-gaap:RestrictedStockMember 2021-12-31 0001443669 us-gaap:RestrictedStockMember 2023-01-01 2023-06-30 0001443669 us-gaap:RestrictedStockMember 2022-01-01 2022-06-30 0001443669 us-gaap:RestrictedStockMember 2023-06-30 0001443669 us-gaap:RestrictedStockMember 2022-06-30 0001443669 us-gaap:PerformanceSharesMember 2023-06-30 0001443669 us-gaap:PerformanceSharesMember 2023-01-01 2023-06-30 0001443669 us-gaap:PerformanceSharesMember 2022-12-31 0001443669 us-gaap:PerformanceSharesMember 2022-01-01 2022-06-30 0001443669 srt:MinimumMember prlb:EmployeeStockPurchasePlanMember 2023-01-01 2023-06-30 0001443669 srt:MaximumMember prlb:EmployeeStockPurchasePlanMember 2023-01-01 2023-06-30 0001443669 srt:MinimumMember prlb:EmployeeStockPurchasePlanMember 2022-01-01 2022-06-30 0001443669 srt:MaximumMember prlb:EmployeeStockPurchasePlanMember 2022-01-01 2022-06-30 0001443669 prlb:EmployeeStockPurchasePlanMember 2023-01-01 2023-06-30 0001443669 prlb:EmployeeStockPurchasePlanMember 2022-01-01 2022-06-30 0001443669 us-gaap:AccumulatedTranslationAdjustmentMember 2023-01-01 2023-06-30 0001443669 us-gaap:AccumulatedTranslationAdjustmentMember 2023-04-01 2023-06-30 0001443669 us-gaap:AccumulatedTranslationAdjustmentMember 2022-04-01 2022-06-30 0001443669 us-gaap:AccumulatedTranslationAdjustmentMember 2022-01-01 2022-06-30 0001443669 us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember 2023-04-01 2023-06-30 0001443669 us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember 2022-04-01 2022-06-30 0001443669 us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember 2023-01-01 2023-06-30 0001443669 us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember 2022-01-01 2022-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:UnitedStatesSegmentMember 2023-04-01 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:UnitedStatesSegmentMember 2022-04-01 2022-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:UnitedStatesSegmentMember 2023-01-01 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:UnitedStatesSegmentMember 2022-01-01 2022-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:EuropeSegmentMember 2023-04-01 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:EuropeSegmentMember 2022-04-01 2022-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:EuropeSegmentMember 2023-01-01 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:EuropeSegmentMember 2022-01-01 2022-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:JapanSegmentMember 2023-04-01 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:JapanSegmentMember 2022-04-01 2022-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:JapanSegmentMember 2023-01-01 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:JapanSegmentMember 2022-01-01 2022-06-30 0001443669 us-gaap:OperatingSegmentsMember 2023-04-01 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember 2022-04-01 2022-06-30 0001443669 us-gaap:OperatingSegmentsMember 2023-01-01 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember 2022-01-01 2022-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:CorporateUnallocatedAndJapanSegmentMember 2023-04-01 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:CorporateUnallocatedAndJapanSegmentMember 2022-04-01 2022-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:CorporateUnallocatedAndJapanSegmentMember 2023-01-01 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:CorporateUnallocatedAndJapanSegmentMember 2022-01-01 2022-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:UnitedStatesSegmentMember 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:UnitedStatesSegmentMember 2022-12-31 0001443669 us-gaap:OperatingSegmentsMember prlb:EuropeSegmentMember 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:EuropeSegmentMember 2022-12-31 0001443669 us-gaap:OperatingSegmentsMember prlb:JapanSegmentMember 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember prlb:JapanSegmentMember 2022-12-31 0001443669 us-gaap:OperatingSegmentsMember 2023-06-30 0001443669 us-gaap:OperatingSegmentsMember 2022-12-31 0001443669 prlb:InjectionMoldingProtomoldMember 2023-04-01 2023-06-30 0001443669 prlb:InjectionMoldingProtomoldMember 2022-04-01 2022-06-30 0001443669 prlb:InjectionMoldingProtomoldMember 2023-01-01 2023-06-30 0001443669 prlb:InjectionMoldingProtomoldMember 2022-01-01 2022-06-30 0001443669 prlb:CNCMachiningFirstcutMember 2023-04-01 2023-06-30 0001443669 prlb:CNCMachiningFirstcutMember 2022-04-01 2022-06-30 0001443669 prlb:CNCMachiningFirstcutMember 2023-01-01 2023-06-30 0001443669 prlb:CNCMachiningFirstcutMember 2022-01-01 2022-06-30 0001443669 prlb:ThreeDPrintingFinelineMember 2023-04-01 2023-06-30 0001443669 prlb:ThreeDPrintingFinelineMember 2022-04-01 2022-06-30 0001443669 prlb:ThreeDPrintingFinelineMember 2023-01-01 2023-06-30 0001443669 prlb:ThreeDPrintingFinelineMember 2022-01-01 2022-06-30 0001443669 prlb:SheetMetalMember 2023-04-01 2023-06-30 0001443669 prlb:SheetMetalMember 2022-04-01 2022-06-30 0001443669 prlb:SheetMetalMember 2023-01-01 2023-06-30 0001443669 prlb:SheetMetalMember 2022-01-01 2022-06-30 0001443669 prlb:OtherProductsMember 2023-04-01 2023-06-30 0001443669 prlb:OtherProductsMember 2022-04-01 2022-06-30 0001443669 prlb:OtherProductsMember 2023-01-01 2023-06-30 0001443669 prlb:OtherProductsMember 2022-01-01 2022-06-30 shares iso4217:USD iso4217:USD shares iso4217:EUR pure 0001443669 --12-31 2023 Q2 false P3Y 10-Q true 2023-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 26095434 66493000 56558000 19945000 23568000 2209000 1706000 75034000 76225000 14311000 13578000 868000 4042000 8501000 12597000 185152000 186568000 248614000 257785000 273991000 273991000 28353000 31250000 16344000 26419000 3084000 3844000 16934000 17532000 4738000 4779000 777210000 802168000 16474000 17356000 12486000 12743000 19155000 22384000 1209000 1561000 16549000 17537000 348000 0 66221000 71581000 1833000 2255000 745000 0 20790000 26322000 4936000 4362000 94525000 104520000 0.001 0.001 10000000 10000000 0 0 0 0 0 0 0.001 0.001 150000000 150000000 26095434 26095434 26888425 26888425 26000 27000 464950000 473740000 246930000 258236000 -29221000 -34355000 682685000 697648000 777210000 802168000 122265000 126902000 248124000 251070000 69142000 69480000 141225000 137844000 53123000 57422000 106899000 113226000 21730000 21055000 44181000 41641000 9865000 9450000 20542000 20007000 15822000 16522000 32655000 33293000 98000 5194000 164000 5194000 47515000 52221000 97542000 100135000 5608000 5201000 9357000 13091000 -3368000 1000 -2078000 -299000 2240000 5202000 7279000 12792000 2623000 2645000 5003000 5140000 -383000 2557000 2276000 7652000 -0.01 0.09 0.09 0.28 -0.01 0.09 0.09 0.28 26210478 27530739 26414467 27515583 26210478 27536823 26445427 27524019 3890000 -11287000 7410000 -11680000 26888425 27000 473740000 258236000 -34355000 697648000 26798 -401000 -401000 3695000 3695000 712500 1000 11849000 9475000 21325000 2659000 2659000 527000 527000 334000 334000 3520000 26202723 26000 465185000 251420000 -33494000 683137000 169229 962000 962000 3675000 3675000 276518 4872000 4107000 8979000 -383000 -383000 4254000 4254000 19000 19000 3890000 26095434 26000 464950000 246930000 -29221000 682685000 27465945 28000 468548000 376734000 -16817000 828493000 27716 -462000 -462000 4397000 4397000 5095000 5095000 -4972000 -4972000 -516000 -516000 -393000 27493661 28000 472483000 381829000 -22305000 832035000 122705 1158000 1158000 4031000 4031000 113266 1932000 3307000 5239000 2557000 2557000 -13515000 -13515000 -329000 -329000 -11287000 27503100 28000 475740000 381079000 -36149000 820698000 2276000 7652000 18883000 20274000 7370000 8428000 -5605000 -5653000 568000 0 -3906000 0 0 1792000 428000 0 215000 32000 -1106000 5748000 551000 1783000 -4193000 298000 3524000 -1250000 -961000 -521000 -2629000 8115000 31867000 31040000 6829000 6030000 623000 0 0 38882000 0 1000000 14020000 7396000 7814000 -36516000 1986000 2311000 1425000 1615000 30064000 5239000 163000 278000 -29666000 -4821000 -80000 -966000 9935000 -11263000 56558000 65929000 66493000 54666000 Basis of Presentation<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">.</span><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-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, 2022, as filed with the Securities and Exchange Commission (SEC) on February 21, 2023</span><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying Consolidated Balance Sheet as of December 31, 2022 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, 2023</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">as referenced above.</span></div> Recent Accounting PronouncementsThe Company did not recently adopt any accounting pronouncements that had a material impact on the Company's Consolidated Financial Statements. There are no pending accounting pronouncements that are expected to have a material impact on the Company's Consolidated Financial Statements. Net (Loss) Income per Common Share<span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Basic net (loss) income per share is computed based on the weighted-average number of common shares outstanding. Diluted net (loss) 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 380,848 and 220,776 for the three months ended June 30, 2023</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">and 2022</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">, </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">respectively, and 407,119 and 208,840 for the six months ended June 30, 2023 and 2022, respectively. </span><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The table below sets forth the computation of basic and diluted net (loss) 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 0 13.67pt"></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 0 13.67pt"></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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:114%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:114%">2022</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',sans-serif;font-size:10pt;font-weight:700;line-height:114%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:114%">2022</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Net (loss) 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">(383)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2,557 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2,276 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">7,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></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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">26,210,478</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">27,530,739</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">26,414,467</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">27,515,583</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',sans-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;text-align:left;vertical-align:bottom"><div style="padding-left:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Employee stock options and other</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:114%;position:relative;top:-3.5pt;vertical-align:baseline">1</span></div></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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">—</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">6,084</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">30,960</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">8,436</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">26,210,478</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">27,536,823</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">26,445,427</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">27,524,019</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Net (loss) income per share:</span></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 13.67pt 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 13.67pt 0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 13.67pt 0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 13.67pt 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 13.67pt 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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">(0.01)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">0.09 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">0.09 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">0.28 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">(0.01)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">0.09 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">0.09 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">0.28 </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 0 19pt"></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="24" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> For the three months ended June 30, 2023, 14,084 of dilutive securities for employee stock options and other were not included in the diluted weighted average shares outstanding due to the net loss for the three months ended June 30, 2023.</span></div></td></tr></table></div> 380848 220776 407119 208840 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The table below sets forth the computation of basic and diluted net (loss) 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 0 13.67pt"></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 0 13.67pt"></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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:114%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:114%">2022</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',sans-serif;font-size:10pt;font-weight:700;line-height:114%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:114%">2022</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Net (loss) 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">(383)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2,557 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2,276 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">7,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></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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">26,210,478</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">27,530,739</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">26,414,467</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">27,515,583</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',sans-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;text-align:left;vertical-align:bottom"><div style="padding-left:18pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Employee stock options and other</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:114%;position:relative;top:-3.5pt;vertical-align:baseline">1</span></div></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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">—</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">6,084</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">30,960</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">8,436</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">26,210,478</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">27,536,823</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">26,445,427</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">27,524,019</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Net (loss) income per share:</span></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 13.67pt 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 13.67pt 0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 13.67pt 0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000;padding:0 13.67pt 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 13.67pt 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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">(0.01)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">0.09 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">0.09 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">0.28 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">(0.01)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">0.09 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">0.09 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">0.28 </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 0 19pt"></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="24" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> For the three months ended June 30, 2023, 14,084 of dilutive securities for employee stock options and other were not included in the diluted weighted average shares outstanding due to the net loss for the three months ended June 30, 2023.</span></div></td></tr></table></div> -383000 2557000 2276000 7652000 26210478 27530739 26414467 27515583 0 6084 30960 8436 26210478 27536823 26445427 27524019 -0.01 0.09 0.09 0.28 -0.01 0.09 0.09 0.28 14084 Goodwill and Other Intangible Assets<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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, 2023.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets other than goodwill at June 30, 2023 and December 31, 2022 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',sans-serif;font-size:9pt;font-weight:700;line-height:114%">June 30, 2023</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',sans-serif;font-size:9pt;font-weight:700;line-height:114%">December 31, 2022</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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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 2px 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Marketing assets</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',sans-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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">930 </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',sans-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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(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 style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">78 </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',sans-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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">930 </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',sans-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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(806)</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',sans-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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">124 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">10.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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">0.8</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Non-compete agreement</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">832 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(545)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">287 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">828 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(487)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">341 </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:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">2.0 - 5.0</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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">1.8</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Software technology</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">13,229 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(7,068)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">6,161 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">13,229 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(6,383)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">6,846 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">10.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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">4.5</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Software platform</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">26,247 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(5,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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">20,737 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">26,054 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(4,337)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">21,717 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">12.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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">9.6</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Tradenames</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">352 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(286)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">66 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">350 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(227)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">123 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">3.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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">0.6</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Customer relationships</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">12,213 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(11,189)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">1,024 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">12,197 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(10,098)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">2,099 </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:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">3.0 - 9.0</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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">0.4</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Total intangible assets</span></td><td style="background-color:#ffffff;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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">53,803 </span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(25,450)</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">28,353 </span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">53,588 </span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(22,338)</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">31,250 </span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;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: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 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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets allocated to the acquired Hubs 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 losses related to intangible assets were $1.5 million and $1.7 million as of June 30, 2023 and December 31, 2022, respectively. Amortization expense for intangible assets was $1.5 million for each of the three months ended June 30, 2023 and 2022 and $3.1 million for each of the six months ended June 30, 2023 and 2022, respectively.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Remaining 2023</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2,894</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2024</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">3,741</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2025</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">3,644</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">3,542</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">3,533</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">10,999</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">28,353</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> <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets other than goodwill at June 30, 2023 and December 31, 2022 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',sans-serif;font-size:9pt;font-weight:700;line-height:114%">June 30, 2023</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',sans-serif;font-size:9pt;font-weight:700;line-height:114%">December 31, 2022</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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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 2px 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Marketing assets</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',sans-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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">930 </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',sans-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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(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 style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">78 </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',sans-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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">930 </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',sans-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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(806)</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',sans-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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">124 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">10.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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">0.8</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Non-compete agreement</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">832 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(545)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">287 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">828 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(487)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">341 </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:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">2.0 - 5.0</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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">1.8</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Software technology</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">13,229 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(7,068)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">6,161 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">13,229 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(6,383)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">6,846 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">10.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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">4.5</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Software platform</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">26,247 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(5,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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">20,737 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">26,054 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(4,337)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">21,717 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">12.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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">9.6</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Tradenames</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">352 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(286)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">66 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">350 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(227)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">123 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">3.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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">0.6</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Customer relationships</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">12,213 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(11,189)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">1,024 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">12,197 </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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(10,098)</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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">2,099 </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:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">3.0 - 9.0</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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">0.4</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;text-indent:-9pt;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">Total intangible assets</span></td><td style="background-color:#ffffff;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',sans-serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">53,803 </span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(25,450)</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">28,353 </span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">53,588 </span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">(22,338)</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;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:0.75pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">$</span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:114%">31,250 </span></td><td style="background-color:#ffffff;border-top:0.75pt solid #000000;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: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 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> 930000 852000 78000 930000 806000 124000 P10Y P0Y9M18D 832000 545000 287000 828000 487000 341000 P2Y P5Y P1Y9M18D 13229000 7068000 6161000 13229000 6383000 6846000 P10Y P4Y6M 26247000 5510000 20737000 26054000 4337000 21717000 P12Y P9Y7M6D 352000 286000 66000 350000 227000 123000 P3Y P0Y7M6D 12213000 11189000 1024000 12197000 10098000 2099000 P3Y P9Y P0Y4M24D 53803000 25450000 28353000 53588000 22338000 31250000 11600000 16600000 -1500000 -1700000 1500000 1500000 3100000 3100000 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">Remaining 2023</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2,894</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2024</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">3,741</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">2025</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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">3,644</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">3,542</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">3,533</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">10,999</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:114%">28,353</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> 2894000 3741000 3644000 3542000 3533000 10999000 28353000 Fair Value Measurements<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Accounting Standards Codification, </span><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-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',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Level </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">1</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">—</span><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Level </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">2</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">—</span><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">not</span><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Level </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">3</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">—</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Unobservable inputs that are supported by little or </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">no</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes financial assets as of June 30, 2023 and December 31, 2022 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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">June 30, 2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">December 31, 2022</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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">56,768 </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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">38,862 </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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">9,725 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">17,696 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">5,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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">30,832 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">9,881 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">40,106 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">71,950 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">30,832 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">66,439 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">40,106 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes financial assets as of June 30, 2023 and December 31, 2022 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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">June 30, 2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">December 31, 2022</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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">56,768 </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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">38,862 </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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">9,725 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">17,696 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">5,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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">30,832 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">9,881 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">40,106 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">71,950 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">30,832 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">66,439 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">40,106 </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',sans-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',sans-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> 56768000 0 0 38862000 0 0 9725000 0 0 17696000 0 0 5457000 30832000 0 9881000 40106000 0 71950000 30832000 0 66439000 40106000 0 Marketable Securities<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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, 2023 and December 31, 2022:</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">June 30, 2023</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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">U.S. municipal 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">12,229 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(293)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">11,936 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">4,050 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(93)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">3,957 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">U.S. government agency 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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">20,787 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(637)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">20,150 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certificates of deposit/time deposits</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">249 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">246 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">37,315 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(1,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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">36,289 </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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">December 31, 2022</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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">U.S. municipal 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">15,574 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(417)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">15,157 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">9,578 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(205)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">9,373 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">U.S. government agency 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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">25,275 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">24,525 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certificates of deposit/time deposits</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">939 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(7)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">932 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">51,366 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(1,379)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">49,987 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The June 30, 2023 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',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-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: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="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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">June 30,<br/>2023</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">19,945 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">16,344 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">36,289 </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, 2023 and December 31, 2022:<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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">June 30, 2023</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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">U.S. municipal 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">12,229 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(293)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">11,936 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">4,050 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(93)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">3,957 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">U.S. government agency 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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">20,787 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(637)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">20,150 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certificates of deposit/time deposits</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">249 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">246 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">37,315 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(1,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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">36,289 </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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">December 31, 2022</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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">U.S. municipal 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">15,574 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(417)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">15,157 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">9,578 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(205)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">9,373 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">U.S. government agency 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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">25,275 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">24,525 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certificates of deposit/time deposits</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">939 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(7)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">932 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">51,366 </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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(1,379)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">49,987 </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> 12229000 0 293000 11936000 4050000 0 93000 3957000 20787000 0 637000 20150000 249000 0 3000 246000 37315000 0 1026000 36289000 15574000 0 417000 15157000 9578000 0 205000 9373000 25275000 0 750000 24525000 939000 0 7000 932000 51366000 0 1379000 49987000 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The June 30, 2023 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',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-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: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="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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">June 30,<br/>2023</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">19,945 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">16,344 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">36,289 </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> 19945000 16344000 36289000 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.<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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: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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">June 30,<br/>2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">December 31,<br/>2022</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">14,855 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">13,965 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(544)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(387)</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">14,311 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">13,578 </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',sans-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: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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">June 30,<br/>2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">December 31,<br/>2022</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">14,855 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">13,965 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(544)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(387)</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">14,311 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">13,578 </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> 14855000 13965000 544000 387000 14311000 13578000 Stock-Based Compensation<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Under the Company’s 2012 Long-Term Incentive Plan, as amended (the 2012 Plan), the Company had the ability to grant stock options, stock appreciation rights (SARs), restricted stock, restricted stock units, other stock-based awards and cash incentive awards through February 23, 2022</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">.</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> On July 8, 2022</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">, </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">the board of directors approved the Proto Labs, Inc. 2022 Long-Term Incentive Plan (the 2022 Plan), which was approved by the Company's shareholders at a Special Meeting of Shareholders on August 29, 2022</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">. </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">No awards were granted from February 23, 2022</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">to August 29, 2022</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">. </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Awards outstanding under the 2012 Plan as of August 29, 2022</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">will continue to be subject to the terms of the 2012 Plan, but if those awards subsequently expire, are forfeited or cancelled or are settled in cash, the shares subject to those awards will become available for awards under the 2022 Plan. 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 committee</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">may</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">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 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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock-based compensation expense was $3.7 million and $4.0 million for the three months ended June 30, 2023 and 2022, respectively, and $7.4 million and $8.4 million for the six months ended June 30, 2023 and 2022.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes stock option activity during the six months ended June 30, 2023:</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Options outstanding at December 31, 2022</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">263,992</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">79.07 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">186,804</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">33.36 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">-</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">-</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(35,702)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">63.70 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(15,848)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">55.67 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Options outstanding at June 30, 2023</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">399,246</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">59.99 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Exercisable at June 30, 2023</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">125,050</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">90.81 </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',sans-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',sans-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, 2023 was $16.36.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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, 2023 and 2022:</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended 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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">3.90% - 4.55%</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">1.94%</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">2.00 - 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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">6.25</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">49.23% - 55.92%</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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">45.95%</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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of June 30, 2023, there was $5.3 million of unrecognized compensation expense related to unvested stock options, which is expected to be recognized over a weighted-average period of 2.8 years.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Restricted Stock </span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Restricted stock 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-576">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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes restricted stock activity during the six months ended June 30, 2023:</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Restricted<br/>Stock</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Restricted stock at December 31, 2022</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">478,596</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">70.36 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">406,150</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">32.50 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(135,687)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">80.02 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(65,821)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">70.09 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Restricted stock at June 30, 2023</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">683,238</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">45.88 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of June 30, 2023, there was $25.3 million of unrecognized compensation expense related to non-vested restricted stock, 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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Performance Stock </span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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. Certain PSUs granted by the Company in 2021 are based on performance conditions and the related compensation cost is based on the probability that the performance conditions will be achieved. The Company’s PSUs granted in 2020, 2022, 2023 and certain PSUs granted in 2021 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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes performance stock activity during the six months ended June 30, 2023:</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Performance<br/>Stock</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Performance stock at December 31, 2022</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">35,802</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">77.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></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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">71,295</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">57.79 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">-</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',sans-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;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">-</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',sans-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;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Performance stock at June 30, 2023</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">107,097</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">74.08 </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',sans-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, 2023 and 2022: </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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">4.35%</span></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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">1.76%</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',sans-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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">2.88</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">2.87</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',sans-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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">58.00%</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">53.50%</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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of June 30, 2023, there was $5.5 million of unrecognized compensation expense related to non-vested performance stock, 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',sans-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',sans-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, 2023 and 2022: </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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">4.60 - 4.82%</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">0.17 - 2.06%</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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">47.38 - 67.84%</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">47.05 - 53.44%</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',sans-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',sans-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',sans-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 P10Y 0.15 P6M 0.85 3700000 4000000 7400000 8400000 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes stock option activity during the six months ended June 30, 2023:</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Options outstanding at December 31, 2022</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">263,992</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">79.07 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">186,804</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">33.36 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">-</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">-</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(35,702)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">63.70 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(15,848)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">55.67 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Options outstanding at June 30, 2023</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">399,246</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">59.99 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Exercisable at June 30, 2023</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">125,050</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">90.81 </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> 263992 79.07 186804 33.36 0 0 35702 63.70 15848 55.67 399246 59.99 125050 90.81 P10Y P4Y 16.36 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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, 2023 and 2022:</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Six Months Ended 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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">3.90% - 4.55%</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">1.94%</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">2.00 - 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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">6.25</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">49.23% - 55.92%</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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">45.95%</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',sans-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',sans-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',sans-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.0390 0.0455 0.0194 P2Y P6Y3M P6Y3M 0.4923 0.5592 0.4595 0 0 5300000 P2Y9M18D P4Y <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes restricted stock activity during the six months ended June 30, 2023:</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Restricted<br/>Stock</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Restricted stock at December 31, 2022</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">478,596</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">70.36 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">406,150</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">32.50 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(135,687)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">80.02 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(65,821)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">70.09 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Restricted stock at June 30, 2023</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">683,238</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">45.88 </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> 478596 70.36 406150 32.50 135687 80.02 65821 70.09 683238 45.88 25300000 P2Y10M24D 0 2 P3Y <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes performance stock activity during the six months ended June 30, 2023:</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Performance<br/>Stock</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Performance stock at December 31, 2022</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">35,802</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">77.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></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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">71,295</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">57.79 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">-</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',sans-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;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">-</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',sans-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;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Performance stock at June 30, 2023</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">107,097</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">74.08 </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> 35802 77.91 71295 57.79 0 0 0 0 0 0 107097 74.08 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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, 2023 and 2022: </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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">4.35%</span></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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">1.76%</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',sans-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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">2.88</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">2.87</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',sans-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:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">58.00%</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">53.50%</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',sans-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',sans-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',sans-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.0435 0.0176 P2Y10M17D P2Y10M13D 0.5800 0.5350 0 0 5500000 P2Y3M18D <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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, 2023 and 2022: </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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">4.60 - 4.82%</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">0.17 - 2.06%</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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">47.38 - 67.84%</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">47.05 - 53.44%</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',sans-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',sans-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',sans-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.0460 0.0482 0.0017 0.0206 P6Y P6Y 0.4738 0.6784 0.4705 0.5344 0 0 Accumulated Other Comprehensive Income (Loss)<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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. During the three and six months ended June 30, 2023 we recognized a $3.9 million foreign currency translation loss from the substantial completion on the closure of our Japan business. </span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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, 2023 and 2022:</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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(33,494)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(22,305)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(34,355)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(16,817)</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">348 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(13,515)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">875 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(18,487)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">3,906 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">3,906 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">4,254 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(13,515)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">4,781 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(18,487)</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',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Net unrealized gains (losses) 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">19 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(329)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">353 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(845)</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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">19 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(329)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">353 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(845)</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(29,221)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(36,149)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(29,221)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(36,149)</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> -3900000 -3900000 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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, 2023 and 2022:</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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(33,494)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(22,305)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(34,355)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(16,817)</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">348 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(13,515)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">875 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(18,487)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">3,906 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">3,906 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">4,254 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(13,515)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">4,781 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(18,487)</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',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Net unrealized gains (losses) 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">19 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(329)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">353 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(845)</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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">19 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(329)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">353 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(845)</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(29,221)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(36,149)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(29,221)</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(36,149)</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> -33494000 -22305000 -34355000 -16817000 348000 -13515000 875000 -18487000 -3906000 0 -3906000 0 4254000 -13515000 4781000 -18487000 19000 -329000 353000 -845000 0 0 0 0 19000 -329000 353000 -845000 -29221000 -36149000 -29221000 -36149000 Income Taxes<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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, 2023 and 2022, the Company recorded an income tax provision of $2.6 million and $2.6 million, respectively. For the six months ended June 30, 2023 and 2022, the Company recorded an income tax provision of $5.0 million and $5.1 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, 2023 was 117.1 percent compared to 50.8 percent in the same period of the prior year. The effective tax rate increased by 66.3 percent for the three months ended June 30, 2023 when compared to the same period in 2022, primarily due to the tax impact of the foreign currency translation loss from the substantial completion on the closure of our Japan business. The effective income tax rate for the six months ended June 30, 2023 was 68.7 percent compared to 40.2 percent in the same period of the prior year. The effective tax rate increased by 28.5 percent for the six months ended June 30, 2023 when compared to the same period in 2022, primarily due to the tax impact of the foreign currency translation loss from the substantial completion on the closure of our Japan business.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The effective income tax rate for the three and six months ended June 30, 2023 differs from the U.S. federal statutory rate of 21.0 percent due to various factors, including operating in multiple state and foreign jurisdictions and tax credits for which the Company qualifies.</span></div><div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company had unrecognized tax benefits totaling $3.6 million as of June 30, 2023 and $3.2 million as of December 31, 2022, 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 </span></div>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. 2600000 2600000 5000000 5100000 1.171 0.508 0.663 0.687 0.402 0.285 0.210 0.210 3600000 3200000 Segment Reporting<div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-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 Corporate Unallocated and Japan 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue and income from operations by reportable segment for the three and six months ended June 30, 2023 and 2022 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: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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">96,321 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">100,655 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">194,067 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">196,151 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">25,944 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">23,391 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">54,057 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">47,977 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Japan</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">2,856 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">6,942 </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 28pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">122,265 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">126,902 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">248,124 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">251,070 </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="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: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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Income (Loss) from Operations:</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">22,053 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">26,168 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">42,534 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">48,691 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(3,380)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(2,249)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(5,863)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(3,928)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Corporate Unallocated and Japan</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(13,065)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(18,718)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(27,314)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(31,672)</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 28pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Total Income 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">5,608 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">5,201 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">9,357 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">13,091 </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="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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Total long-lived assets at June 30, 2023 and December 31, 2022 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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">June 30,<br/>2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">December 31,<br/>2022</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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">194,656 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">203,816 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">53,958 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">53,835 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Japan</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">134 </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 28pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Total Long-lived 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">248,614 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">257,785 </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;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:15pt"><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"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue by product line for the three and six months ended June 30, 2023 and 2022 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: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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">48,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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">53,355 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">100,767 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">106,753 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">48,297 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">48,222 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">96,401 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">94,320 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">21,005 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">19,963 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">42,330 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">39,635 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">3,939 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">5,160 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">8,187 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">9,847 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">205 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">202 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">439 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">515 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">122,265 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">126,902 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">248,124 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">251,070 </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="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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue and income from operations by reportable segment for the three and six months ended June 30, 2023 and 2022 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: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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-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:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">96,321 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">100,655 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">194,067 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">196,151 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">25,944 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">23,391 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">54,057 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">47,977 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Japan</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">2,856 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">6,942 </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 28pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">122,265 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">126,902 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">248,124 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">251,070 </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="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> 96321000 100655000 194067000 196151000 25944000 23391000 54057000 47977000 0 2856000 0 6942000 122265000 126902000 248124000 251070000 <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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Income (Loss) from Operations:</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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">22,053 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">26,168 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">42,534 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">48,691 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(3,380)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(2,249)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(5,863)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(3,928)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Corporate Unallocated and Japan</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(13,065)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(18,718)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(27,314)</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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(31,672)</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 28pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Total Income 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">5,608 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">5,201 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">9,357 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">13,091 </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="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> 22053000 26168000 42534000 48691000 -3380000 -2249000 -5863000 -3928000 -13065000 -18718000 -27314000 -31672000 5608000 5201000 9357000 13091000 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Total long-lived assets at June 30, 2023 and December 31, 2022 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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">June 30,<br/>2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">December 31,<br/>2022</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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">194,656 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">203,816 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">53,958 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">53,835 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Japan</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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">134 </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 28pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Total Long-lived 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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">248,614 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">257,785 </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;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:15pt"><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> 194656000 203816000 53958000 53835000 0 134000 248614000 257785000 <div style="margin-top:10pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue by product line for the three and six months ended June 30, 2023 and 2022 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: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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2023</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',sans-serif;font-size:10pt;font-weight:700;line-height:120%">2022</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',sans-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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">48,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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">53,355 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">100,767 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">106,753 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">48,297 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">48,222 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">96,401 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">94,320 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">21,005 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">19,963 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">42,330 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">39,635 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">3,939 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">5,160 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">8,187 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">9,847 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">205 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">202 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">439 </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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">515 </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',sans-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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">122,265 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">126,902 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">248,124 </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',sans-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',sans-serif;font-size:10pt;font-weight:400;line-height:120%">251,070 </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="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> 48819000 53355000 100767000 106753000 48297000 48222000 96401000 94320000 21005000 19963000 42330000 39635000 3939000 5160000 8187000 9847000 205000 202000 439000 515000 122265000 126902000 248124000 251070000 false false false false EXCEL 58 Financial_Report.xlsx IDEA: XBRL DOCUMENT begin 644 Financial_Report.xlsx M4$L#!!0 ( )%Z!%<'04UB@0 +$ 0 9&]C4')O<',O87!P+GAM M;$V./0L",1!$_\IQO;=!P4)B0-!2L+(/>QLOD&1#LD)^OCG!CVX>;QA&WPIG M*N*I#BV&5(_C(I(/ !47BK9.7:=N')=HI6-Y #OGDK7A.YNJQ<&4GPZ4A!0W_J=0U[R;UEA_6\#MI7E!+ P04 M " "1>@17:*+\ K @ $0 &1O8U!R;W!S+V-O&ULS9)1 M2\,P$,>_BN2]O;05F:'+BV-/"H(#Q;>0W+9@DX;DI-VW-ZU;A^@'\#%W__SN M=W"M#D+W$9]C'S"2Q70SNLXGH<.:'8F" $CZB$ZE,B=\;N[[Z!3E9SQ 4/I# M'1!JSN_ (2FC2,$$+,)"9+(U6NB(BOIXQAN]X,-G[&:8T8 =.O24H"HK8'*: M&$YCU\(5,,$(HTO?!30+<:[^B9T[P,[),=DE-0Q#.31S+N]0P=O3X\N\;F%] M(N4UYE_)"CH%7+/+Y-?F8;/;,EGSNBGXJN"WN^I>U%Q4J_?)]8??5=CUQN[M M/S:^",H6?MV%_ )02P,$% @ D7H$5YE&UL[5I;<]HX%'[OK]!X9_9M"\8V@;:T$W-I=MNTF83M M3A^%$5B-;'EDD81_OTV23;J;/ 0LZ?O.14?GZ#AY\^XN8NB&B)3R M> +]O6N[!3+ MUES@6QHO(];JM-O=5H1I;*$81V1@?5XL:$#05%%:;U\@M.4?,_@5RU2-9:,! M$U=!)KF(M/+Y;,7\VMX^9<_I.ATR@6XP&U@@?\YOI^1.6HCA5,+$P&IG/U9K MQ]'22(""R7V4!;I)]J/3%0@R#3LZG5C.=GSVQ.V?C,K:=#1M&N#C\7@XMLO2 MBW A(5M>5 TR M6'!VULS2 Y9>*?IUE!K9';O=05SP6.XYB1'^QL4$UFG2&98T1G*=D 4. #?$ MT4Q0?*]!MHK@PI+27)#6SRFU4!H(FLB!]4>"(<7K;YH] M5Z%82=J$^!!&&N*<<^9ST6S[!Z5&T?95O-RCEU@5 9<8WS2J-2S%UGB5P/&M MG#P=$Q+-E L&08:7)"82J3E^34@3_BNEVOZKR2.FJW"$2M"/F(9 M-AIRM1:!MG&IA&!:$L;1>$[2M!'\6:PUDSY@R.S-D77.UI$.$9)>-T(^8LZ+ MD!&_'H8X2IKMHG%8!/V>7L-)P>B"RV;]N'Z&U3-L+([W1]072N0/)J<_Z3(T M!Z.:60F]A%9JGZJ'-#ZH'C(*!?&Y'C[E>G@*-Y;&O%"N@GL!_]':-\*K^(+ M.7\N?<^E[[GT/:'2MSAD6R4)RU3393>* M$IY"&V[I4_5*E=?EK[DHN#Q;Y.FOH70^+,_Y/%_GM,T+,T.WF)&Y M"M-2D&_#^>G%>!KB.=D$N7V85VWGV-'1^^?!4;"C[SR6'<>(\J(A[J&&F,_# M0X=Y>U^89Y7&4#04;6RL)"Q&MV"XU_$L%.!D8"V@!X.O40+R4E5@,5O& RN0 MHGQ,C$7H<.>77%_CT9+CVZ9EM6ZO*7<9;2)2.<)IF!-GJ\K>9;'!51W/55OR ML+YJ/;053L_^6:W(GPP13A8+$DACE!>F2J+S&5.^YRM)Q%4XOT4SMA*7&+SC MYL=Q3E.X$G:V#P(RN;LYJ7IE,6>F\M\M# DL6XA9$N)-7>W5YYNTB42%(JP# 4A M%W+C[^^3:G>,U_HL@6V$5#)DU1?*0XG!/3-R0]A4)?.NVB8+A=OB5,V[&KXF M8$O#>FZ=+2?_VU[4/;07/4;SHYG@'K.' MYA,L0Z1^P7V*BH 1JV*^NJ]/^26<.[1[\8$@F_S6VZ3VW> ,?-2K6J5D*Q$_ M2P=\'Y(&8XQ;]#1?CQ1BK::QK<;:,0QY@%CS#*%F.-^'19H:,]6+K#F-"F]! MU4#E/]O4#6CV#30,9FV-J/D3@H\W/[O#;#"Q([A[8N_ 5!+ P04 M" "1>@170<33I- % #*'@ & 'AL+W=OS1?P[;S1HZ/+*VFPENHQ70JAR7,<)>E9:ZGUZK332?VEB'EZ M)%DH3,1$D32+ M8ZY>SD4DUV=(:#%5^(J="_KR8*[CJE2A#&(DE#F1 EYF>M M$3T=N\P$Y%]\#<4Z?75-#,I,RD=SQ%A$D5&"("9\52,9?1'&.CE6>ND10(QYUFD[^3Z%[$!ZAH]7T9I M_I>LBV\]KT7\+-4RW@1#">(P*?[SYTU%O Z@-0%L$\#>!="Z7W W 6X.6I0L MQ_K(-1\.E%P39;X&-7.1UTT>#31A8M(XU0K>AA"GAV/Y)!1IDW3)E4@''0V: MYDW'W\2?%_&L)KY';F2BERFY2 (1O(WO0%G* K%M@/@H6QP1A]K"WQ3'+>O'S?53^925LI'@X==I? M;$AH5$.D;HG4W0_I2\:5%BIZ(7=B)96VX>%26F6V2AFC40WQ>B5>;S^\B5"A M#$PO)# .6).'*Y7]KK;CH?$-.8]+SN,]6Z;B,(7D,T!]'G&M.8]2:R+1L(: M)R7@"5JHBT2'^H5;61HP'-45^92#H/LCW_)EL,*>P@W1"L[1'%#\QZV[,@TYDJGE$ M_@Q7]4,5KMCMNMV^E?00=HE6?HGB-B=OKR-8\-:#X0+'/:LYPJ.:8E7VB.*> MYEKZD*_)$H80;-C%1;SC?MOMG3A6OD.8(UJY(XI;F_M0PS@AYX2R'V<_D:GP M,P69M$+B2F,9QS W3;7T'Z&AL0IHE5IHGAMF:;37+Q["]YLA"U]G"' MT.W#],*Z97 (A\0JA\3VSN@J@75VL3UGUJ)\"V[EQ!7K. _A@5CE@=A>'LBLU<"N@2582&4=BG;H M7',%;7WD^P*$0"8H)*W$AS!"K#)";"\C-(UY%)'S+(77J;W=XCJU2V\\KBE? MY7_87O[G(A9J83KF)U#02[ (\8HG]M3B@O6@A[ _K+(_#'?)QEA9(;;73M$81E0%GN\J"<0S^4W8T[AKP\BAGN?V>E:GC@9'%P6#XM#VI'^?%DI_J\..6] MX6:^3$DDYA#J'!W#@*>*@]/B1LM5?O8XDUK+.+]<"AX(93Z ]W,I]?;&_$!Y M?#W\%U!+ P04 " "1>@17NM?^E_D& "/'@ & 'AL+W=OK-;*;R):^9NA KWL O"R%KIN%2WL_42G)6=$9U-2-!$,]J5C:3^67WW8V< M7XI65V7#;R12;5TS^?2>5^+A:H(GNR^^E/=+;;Z8S2]7[)[?#/FE_SJC(K 8\?VT4G^WL:P\//N]4_=LZ#,W=,\6M1_5L6>GDU22>HX O6 M5OJ+>/B#;QV*S'JYJ%3W/WK88H,)RENE1;TU!@9UV6S^LL=M( X,<#AB0+8& MY+D&=&M .TB5:PIU.5,PYV-_2S? MWN7]YBYDY"Y_MLT%HL$4D8!0A_FUW_P#S\$<=^;DV'P&_NZ=)GNG2;<>'7.Z ME9(W&C&EP$^7.QO[T&UOCM8;M6(YOYK V5%NIQ[I<6.7*5[ M5ZEO]?DU4TL$FX9R\X'_:,LUJ\!WI]>;I>)N*7/^U_,X#C/8L/6A.S8JBJ,H MW:..>(9[GJ&7Y^U22'VNN:PAN^5WKME=Q9'B>2M+77(GWS.$5195(CV3B_: M"@K6U@0@9V1*@JS;ES,\38(84M%\#^>$;[9^=UBF'0@. *_ON-S^MCT)4[B[ M6O&N$%9/K@A%EN])%-!P$"$'*B8D/;@XZ 4O.!%=Z(&D?NJB:@KB"KH2W9U>I[ %=OT(TQ@/ M#Y$+%R5).G*,\(% 8R_?WX4H'LJJ5 M9:-9SG$ M?CW\6#:=XITD:6L-CC-+D5RP)*(C=17WFH3]HK1)UVJ?!1ZBMOB$"1U6?RCM@"32E[FTAO;01O[0!1=G" M' <=CND M'!7F4XQ=6A>%%F4'#*KS2/M(>JTC?JT[:LT]IXPX-"PXIX)I:U@,8]6P-7/ $ARE8PG02QWQ2UW?ZKPT;1UC5TJ''9H#!2/C2+-+ M>N4C?N7K6;\L<1V":#T(<(#&,J(70N(?U7J^!5]PR(O"I.])NO;\18(D&\JW M"Q93,M(%D5[)B%_)AEW0*;:V6H49M<3"@:+Q"%?:2QKU2]KFR)U@2&VARL*( M#!/ <,!X$:R@/:"1K&W';I=,LF7HBJX5+]T,Z5V/O:@7EU\:3_T6JL=.]VK M(O6KXHW<9;S2(O\^16?!11!@*-P2K5G5\BEBK5X*6?X'&!Q,@Z#[AY2)EGJ+ M2J5,%] I?ZL5C)"%*5([P/:1&&?Y\N6/QIS1MY5V>.*\D.,X'3R /:'$HJY% M\[P@1<^.$HFG019-0QIV/\%EFJ;3D$3'T7OM!XK4->8.@^C C/0&M.\-J+\W M>%<4I6EGH1B89V/G98-RMBJA.#AIVN(?QF$66?OMP"4T"<\4J+]3^,(U M@Z\*2%_9P'ZYRY8M_22$:=ABZP3J[Q&@$6_KMNK>_6R?+\+D M *7,O*9;@^H*Y29NB_\YR>S>QH6C(1UK$VC?)M#G#,CJN677%OXX)7%JZ8,# MER5Q.#(NT[Y+H/XNP1*Q[@P^FWYJO7!Q3OL.G'/:GQV\+32O:O]F\KYL%'1: M"S ,+A((@-R\_=Q<:+'J7B#>":U%W7U<<@:T#0!^7PBA=Q?FG>3^'?3\?U!+ M P04 " "1>@17'KC>FC8# #L"@ & 'AL+W=O(#6E_8)#7_SV_H(<7%0:IGG0,8\K7@0B^]W)CRSO=U MFD-!]:TL0>"3K50%-=A5.U^7"FCF1 7WHR"(_8(RX24+-[96R4)6AC,!:T5T M5114_?T 7!Z67NB]#'QFN]S8 3]9E'0'&S!?RK7"GM^Z9*P H9D41,%VZ=V' M=ZO0"5S$;PP.NM,F-I4G*9]MY^=LZ066"#BDQEI0_-G#"CBW3LCQ5V/JM7-: M8;?]XO[1)8_)/%$-*\E_9YG)E][,(QEL:<7-9WGX"9J$)M8OE5R[;W*H8^.Y M1])*&UDT8B0HF*A_Z==F(3J"&:?"!,D%]S66DJ,KWP#9)8/S]M9GVH9XW>F?53)6[)*+@A M41"-!N2KX_)'2%$>.GG4E_N8?[L(4;L(D?,;O>.W,9@^UJ8A$^TZ#VX"7??Q?&P8]#B?]/ M9KUE&+7+,#KFGMQSW-2N /!X(*F"C!G"I=8W6(G*EL)0^K5G[#SMH;%/HBB8 M+_Q]-ZVW0>$TB-N@'NZXQ1T?Q5WCA@?$R@CNDO3YAI14D3WE%9 K+,], Q^+Z)%.6]+I9:3X+M,&CRTF M=J=PIR=QCT7T<&RAA\&_+\+@ OCSZKFQ[/)$<3"?C$?C5^"#D;/9;!Q-W@'OO,'#"\ O M*._&]QSZHK]S%;'WP%^HVC&A"8WD21J\Z[AF MCM=14#8 GV^E-"\=>^%I+[C)-U!+ P04 " "1>@17K^[*YTP& "<'@ M& 'AL+W=O0S$+X;CO8'XJ9Z1P[30EVFY MI8.$'W?Y)7+P>T0Q=8#QS$\/IY"<__?TY7]^>FC:DKS8\\GLQQ^(AW^"9GE,LL689,N1R#KY M8(=\L"'VV1>^Y_F.0[-?!WI58+E'[&>$4NJYU]/]\;Q","_$M M;V##* D)9 M%[8$8"[!/C[ .BK=@TIW4.5<2%766]&OMB9PCQ[LA809*N80B@78T&JC"--S M9\S<$H Y?L 8K-4[:/4&M?Y:""G1MA#K1$%"/>NIKD/*UM 1"J!\1LVDVBB" MO2 ,#:$ C#BZE&"A_D&H/]A*FN:1/R+^K+V.Y.!FX8_90\8D6XQ)MAR)K).( MX)"(8+#B/D7%=UXE0N_82$8IG(G J@)*?,=8.W,(A5UCZ2QL%&,D($;= 2CB M,0*777A0&[[2,26/BM6F$AOKAI**;;FA09)#:P!A8#50 ,1&6PG.]U-)*<11KYYA(52Z]/=A)&[+./V*&^]*1FT6K/FO61=B.Q%O[:FH&['%N1A*]< BF)+M8T*'=953L![E'.PG354QV.X7[@:Z&7=BT:J>BYI\9MGT8I,_=@8FJZX+@B\:6Y?@EJ"*!K )4E; M_TB'_>,B27?E;X*G:V\(7],.P #M)Z&6(*I7>VL@*1G^P:O4*-%.:OU*(+T@ MMWHNRAWV3:N4#MK4MZ[24=D6H[(MQV+KYJMUOW38_;:KM$J&A,O3=J!Z:R28 MF0YF#B%]U\&^8U4IQ,D(8YYI!6%.XKI!S^L.;1TP'7; QRMU2+]M1OOT TBM MWPM,([$ .1G3]M_2#W)J2T9ZG"%MW3!E@ZL5/J?XO5JG9^6:U>^!VC#!DS)H MM-^\1,=D6XS*MAR+K9NDUK[3UW[-/4Y2TS[K9@KFQ;5\EA.$IG\'4!>$T,#T M=@#.9P2;)0JR>8'I9:='IVT9+QZK8TZI=XE=KNI#E[O6 DQN(BD2Y)Q>D^_4!9%03@\4/2?IJ\260; M^#\0_B (_ "0U_=-^Z';E&4??-IMZ^[5Q:;O[UY>776K3;DKNA?-75GKO[QO MVEW1ZQ_;VZONKBV+]2'3;GO%PE!>[8JJOKBY/OSN=7MSW>S[;567K]N@V^]V M1?OK]^6VN7]U$5W\]HLWU>VF'WYQ=7-]5]R6;\O^Y[O7K?[IZJ2RKG9EW55- M';3E^U<7WT4O51(/&0XI_EF5]]W9YV#X*N^:YL/PPP_K5Q?A4*)R6Z[Z0:+0 M_WTL%^5V.RCIEGTQB?Q3TQ=;(-L"S[9H=CO=(M_VS>H#D'N) MY_YNO:Z&%EUL@]=%M;[\H0X6Q5T%ER3'M=Z4O;YR=;7E15M7]2U4!VJD.*O5 M?K??'BK_'_VF; /]]70/L1DNW8]E\+>FC" M=V7[L;RX^>,?(AG^&3+X02P^B T]W\<;E@@99R*^OOIX[B5EU)Q23!&)66[R MDYM\IIM3''S0E&>5GK)49-RN\H6?C*6.*WX2(=-8.,ER/QE/9,*%G4SYR2XC MF4;)*9E51^)41^*0CS]21S_4*WV?[71#UQ5S^/3-T%T=>@VW2_OWFV:[#?1] MZKYHU_^!ZDY0MGY*L26E6$XIIHC$+/?CD_LQ>H4<[Q$/'5Q0==U>]Z_Z%^6G MLEU5NE7HNUMS-]P'ND#?O()FZ'J_#6H]D--_.6:[K_K-IMRN SU\"_KB4]"\ MVU:WQ4.NL_X3:C!H\>8VF!CH+I-(.E+^G!TL$,[>KP MN80\2;P:$CQ+'$_0L',]F1(QIXRHB,0L3]*3)RGJR=_U%?/U5@]7A_NL-@4T M(?6J) XS9]"W0./,-8%2+)]2?$44T3(A.YF0H:.>ARG$RII"/+AQ] 8R):.\ M5U&*+2G%HM>:'JJ6U6T=K/9M6]:K7X.^+>IN^] '%NO_ M[KM^F,2#4_(0N%-DB7MSP@LPUT=2M9Q438U6B.W1&5:)1OO#?:UG'MOJ?_HV M=5M4PZAQN B'*;?VJ:H_E@\^=$[3#)QB7W)M*X\%FVT$*0TC5%)6:;9OA(1$.1/)Z MC;"M'XOV1$88Z":J/O<.>%1SZ%;&I8R<&1MIW)Q435&IV8X:>A.A>,!U=)*+ MPJOWE+.0N\/+8SJ4< %:(F$B=:[P'$C'TRAEF3,F!-)=,L;#^)$.RW"." <= MSP>[>(#9C1]B%2#:)8V;DZHI*C7;5(,L(IQ9/(WO1CX# 'O,1W>_GTM$/$" MZ4#&"Z3#(&]D0$"4?$;,&U'.QA>D:DM2M9Q435&IV8W D(>( #U$_N0]D;$W M[R&%#Z1J.:F:HE*S/3.@(OH=2$5$BBI(U9:D:CFIFJ)2L]>>#:Y@.*Z8.JMB MP%0\TK>)T+E(\7!SC2-5RTG5%)6:;9QA& QG&/B\ZJ_[6H](PL='Y+CZ[$T# M_I2?)7'(HS!T=PV0@@M2-46E9CMZM@\$!QS^O&K<19]UI"R46>I>E6Q\7 EH MB21.A.-@#J33\ZHP<>=50+I++B.1P>-*9H@"F[O%8BY4P /,;OR3H0)IW)Q4 M35&IV:8:J,!PJ #.J\:-G,@5V 2N &B!7 %(!W(%(!W&%9CA"BS^C/,J1LH8 M2-66I&HYJ9JB4K,;@>$0[ OOG1C;18.7;W:[\2%$Q%@2>IL.*:/FI&J*2LUN M$0:W,'SCQ1?93K<##,7&:CG2DI M/#FJ.7-USJ2[+9$T;$ZJIJC4[%WZ@ MH%'&W4V&4#+.0V??FZ(JFUWUAFSP\=T9H\B8 \0ACMT]@WBDV;5,RBXF?0-% M%=/VPC )SNA1,"<]D$*JMB15RTG5%)6:[?79R16W>-0Y "NZBC 5>I-FV4:KEI&IJK#YLTPRR MX:-G7B:MLG!_BX8>N;'4NZ^18A92M9Q435&IV<89S,)QS/+,519L#D\R^@"&"7A A=2H^7?':G,"5F3AI34:G9WAJV(7"V M\90%%.%/X;GT3L3B@6=;,R5F3AI34:G9UIP]# 0'&B0+*'B,V7TI0 &2B,7> M/(LT;$ZJIJC4;%L-\A X\GCR HH & B+N#=I.*:S'T[C^@/RE%1D[@4%I,OT MO,P9D.)?^:E5:F"$P&'$I(41 4 "&;M$#X\TN]82%56Y*JY:1JBDK-]MJ@$(&CD&^@$#S;7#5*UG%1-4:G9MAEF$C_GT,GY=FT.NDE*/&*(>.C0"7.V;"]) MX^:D:HI*S7;40(]X[J&3<1?]PR0RY1%W;VM .N8]& \X="+C*'5GO$ Z%D?" M[0D4D.Y2=U?98QV6 0CQ,P^=C)+V&#@F B^'3$ZYQ L]NV&38@4J-=LP@Q5B M'"L\;3GD*#JZ' *D\Y9#8I\B@,LA0#IP.01(ARV'Q&0P6-M8*N$#+-8>$1BG/N$$:("?0 $ +I % .I & M .DP&B -#9#\,\Z8).GC*$C5EJ1J.:F:HE*S&X$A#!(G#%]\ QE>OMGMQL<+ MD=0WB\R]2$GW/)"J*2HUNT48D")'CWE\@1=:^'L7,O^%%J0894K(G#2DHE*S MG3U[4PE.1YZR?TP"#^"4[IZ2!1YXMC-38N:D,165FFV-@2 2/]!!LG\,CS&[ M*P4.9;!D&,FX?2DI[R!54U1JMJV&=TB<=SQY_YCT]QAJ^NB$'DT7> 7RJLME5;YB%'-]/,8J")70XPWU8U@*/-+N62 M?[:3I"B%5$V-U8?MD$$D"8Y(:'>:)3Z>B-S;%%Z@V9:1/OV"5$WAM6$;9D!- M@F_;F+IJD@ O1$TS=]4$#S;;#%*T0JJFJ-1LVPQ:27"T\LQ5DP3840&OFDQ. MN<1+/-LM4NQ!I6:[9;!'@F./)ZR:)/[A#7#5!$CG46,@#;AJ FE!JR9 .G#5 MY.KLQ>YWQ6WY8]'>#O>#;?E>9PQ?##IM=;LY_= W=X=WO;]K^K[9'3YNRF)= MMD,"_??W3=/_]L/P^OC[IOUPB''S?U!+ P04 " "1>@17VZ^:8#4' : M'P & 'AL+W=O7C^7_D M\7Y'Z?R6BZ]R3ZD"=U59RXO97JGF;+&0^9Y61+[E#:WU-SLN*J+T1W&]D(V@ MI&@'5>4"15&ZJ BK9^OS]MZE6)_S@RI932\%D(>J(N+^/2WY[<4,SAYN?&;7 M>V5N+-;G#;FF5U1]:2Z%_K08O!2LHK5DO :"[BYF[^#9!F=F0&OQ-Z.W\N@: MF%"VG'\U'SX5%[/(**(ES95Q0?2?&[JA96D\:1W?>J>SX3?-P./K!^\?V^!U M,%LBZ8:7_[!"[2]FV0P4=$<.I?K,;W^A?4")\9?S4K;_@]O>-IJ!_" 5K_K! M6D'%ZNXON>LGXFB ]N,>@/H!:#H@]@S _0#IQ:;W@M>ZK< 1V\ BA!VZ-D\?3@*R,'# MW.+6'_;X^[.A@BA67W?)RA2CSEGJO,1N+V8?G\F&Y/1BIC>JI.*&SM8_? ?3 MZ$=7B"_D["3@> @X#GE?_Z'+#JMS7E%7F-W8M!UKJLO-&J%E>KZX.99O&RW3 M! U&)[*205827(=WQ;]Z(W5YK;@N/CFO*9Y_G9LR7@"]C)IMLM--[\RU,PV7EI E M7D83M;91%J/,+38;Q&:/3.R."J&5*G+G+@29]:OS)(V2B3:G58+=XE:#N%50 MW*=:49U+"NC)V[&:U#D%)=43"_BV9-?MK#HUKRPU29I-%-LVD5LMC$9L14&] MOW$I6ZU<:%+7&I5Z:NO\'BA!:EEZD[5W>ZP%KZ)I%7)8^10?@1:&9[AJ"!-= M%1*T;(&KJTY>NFT"ERM/!85H5(^"ZG_6 M':&9[X+)ADM2&KVZ3NKJJ.[;*D&_'5ACHG/J1G;.'N^G7KIMY9OU$<$P"+SU MGVI/A5,2M@L2G&XUAQ'V3>4(21@'<;39D_J:2M,\'=%%2JH3P\QDRMW>RI MVW D(@PC\5-]HQ.;"T__!FVVS9,$3L4YK. R\]1M."(0AAEX*:@N+,4#\KH< MXMZTM\D6P]44U@ZK.5KYYG$$( P3\%/?:_GX!VVTX03%4W$. $*4^$K%2$ 8 M1N"0B@VY]^:AC;+Y*K66VF&5(.@6B$;FH3#SM$!QH"<%(KS8R,;8'*5H-9'K M,,O@42T\E3L"#X6!]\=3^VFG=!MC&&;I9 MG7LNLPC[%G"$+ H?12\%SRDM)-@)7@'=L+Q05+$E-T73ZNDP\L4SB0J>HRHQ\IS4I:Z.REHU;2'H#9?*J)ZZ<^+R>8JC"-DQ>4ZHZY23UPC M?E$8O\Z"_.I@#L^L?JW_/;'FV?Q=9G!*:8?5'*<)]$4Q8AJM@J7Y8WLZ?8+, M(.V?79I?R-OI@\01_3B,_M.4I'=4Y*PO!M(\ ]%<]9[0L8UWN,JFO;/#"F'H MZ5GPV 3@T+,SAW32#CSUBP#;DYS!&T\.:TRSU]3%X M[ 5P^.C[F3;'0>@6MM('X7;:G6H=9UT<1>ET@[CL$H17'KE'#YT?H;A@>GLT MQ!0MWZPBS-?@XY'2.,PI'_:[6BNS&33N[P]Y0/=[%*0]R=^G39M7(8@[85I M0FXT&6MWMX$=;,ZFL' 9K5)/F<4COG$8W_VS?-%FRZN"=E>&$L^,P6;T:H6M MO>LZ'$.4>D['>&0Y#K-\X]/Z!FSI-:MKDU6F,:2"\<(9@ WC)$V2Z<,KAUF: MK)!O.X_0QF%H!P*@IG$-2L^LMREI&ENG?8=9$J=6"BV.WC)65%RW+U\E: _- MW3NZX>[P@O==^UIS3M&]B.T^ M*-ZT[S*W7"E>M9=[2@HJC('^?L>Y>OA@?F!X';[^'U!+ P04 " "1>@17 MK'A*OC$% !C# & 'AL+W=OMP'#/E#2R6)+D2I)Q?%^_>Y.LJRT M:=;N2RQ1Y,/GN7ONR!QOG/\8*L0(5[6QX22I8FR>3B8AK[!6(74-6OI2.E^K M2*]^/0F-1U7(HMI,9M/IHTFMM$T6QS)V[A?'KHU&6SSW$-JZ5GY[BL9M3I+# M9#=PH==5Y(')XKA1:UQA?-^<>WJ;#"B%KM$&[2QX+$^2Y>'3TR.>+Q-^U[@) MHV=@)9ES'_GE=7&23)D0&LPC(RCZN<0S-(:!B,:G'C,9MN2%X^<=^DO13EHR M%?#,F3]T$:N3Y$D"!9:J-?'";7[$7L]#QLN="?(7-OW<:0)Y&Z*K^\7$H-:V M^U57?1R^9<&L7S 3WMU&PO*YBFIQ[-T&/,\F-'X0J;*:R&G+25E%3U\UK8N+ M4Q5T %?"N<> -BJ.U?$D$C1/F.0]S&D',_L*S"-XXVRL KRP!1;7UT^(TL!K MMN-U.KL5\*?6IC"?'L!L.IO?@C3I.&] M_"4FB[MW#A]-G]TB[VB0=W0;^K>G\7_ P&\50FM56^B(!6@;T>MZ%$,:O#%< M@N.B@U]4%@[@MP ;/("6UGAPK;\/E;I$R! M4+0: MY65CJN'<^8)V0BJ36,E[:Z.V:YJFB4!C,, :+7IES):_8].1EMW>6Y$@'(7? MLB8MN8)[[]-5"J^6R_/[0)UN$%D.NK3M.N#.,+(_8VI+GFBEQP0@L=PLX'#Z MX)U,6_JH.V\Y7@QN)Q:=6$Y61+]ADM?I(;$+4 MM3B9(Z\"':Q-;T/FK,J2;<'[$A/GF;>JN5XD<30?(U6AT2K3AA*+@:-YB;;E M)Y9J S\Q> =BI-;[1+7,2G7XW 1NU<@812MIVO.1LI5\I+#,8TM+=D&GLC8% ML#BOI9(+36H\E-[5O2\&]2F7')2M9RN-ZY3E\"**EU12W\#^NW$QVU\=!Y8A MD=93;S%ML6\DGY?,TEJF?R&Z@!*^ZP(_#U81CR ?C_"<3%=GQ&Q^* ?<[(#- M4VJ#H[ZR8F-+6H0/E4RE[%JVKG602]&]U8NS^[(;9K[E2I]U@'/H+'BM>5S3 M?:J,M-&5W/R4..(+6K"A#P6EX)(MWX?^.^*8M1$*1P*XTOH02IL:6ZAW> '9 M=N3[OF6U-)EL>KT/[7W%*NG >D?:R2EDDR\3\ Y")6;*V':JZ,OM0VN[:^$0 M[\]3^CTV^8H]?KC=&)+O&[.G0F==I!11T6;N$M.;;@F3T<6/3K*U7&^E>FSL M[H##Z'"#7G87Q_WT[OK]1ODU'65@L*2ET_3QPP1\=Z7M7J)KY!J9N4B74GFL M*)[H>0)]+QV%HG_A#8;_*Q;_ E!+ P04 " "1>@17A+1RWFP" #J!0 M& 'AL+W=O'&[]D0.EE8>QNXK[[7O8 YQG!P#Y%I!'W5VAJ/*# M(%&.G=V "]G,%HS8:D2S.&7"I=R0XU/%."JOL4)#,*TJNS:DS KFSAJV*^17 M3WZ<$E<)N6FU99QUC/D!QC.XLH9J#Q^-1/D M"X_N#I/R]:N3L^S]$;7#7NWP&/M?7="_,7ZM$2YLTPKS %)),)9X_ )&/X"0 MMB4(1^()WS[# ]6"H!82!'^IA$X)#8KY*@*>0WJB?^/9,IXO07*>A$MEA*E" M^@UQ(+(-@/4X!,$_8X&7D0PE_U ]9.-]RZ//M&19S1W^'SDO76FZ-W\-NE7< M,AZBPFX4^VB_R*;=_#ZE=UOP2KB5,AXT+AF:#=Z=)N"ZS=(Y9-LXS0M+O!NB M6?,R1A<2^'QI+>V<4*!?[^4C4$L#!!0 ( )%Z!%=SZUI'QP0 + , 8 M >&PO=V]R:W-H965T&ULO5=M;]LV$/XK![1CU*(2NLK=0U&%R=#L[&Q^U2*@8C&WQWFH _)COOW._2//G?*92DLOM?J#UFX\G20 M#:# E6B5^ZHW/V&7SY3Q(9!G^4$XL3@Q>@.&K0F-;WRJWIO(R9J+ M+:TSU"-_/99O@$L?A^-]/I@#:&17.#@\6;5^-9_.X9LFE/-GT._0%WQ@%D+,K$39^*V!Q*&[0T,Z&NJV6 MY*97[, A/( %&A+6B;J@6@SA@U0>ZG\+&3$^#3*&66X]S)V7* K)8T.HG:DM(?7B#36ORTK-?&5UYN\;H'+&P886#B#I'!O-O'R,7H@SA\NF7 M^RHZG5^S;JHML'O2#0ME?3*:XIBP?A@*)#;"$*&U$357K:61<-^ "TI#7O@A MW2C1(76A.:YT[.DT20=W20X_W:Q$,&@K:6C(-1/ M>.L3V5,P%RIO52!#:?=*]-I]4\V6%E50=R].KNO0/G:O5SA%NY)8#.&,O Y[ M[)V &WPQ)7J_:WG8M?S##O=">M1)%D=9FOF%)(FC^7P&Q-;CN]*0=E48V<@C M&VC@8C]P@U.<)!!1U]D&_8=4;2/_(HWGT7A\U!EE%"7ND:V\?0GN?=@A_,JD MQ%*Q;G1H (M4+L)T9=##3X!>CZ4?5(Q5?'^"'!,X9[O_@8(KHGEOX4#R5-&M M)50;<4FP<=T(XD!W TE4FCJ OF$O$AW=U\>\'@-!Y-L\I:N232=SOTUH5*\ MAGDTFR;=T#U\.,X>UO88DEF4C.,HG6>0S*,IR3J?'/%J.DZC=#;WJ^-I-,TF M<+%:D;[W.MIBWAIJ4K3'<'%_!SWZ31*D\ [2:.8NNJAA'NE#&J1IO$P'K.H=#W:OR19S^UYJS%\ M?.%FB(#$904>E]*W/GY/3;\E:^UV@[0 &3YC_V9O%RWR3/3?#%*)17KQEAX^ M=BX9[9TB*S1K?U;F"4P='@Z4_6I_'#\+I] [\W"6_RS,6E+*"E?D&@_G=/HU MX7P<'IQN_)ETJ1V=&UL MI5?;;MLX$/V5@1L4":#8$G6QG"8&DC2]+-!NT;3;A\4^,-+8XE8279**D_WZ MG:%L)XZ=8(%]LF-FGHDPC ;-5*U@^FIEWTQTU/=N5JU^,6 [9I&FOL+ MK/7R;! -UH*O:EXY%HRFIPLYQVMTWQ=?#,U&&R^E:K"U2K=@<'8V.(].+A+6 M]PI_*%S:1V/@3&ZT_LF3C^79(&1 6&/AV(.DSRU>8EVS(X+Q:^5SL G)AH_' M:^_O?.Z4RXVT>*GK'ZITU=D@'T"),]G5[JM>?L!5/BG[*W1M_2\L>]TT'D#1 M6:>;E3$A:%3;?^7=J@Z/#/+P&0.Q,A >=Q_(HWPKG9R>&KT$P]KDC0<^56]- MX%3+FW+M#*TJLG/3CZV3[5S=U CGUJ*S ;S7NERJN@;9EO"[J]"2%>=/A;UPXA#@,0H8A?\!=O M\HZ]O_@9?UM)[A0!WBI;U-IV!N'/\QOK#'7/7_O*T$=)]D?A$W5B%[+ LP$= M&8OF%@?3UZ^B+'SS0@[))H?D)>_3W8W:S60?YO_O%;Z1&&')/ZV&HJ)EM*!: M('THI#'WJIV#;'37.M SF*^=EIWA%59SE4'T4:RZ@Z;O%^1^ =IMW.SV\'%\ MVCN ^NI=NV\Z[?8H'-#>G&D9>*'K2T,-,U,9(]>6*T:_#=XJRKX8<_ MX 3N_!8-\14<^G1U9RF./8+W1EL+YT71-5TM6?$S<>I^Z6Y"2^4JF*E6.82: M>(IP?9+F)SI?QU[G "9Q2+^'>2J.Z#O.'XG"C$612" *AR&$PQP^Z_:XT,T" MR:><4[&)3!WDL8##-$F/0.1CR$4.ATD^/H(XB4"0Y3&D]!N1_;6>N:6D:CDL MJE;7>GX/41P(,8'#<1!F^1%D091%&V$6Q'G,PCS)>AC),'UPLZ "\#4"(@M$ M,B8401J%A",,QO&8I6&:$)H@C@F/B()Q-*:,R,UDF,$W(TML94-]%J>4@L@I MXRRC24@30181;5_L<\_@TE,G;:-!BDK\;RNUL*02B"B&PR@*HGQ")D'(%1-! M-"$\41B$$\I*T&?B71U3:':8P#?M9$T=_G3C#B"-@SR,>1-$&B1IR/L@\B!. MXWXQS7._*"BOG!>ILP2!WFT"21U9^"9QVA\16?SJE*'YA^Z&SX933E'^!:6C M+.O1T=J%1,+7K_(X2]Y$$96BHO+@=Q'Y)C*RM?T1H)/*GNBLLU.4 M104+-$J7T-DU.Q2=,=RN>->S"QB/B5B4[EM6(LB2#K&A8]FNM(O[311_XY=_ M4Q?XIB>F<*#8O-"&&89RD\"'0[?84U1/=9)O*-HZ?97%FGFKXS MYL13\WZX+T5^@%'3M%LMLKEO;F7=/?3IRIY+L:B 2*<[],YAYA*[G_JVXD6Y>VN?] _-! MO7^FTZTT5ZV%&F=D&@['Z0!,__3M)TXO_'/S1CMB8#^LZ-\"&E:@]9G6;CWA M )O_']-_ 5!+ P04 " "1>@17DPGJ8\ % !##@ &0 'AL+W=O^ZY5Y%G*V/O78GHX;%2VIT/ M2N_KD]'(Y256P@U-C9K>+(RMA*='NQRYVJ(H@E*E1NEX/!M50NK!Q5G8^V0O MSDSCE=3XR8)KJDK8]14JLSH?3 :;C<]R67K>&%V7DY.K Y8/ M\DKEQO#>Q)9LP]/_Q6G _&3 @5YIX1!/T\X#4J MQ4!$XWN+.>A,LF)_O4&_";Z3+YEP>&W4W[+PY?E@/H "%Z)1_K-9_8JM/X>, MEQOEPG]81=GI; !YX[RI6F5B4$D=?\5C&X>>PGS\BD+:*J2!=S046/XLO+@X MLV8%EJ4)C1?!U:!-Y*3FI-QY2V\EZ?F+&R$M?!.J0;A%X1J+#H0NX&?I4N%\N\NGR/DP6Y(;IX35XL^1,#'O!1ZB5!; MF2-M"4]-W*@",J2.SY$:M@":/%22I.-H1M&Z%K( ;X RI=T"Z24H*3*II%_# M'DGBH_01>R%HH!*N,\B.)!:$]SQS2.&LK>$SA;8NG.U!:7< C9 MV *M6D?3(LZ5#/T*R><6HQ;62S;% 331>K4-*A3"XQ#:Z(!0S@ Z+S(EJ8FI M]_IA*B5:8?-R'4-C\7LCN4YS10R[)(2I5+ MDW%""0M##S>ZMR%UW1"C5D G\ "B@=Q8:S)C!5O(UGVAMI2H5$1DV=!UKSM*HJ/IFKHVMJ5#"#[RU69#*#C*W<#5M5632QV*D:J;V[+L M5\,/^%'-T4"IJ%O6/[F-$*/WI+:6V@8(A9=U;54P:A''.#V0;-\\51N/DL:& M>J=6D9S(7#4%I4"X,E@+"P8GI3#Y>#,Z'2+E&. EY1#5HU,7]7-#1Q7G0\=D M0M_3X*N-DRW:"Q.M.!<769*46-*KC,;U)MQ5XQMJB$6CBZ=V"9ES'Z;JSG [ M3NX#S94XQQO'OF^:(J;]>>QW>MN1)%A74FU\##47$F3TLGU:HL[7"='58?"I MA&N[#I4=1&-3%)CY)X&\V;+>#-ZMWC-IH*QM ]6Y7VQG7]NJFRD<.W:O]7F_ M;\UUYKX.[X9;VCUS27RU- ]H=1C;T'<+?]C *D%?0^W MTU8$#^B8A=TQ*QX#Z2-<9<1H.@F[Z;;I?MQG)\\ 7X+MA<\S?8')EMOO*G0S MZS?3Z[7]F\Z-R^#&"5QSE[V'PUER-)O3XF/[-YTG\UG:;=R^TF9PG!REAR3P M$29'R>QX%I:W.UOC,#DX/&+GYM.4A(Z3^7P"!^-D,F:M+\83YGLXFB3'AV-F M$ 4C@]DL.9@>TZ*5Y]U=I\11[V!?H5V&ZPMW)9W*XAF_V^UN2)?Q8K 5C]&6)#][4X9J0&4^7CK LZ9:'E@7H_<)0);8/;*"[ M-U[\#U!+ P04 " "1>@17:?]=RP(% "K# &0 'AL+W=O3(4K)&A": M24$45%>CZ^CB)K7VSN ;@[7>&Q.+9"'E=SOY4%Z-0EL0<"B,C4#Q8P6WP+D- MA&7\Z&..AI36<7^\C?[>84]AS.PR,.<>\0N[I](E?E'35T?JGD MFBAKC='LP$%UWE@<$_90[HW"789^9OZ)JN]@Z((#N8>B4\PPT)<3@Z&MP:3H MP]SX,/&1,%/R20I3:_).E% ^]I]@24-=\;:NF_C9@']T8DR2,"!Q&"?/Q$L& MG(F+EQR)]T&L0!OL)J,#<@<+0Z@HR;L?'3.;/>3DK^N%-@I[Y>]#)/@$< M]OY#7.XR(.QR=<:R*UL M6BHVA#G^-'X274MES@RHQG'(I5CVLR6(8A.0IA.L8"WE 2FD:J6B!IRI-#4H MO#/(OA[2C%V>W9Q0!:1 EZ54[!\H"<6E%67&,G2F*??QK*4"S%%:,T,J MRA194=Z!#UI)CJ+#Q))X;%YY,*C%X07-:\N2JM*9[1"_>74>1_E;?1QNLR-M MOWI-9$6P?6%H7^=W!P4T"X2?1&XUOGAB=(+4FEIV&JWU*9:A#7D0*+37_@HM<9\[RWF;Q8S>1C?CW?D[Q?UFD1Q$,=XC#(SW/K-4WR4SN-,,@M M*,,J9@_6,51"*S4S$X,2OYV@;SJSCI@M3J?DJS2(XS#/KTF2!TF4;2%%01A/ M+:AD&L3GL__R_7\3G 59GFZK2:/\U"]&R-EQ@F?H=&X1QV%VBK,D3U["6;=\BRT5 59G+V0X5GB&,;R9DG\"X:S*$BFTQW#23ZSJ-)9,,,#?C_<-HTW M3;G+4QQ%:N]JJYB]?WR#N_8*H325[CL5I4&0'YTT./+%6-L"W4X^P@HXB4[' M!_,=/9'@US2B.AUFS-U7YVZP&72G-B\"TFDK(26V#W:= X-!U6%8MG[-&A0U MM1^[1QLCVEM.M?;%68W"ZH[J#8Z518@QA11GVRG3/;==*X5CJW?;:1L*H%L@ MI9-H1X(U=%,_UBBC3%!1,,NOP0WW)>H%]K&"+2A'.^=X0+"?-L1B@]TBW'=M MYWJP+X4YR5T+PGS13T7\B%A5X2E42C:'LKC\4- .T=D<3.L. MU !_KTH;K*8K;Z;L$X\8B:<(+6[(!6=+=SX:GVU66TR_Y3H.'\Z4^Z^X)]HS M\':'JH);$J<;P%[ (^2@G9[@)4LS9T K[+&=C:F5[)8U'LO*KV@238,D37^E MEUX8#SU%)GL/R ;4TCV3L;%D)XQ_2PZKPTO\VC] =^;^&8]/B:454@X5NH;C M/!MYWK83(UOW'%U(@X];-ZSQUP0H:X#[E<3[TD]L@N'WR?Q?4$L#!!0 ( M )%Z!%>LHJK#3P, <' 9 >&PO=V]R:W-H965TN 8<6VN_MPN ^*3-3*N&52>]]$OB9T[ M6$/(9$WT/6SNRV4R#H)08>$#@^"_+=Z@4H&(9?S8<29#R \7._9[V+NG,M: M.+PA];ZWC?/$BA:YTGOP*Q 2]/_ MB\=='0X \_%O -D.D$7=?:"H\E9XL5I8ZL &;V8+BYAJ1+,X:<*E?/663R7C M_.K>;-%XLD^+U#-=,*;%#GK=0[/?0,_A$QE?.WAO2BS_BT]9QJ EVVNYSHX2 M?FS-&>3C$63C+#_"EP^YY9$O_[_34Y'[\[(G8S]^%4>A+PM[3O]Y51"WD_,. M&BNY":5Z JK BH[?E$?3R/T#+XQVPWI1I@G:%@IE;(0BO5;W(96!V=V8G0E&TL51;M+$*0E-K>%8>BG[S:IY-+MX=:MQ=!K-P14.U*@J! M0^V$V]O*6!YI0KKL>@DGTO !M8XENU/@IL'8-+=8H%[S]>23$7PC+]1!J-

QB#B]U07HPG#3:31S!CI/G$O5S:K .4_ZJ'V[/[OTGXI.P&VD<**P8 M.CZ[F"5@^[';;SPU<=2MR?/@C,N:OU1H@P.?5T1^OPD!AF_?ZA=02P,$% M @ D7H$5S&ULU5EK;]PV%OTKQ#3IVL!8UFC>J6W 3I/=%DUKV.GVPV(_<"3.##>2J)*4 M)]Y?O^>2E*QYQ=DD6&"18"Q1Y.5]G'OOH72Q4?J#60MAV<K\ MW*1K47 3J4J4>+)4NN 6MWIU;BHM>.86%?EY$L>3\X++LG=UX<9N]=6%JFTN M2W&KF:F+@NO'&Y&KS65OT&L&[N1J;6G@_.JBXBMQ+^SOU:W&W7DK)9.%*(U4 M)=-B>=F['KRZ&=%\-^'O4FQ,YYJ1)0NE/M#-3]EE+R:%1"Y22Q(X_CR(UR+/ M21#4^#/([+5;TL+N=2/]K;,=MBRX$:]5_H?,[/JR-^NQ3"QYG=L[M?F;"/:, M25ZJWW\AI^2.W M_.I"JPW3-!O2Z,*9ZE9#.5E24.ZMQE.)=?;JWJKTP]D-[,K8:U4@UH:3NR[. M+:33G/,T2+KQDI(CDB;LG2KMVK W92:R[?7GT*I5+6E4NTD^*?#GNHS8,.ZS M)$Z&GY W;$T=.GG#8Z:NN1;!U%O^"&19=JTU+U?"7?_C>F&L!DS^>Q: MN&%>/G[_W2P93'\P\/X@8;^HP(7"0J:6+)-0V2IMG/;J07B# M;[6"K;_P!12"\R*_]IA#&RNZ[]BV&&H+U6.6*(:99Q M=E^1^W+V#H5!EBO2[[X["6Z]KE>H+RR9MP;^JAHW;(06/C[8;JE5<< AL&I? MQ+5?C_)O++Q,6][RC+VC))H\JTL<12(_ZLX5T$37RL$!_@%8:AERV%)-.4!@X0@#SW-_34 M"&OI5I8.(S[*SL-F6YO.5D[SA4A5@:$'+G.^R-T^S82N$T)LHT[2M8.[26/^ M#Y*FC?H!(V$"S:.6)8NZQ0<2'3HHC49MX(>.0LC]AY#:;=$X::0 MU@H!88^,4D%F ,0:>*?E#[#'(5VS*E1W"",O.BV;$.T"BEL+ZM),-Y0V2PFC M*Z$=Y8&MK!#R'_A(U*C#+2:.+LY8"5<%[#&J?.:P"\$*G$A"M-&E MQG5!X[0@<+1I?BAZ*U$*S7/D#_F\5)8\F M#L,1CFKSD4N.I_@ &^<#SVFW% M?<+0I:JU,PXV!@7*K7#3=0CYFZ+*U2-^" MIM\%XC0:;6\QZPPT6P YG[-!L)O]%@H-P7"I* ')-];%V9\!Y;^II7:J MDC^D4:?+:N?)Y[=]M;/;'^X<)K*S=J3+10"F'T7J03LS27\6C]AP& TGB)FOIQD[P[^W+84X&8[[TS@Y91/$*:;0HM!C M&#DQ&\U.V7@<3:;'E-GVX' ^[R>C"109SZ/YO-G2>6QO\B 9]^-QC,GS.)H- MG)N[TILZ_U3"0RO>:\$16?.4C?VGI<$1@=B(CCJ:4R !_8?0,YKVVR2WIZVR MNS]O4VD)0* MN-W!W<1*EJ73N9N3'&.0;HAT=ON$ZQS]W3[>J-])=M>$26S3 MA(%S-%]U]_"%I:THC5<4QD]H["2A4)G*G+6^X2*/QY^O7Y#"R"A.[!_J= MB2YQ[J3Y<+:DNB/A!R*4A O,BN;Q2R3)*!J/7[)!-!^]="7/D4',=VN593F,JX4UA'\63 M_@"E-X#EOX'G;.2(%[MT9Z1PJV_(=G\L MH1=D335K3O/H2EROP-^>>#>DU$6@!L M Q<%3SFA>E<#B/9GVZ.5]OB2=9I4>,OR@I>& \%5&=@@!+.PPA93G:>VEU,:AR35/&,5UKK9[ M].'.WRF;U5X6?4G=[.;B4^']N/YE)3 @6?VY7SI:"2VV9*#T#>A2L\S MI%$T=,QH.CG.C- K\#,]2(G&,Q"GEVP\1 /[>B8T_A;]9@^UWZSA#)N&\^S[ MH7UX".->N1V$!Y2AVE]00':R.]1G]_;D?P:)2>PX\PP4-XX&4]R 'N\#Q"N M\R9Q9_=SD#1/(Y .4.MI- /]QFT\)@H]C$:C9Q!SZ(O5>><38R'06^E#*G6C MNK3^:V,[VGZKO?:?*)^F^P^][]":)94,L<32.)J.>_YM=7-C5>4^6"Z4M:IP MEVO!,Z%I IXOE;+-#6W0?L&^^@]02P,$% @ D7H$5Y^I0@K! P ^ D M !D !X;"]W;W)K&ULK59K;]LV%/TK%UHQQ(!B M60\[=F8;L-,5:[%V0;+'AV$?:.E:XDJ1+DG%:7]]+RG9<0#'&9(A#Y'4/>>> M^R#%Z5;ISZ9"M'!?"VEF067MYC**3%YAS4Q?;5#2F[72-;,TU65D-AI9X4&U MB)+!8!35C,M@/O5KUWH^58T57.*U!M/4-=-?ERC4=A;$P6[AAI>5=0O1?+IA M)=ZB_6-SK6D6[5D*7J,T7$G0N)X%B_ARF3E[;_ GQZTY&(.+9*749S=Y7\R" M@1.$ G/K&!@][O *A7!$).-+QQGL73K@X7C'_L['3K&LF,$K)?[BA:UFP3B M M>L$?9&;7_!+IZAX\N5,/X_;%O;;!1 WABKZ@Y,"FHNVR>[[_)P !@/G@ D M'2#QNEM'7N5;9ME\JM46M+,F-C?PH7HTB>/2%>76:GK+"6?GBSQOZD8PBP7\ M9BO4<*5J*F_E\GZ'\%[FJD8X^U49TYM&EEPZ8)1W],N6/GF"?@0?E;25@9]E M@<5C?$12]WJ3G=YEH(OW<>?>K[T";X;+'?1;U SURD& M_EZLC-74,/\;G6)_ M?;G^1_K.(G]DP3L+X2VX:5]S0X1J#72(T#:1U-A:H\R_ F59&L':#5K\2_U. M&]X:8+( 24=2(^FD$?P;P4LZ84Q+C$1- "[O< ?@$@P2+;<<31_>TDB60 +I M3R-Z0L/OH6[;$5T[ C43[IL)MDBG3*Y*Z=TQ>)/V)[3EA'#B3BIWFF"M5>T= MFH:ZATG+F?#1"_1&].O>YF3<:'394(V&#VS#)*P:0Y4P)/QW,EDK06>EU\]6 M L'WD0O2XRLF2_0!LX-JJ6=KL6*"R9R0Q0MRXTQHD%R20 %GUZ\CUZ3L7A"Q4HF/4B'*9R-L^&K4W7>_;PH14?D'+0@M?SCYDLF M89+$;<>-PCB;](ZO'CO2HX.O<8VZ]'<.=Q!2\.V'>;^ZO]8LVJ_Y@WE[)_K( M=.FJ)7!-T$'_8AB ;N\9[<2JC?^VKY2EFX(?5G0U0^T,Z/U:*;N;. ?[R][\ M.U!+ P04 " "1>@17K;3[[HP$ "G# &0 'AL+W=O@IE6TY=HS4-I#'+K8%"@1-NWLH>J#% MD<66(A62BN/]]3LD945.G;B77O9B4]3,-]\\.!S--]K\L"6B@X=**KM(2N?J M\\' YB56S*:Z1D5O"FTJYNC1K >V-LAX4*KD(!L.IX.*"94LYV'OQBSGNG%2 M*+PQ8)NJ8F9[B5)O%LDHV6U\$NO2^8W!>KE@\#? C>VMP;OR4KK'_[A/5\D0T\()>;.(S#ZN\0-];IJE4F!I50\9\]M''H*$=#@>4UPD>M M7&GA#\61[^L/B$E')]O1N!/S0J!3&PQ/(AMGX!;QQY]XXX(V/N@?7PN92 MV\8@?+U866>H(+X=;5:#I\]P+?TX[O MZ4OH1]/QHO9A;GU(^%PB7.FJ9FH+PM)17'VGXP%.@XABCB(E%%14U**6"-\; M(RP7X0A98(J#(XC&(N@"T#I!!X-P"/A-;";I<)_-)!T]Q\:GZR 0Q=OW(@ZT M]@QVF?"F5<,D8%%$F*!HZ%4(OI?=(C/ ZEJ*F"PJE;N2_I;0H%A$*1M1Q]G%N@W(/85'-X1!X=#&GGA6 MLN%"K8'F/=+TJ_X]X&$CNUW4#MP,Y!+EF MG@U>;4N3E7H.\H]8D"H%M4';; M)>/0*-\]UTK\BQ%IA0H+#^6T(RWB\WK<;^36^_9S5R:A[(G0->98K=# >'32 M5DB_S?H>SJBX"^@QV.A&DV_/&\CR:\D'(*=I:"AZ:_8I) MIG+*CI__G@2U<\;C$#1=$7!H0AGTAL<*S3J,R);L-,K%.;+;[:;PBSA\/HK' M$?XC,VM!Q2"Q(-5A>C9)P,2Q.#XX78=1=*4=#;9A6=*7!!HO0.\+K=WNP1OH MODV6_P%02P,$% @ D7H$5UH7]AVT!0 ?@T !D !X;"]W;W)K&ULU5==;]LV%/TKA#<4":#$$O7I- F0CPY+T2Q!TFX/ MPQYHB;:T2J)'4G'\[WFQZFQ=M?)6,],UC=";GQ2BSEO;2?5K<:=],1 MI:@:V9I*M4S+Q&?Q>R;7963.*9*[49[JY*DXF/A&2MH_JL*6)Y-LP@JY$%UM[]3Z M5SG$$Q->KFKC?MFZM^6S"2FL.#W6:LTT60.-%BY4YPUR54M)N;<:;ROXV=-[N83$EMW)E=*V:I?'4PM8 M>CG-!XCS'H*_ )&P:]7:TK!W;2&++_VGH#-RXEM.Y_Q5P/==>\A"WV/.$88^CPPA^-D?UY-C=6HR+^>B[<'BUZ'HVZY,BL1"Y/)F@#(_6#G)R^^2E( M_+>O<(U&KM%KZ#^6CU;-3QD/TK<&749OQ;R6S/0. MA@DM7=T7#$UDX52U5NI6U(,U877T>KYQK[_&O"@KN6#O'F7>40.RF\6BRJ7V MV+I4K#+.)W(/B\[@II6*O:@V?D\L"0K3%DZ$KJ"YV7#JB0#QB!*Y<%NE_*%C'4;BT* MM'9%)>DDRI4A)%L*NRLI*Y3;V&YC0:"5QGBK-R1-97=UV1(Z9%>4KWR P!:M M$6XB&K;2%29Q!7\%(I-&=8X,B5U4BX74DC(VEW9-:)!5-;)W'&)PV0,R:OC BL>M M2<_4$%7D'4,7R>DTH6T.^G>0%A^CWKE65"]NZ0*3QFZ!%&75E*CMFHIG:_0 MDR&3Z[*BW"&R7&>B#0GR2^0[Y;3LYP#P;SGSS3(=1&$XL6VK9NYOJ MD37]3)4T4QDFHAPGHC/!@J/.P UUME#@MC9'4)<@=L][21S3:A9Y?I*Z5>(% M<<#>=1JQ,QY[LRAB//3"6.(VX;#P.58\RKR 1[2* \]/_1^+_?LQ7_6IV_N RMGO,W@S9O!;)4#- MCT-:(.@DPR+B7AP2,3!,9J,,>X@_\_?9'F*)9KC&7I:$^_1\QK/][TZ@O2"$ MOC$<@LQ+@XR04B\,(H((O"3E^X-P5SO%]T0=A&(O\3-WY3XE;^:%L4L8D$&T M]ZY5NSRH,84*-VOI V"?J;]+F_NE._@:?5GR'^N/Q^'3\&UL MK99M;]HP$,>_BI55TR:MS7-H&40JY6&;U FUZ_;:30YB-;$SVX'VV\]V0@9K M0*CC#;&=^_W/ESM\'JP9?Q(9@$3/14[%T,JD+/NV+9(,"BPN6 E4O5DP7F"I MIGQIBY(#3@U4Y+;G.)%=8$*M>YCP>L$KFA,*<(U$5!>8O(\C9>FBYUF;A MCBPSJ1?L>%#B)=R#?"CG7,WL5B4E!5!!&$4<%D/KVNW/ FUO#'X26(NM,=*1 M/#+VI"=?TZ'EZ U!#HG4"E@]5G #>:Z%U#9^-YI6ZU*#V^.-^M3$KF)YQ )N M6/Z+I#(;6I<62F&!JUS>L?47:.()M5[" ?RP0-$!P+! V0'AL#%$#1,=ZZ#5 SR2K_KHF M-6,L<3S@;(VXME9J>F#R:VB5$4)U)=Y+KMX2Q'^>@ ;ZN8V\"]3> C[Z#@MXI>(-_YA#S'\SOVY>?'R\ M=Z\#GQSOO0N?_E_LLS=O?B<5?EN#OM'SWU*#7:56RP7=>3RDV/J78Y)1BTU.*S4XDME,M05LMP2'U^+MJSX0FK.@L MC9J-#*N[\"H^]R]5C:^V4_[:R(O"JUVC<8=1&/9VC2:OC4+G*MPUFG8H>;UH MUVCVVJ@7A5YK5'\J>^N@+X O30\7*&$5E?7_K5UMKPG7ICO^LSYR^Q.W8WVJ MKA7U+>"O?'TG44?.DE"!B)9:=K,(Y.J:9EAIJY&P+6! M>K]@3&XFVD%[V8K_ %!+ P04 " "1>@176(TFE40" "*!@ &0 'AL M+W=OGVO$)3X(^:Q* (U>*L95 MXI5:UPO?5UD)%58C40,W3W(A*ZS-5!:^JB5@XI(JYH=!,/,K3+F7QFYM(]-8 M-)I1#AN)5%-56+ZN@(E#XHV]X\*6%J6V"WX:U[B 1] _ZHTT,[^G$%H!5U1P M)"%/O.5XL9K;>!?PD\)!G8R1K60GQ+.=K$GB!58(&&3:$K"Y[>$.&+,@H_&[ M8WK]EC;Q='RD?W6UFUIV6,&=8+\HT67B?? 0@1PW3&_%X1MT]4PM+Q-,N2LZ MM+'11P]EC=*BZI*-045Y>\$$R+_YOC'K]<*CWBHH-TK6G-"]Y0TF)VKNH5.SD/M=[-0->3)$3[<- S0.=M/;\:DV6A)1Z_\/N=4=!N:8*1@0F_9BTT'.=\%OKY ; MAKXE-^OE9E>=VA-(\Q7A"V[#S+?MHE_M&^VR[2]_P]LN_8!E0;E"#'*3&HSFYG7*MO.U$RUJUVUV0IO>Y8:E M^5F M 'F>2Z$/D[L!OWO)_T#4$L#!!0 ( )%Z!%?>SC+=C@, "H( 9 M >&PO=V]R:W-H965T,.^F"_B/??Y!TVOHAM9>Q&L)QW?(LK M-+]V]XI6P8A2B@9;+60+"C<+[SJ:W23VO#OPF\"=/IJ#C60MY:-=?"P77F@) M88V%L0B\Q;JV0$3CKSVF-[JTAL?S _J/+G:*9K+>6#(H34+BCWXS0#.7@'/X)-L3:7AKBVQ M?&D?$-&1+3NPO6%G 7_NVPG$H0\L9/$9O'B,/G9X\2MX=URUHMUJN*>@AVC_ MN%YKHRA9_CP5[P"7G(:S!333'2]PX5&%:%1/Z"W?OHFR\/T9LLE(-CF'OEQ1 M099]C2 W\#UQ'VZX%@7PMH0/HN[-/P4? CCOXJ%",/:V86W+%30:#53YI@)# MGR@_NMYP5TY$8CTZ+ >'T-ILJETVB6_9I"V_&3Q4"O%%1L!*/+_9*] M)E3M SX7V)D!P#D:X8 WLF\-.;*I8'_8T>SS=SQ^@(LXCR]I9'Z:3MW(IAF- M4S]+V5Z\=[!S98SE._Z$BKK2X$T#]3-MB &)/@.6^2P*_62: YOZ*27D-+ZR MNTF4^$DV=;M1ZJ=Y#'>;#34@*Y<3B5H0J5KT2AB!>@9W35?+KZ0+57KQ"+*S MXFH7JR3)%43P]DW.(O8>,C_,$YO]5UD(N9_$V>&B_R_OS,^M8L0[2?V$#;Q9 MXH?1U0D)CZYR4(LT#2=A9$6E\>IX8/G([?RI"*BYNN0R+CV:(1O090.5.X[E M[@.):Q4X+:5-4\!_4W.'E#JM-#:FNK<^7,+AF,$''>%U':'LB:UT9C;AK4C. M^W^)8G*J$01'_;M!M76OE*9RHPP?6OFX.SZ$UT/__W9\>$4_<;45%'*-&S(- M)]/4 S6\3,/"R,Z]!FMIZ&UQTXH>8&MA! S0D !D !X;"]W;W)K&ULK59M;]LV$/XK!Z\8;$"Q)5)OSFP#SEO78>V")%T_#/M 2V=9B"2Z)!4G M^_4[4K;C-JZQ#_LBD4?><\\=[XZ<;*1ZU"M$ \]UU>AI;V7,^GPTTMD*:Z&' MJU0Y$ZIKD;,]^-1+S2?U[>*9J,]2E[6V.A2-J!P.>W-@_.+ MR.YW&_XL<:,/QF ]64CY:"N/(YC)2KLO;+J]">M! MUFHCZZTR,:C+ION+YVT<#A12_P<*;*O '._.D&-Y)8R8393<@+*["Z-HM20],WLO9;XIJPI$D\,?9H4*/C1&-$6YJ!#F6J/1T'\0--.# MR3[D5IF'40PXV$,#TKD MV(@:-?"(7& I>1S'-/%IPD@CH./CSO<8+ETKHV-42%:I'^M5N=:TQ6,!AWX0 M>$$Z)A7/MQ%C7C F/H'O^6/RBM%O[*#.R+0%#.%!&E%!^>;@WD'$O=3G]A!8 MY(61;\^!I1Z/>+<8I:E;9.17:AE3#2HRK*'4WQ3T=X7YRO68[W"']BUA MR;CZI[/STG%H)R%P+[%5X;.(AG'HI)1Q7A0R.TSLD'-XH&:$8FDHW2B%QI0[ M7;;@:Y2.A6:7)L<2871PQ5(:%^XAH2&3;6.ZVW8OW;]5YMT5_;J]>^A0'RG* M1D.%2U+UAPD=K>H>#]W$R+6[L!?24,VXX8K>6ZCL!EI?2FEV$VM@_X*;_0M0 M2P,$% @ D7H$5_9GEQKZ @ A08 !D !X;"]W;W)K&ULA57;;MLX$/V5@;8H6D"-;K9\J6T@3AKL+AH@2+/=AZ(/M#2R MB%"D2U)QNU_?(26K;NMX'VP.AS.'YY"/(E/4 MV#!SH78H::52NF&6IGH;F9U&5OJD1D1I'.=1P[@,5@OON].KA6JMX!+O-)BV M:9C^MD:A]LL@"0Z.>[ZMK7-$J\6.;?$#VG]V=YIFT8!2\@:EX4J"QFH97";S M]CA&G\3$+:)Z2>=[>19WG-+%LMM-J#=M&$Y@POU6<3 M.2[=I7RPFE8YY=G5#>,:/C+1(MPB,ZU&.G%KX-4#VP@TKQ>1I5U<;%3TB.L. M,7T&,8=;)6UMX)TLL?PY/R)V \7T0'&=G@7\NY47D,4AI'&:G<'+!LF9Q\O^ M7_(U-X503K6!3Y<;8S6]DL^G-'>0H].0KG+F9L<*7 94&@;U$P:KEW\D>?SV M#.'10'AT#OV(< B7QB!=3W]7)=##OL>BU9K++:R9X>84^[/XI]D_U B5$E2T M#MFZU]!7+O^/3JOBDLF",P&L8\0,J KHKG"X*V"RA&LLL-F@ABSQWA2: W=F MH7+2GOQ=N!*E,C]HV3@M\U\ ?P=[Q2786K6&]C*OX3T^H8"D']-^S)[UWPPR MNH.=PQ4S-;R <1Y.\BD9;_I?-@VG>3HXZ(WC-RI$_4B-LVEM2Q!52WIGX20= M4\ ;2"9A/LN]>>OCNC-T"KGE=(;C<#2>.''3+*6@63B=)C"*PR1V60_*$N8+ MF"3A;!P[!EU@QR#/PU$V(Z./=]Y33RTZ:@T-ZJUO@ 8*U4K;=8G!._38RZZU M_ CO&C2)V')I0&!%J?'%9!R [II>-[%JYQO-1EEJ6]ZLZ3N!V@70>J64/4S< M!L.79_4=4$L#!!0 ( )%Z!%>SXO,98@0 *T* 9 >&PO=V]R:W-H M965TG_]#BD?2N.X?=F'Q#SF^.;CS&BF:R&_J@I D^]-S=7, MJ;1N+SU/Y14T5(U$"QQO2B$;JG$KEYYJ)=#"*C6U%_K^V&LHX\Y\:L_NY7PJ M.ETS#O>2J*YIJ-Q<0RW6,R=P=@>?V;+2YL";3UNZA ?03^V]Q)VWMU*P!KAB M@A,)Y/]+OV]Y&"A,_%<4PJU":''WCBS*6ZKI?"K% MFD@CC=;,PH9JM1$GY'Y5?0=%$#>8"\DTPS4.3LT9RH\ZFG MT8>1]/*MO>O>7OB*O3&Y$UQ7BGS@!13/]3W$M@<8[@!>AR<-_M'Q$8E\EX1^ M&)VP%^T#CJR]Z!5[G_@*E,:TTLHEM[#0A/*"?/C6,;T94O#WU4)IB4GSSS$2 M>A_Q<1^FD"Y52W.8.5@I"N0*G/F[-\'8?W\B@G@?07S*^MR"/B!UR=6*LMH\ MV 46Z<4#K>$8Y)-&CT-^K("4HL;"97Q)^BSIJY?]BQ0QWC>%OCZ75!96#)5N M1--2OGGW9A(&Z7M%5"6DOM @&\MV+?BRWS6']%,'[JDBHB3X\K!_>:MW"SDT M"Y D"NQI>/F#T!GCZ%]T"J75.<)0FCQQ;%8U B[(;]BDU/#@3Z$4^OM(F21? M:-T!>1H]C$C3<9:SEM9#4&])$+IAF.'B O_.PBPZ-X>!FT5C="5;(:D&; GX M/ .]V/43'U7.C'SD9DG:.UF*%4AN$I%@]^/Y9J@4^FXZ28W6.$K/S39 (S<@ M-2M9CFXL0P6T0C'M:6R3NPWJQIE11&]A/":/0F,3[_R8X<9,TWJ&)@_2\/PR0L]<)SE!I8B(._>0<=U$:_0K#B1NF MB5%+$]]0Y29A\HL,9Y%E&.%E4?@3AI/ C<;C \-1FIFHXLS-\(%/M(-DWPZ2 MD^U@T-#(34V50OS(_&*#E'';P3J$=T>UP;0A^)4XVAY..GF]/3ROOP6M*<_! M,$>?-26%3>G%PR'$? "QV4%DMF&L.;')]K(%44U*DU KDU CK'_(::? ^F!*=2#MFYOM *4Q5M%5+R;-1YYH09"%%B_$HF9+ MVP$5?KA-9>CME4T[')UH;:R,?JR<-1H@&Y-(.2@J9Z[CNIXG] MZ7X6N^I'D(-X/\CA2+$T;:"&$E7]48JI)?OAJ-]HT=J!9"$TCC=V6>$\"=(( MX'TIA-YMC(/]A#K_#U!+ P04 " "1>@17,I7&JI<" "B!0 &0 'AL M+W=O^;K,"2F2M5H:23C=(EL[356]]4&EG>@$KA1T$P\DO&I9?.&M^] M3F>JMH)+O-=@ZK)D^FV)0NWF7N@=' ]\6UCG\--9Q;;XB/9;=:]IYW/.'-G@*EDK]>PVM_G<"YP@%)A9Q\!H><$5"N&( M2,;O/:?7I73 8_O _KFIG6I9,X,K)7[PW!9S;^)!CAM6"_N@=E]P7T_B^#(E M3/.%71L;1QYDM;&JW(-)0=^MF>8]ER M1.]PC.!.25L8^"1SS/_%^Z2G$Q4=1"VCLX1?:WD%<3" *(CB,WQQ5V3<\,7_ M+?*&FTPH4VN$GXNUL9K^BE^G*FX)AZ<)7:=,3<4RG'O4"@;U"WKIY44X"J[/ MR!UVD9L MGO$&,RS7J"$.!_"D+!-'J3Y .!Q,DL09\>#C*(&%2\5DYK)J4&NCZ+_,T#EZ MR7#8AUX\&?>/KT;2]")1K ,VI'$8MJ3)> *GWL4_ZIL2];:9#H:*KZ5M6ZCS M=@-HT?;=W_!V>MTQO>72@, -08.K<>*!;B="N[&J:KIPK2SU=&,6-$11NP Z MWRAE#QN7H!O+Z1]02P,$% @ D7H$5ZISG3%!!0 CA !D !X;"]W M;W)K&ULO5AM;]LV$/XK!V\9&D"1J73$]LWE9,3L=(EK]E4@EI5%96/YZP4Z].1-]IV7/'%4IN.\>2DH0MVS?1M M,Y78&GC,.S[/C+TU^,#96NU\@_%D)L2=:?Q>G(Z((<1* MEFN#0/%USRY861H@I/'/!G/436D&[GYOT7^QOJ,O,ZK8A2@_\D(O3T?I" HV MIZM27XGU;VSC3V3P\ MVXDLR[=4T\F)%&N0QAK1S(=UU8Y&;&SHKF3H\&6N0OIOP(9PSM1ZZ6"R[I@Q?/Q8Z37.54-S=CK"3:*8O&>CR4\_>#'Y>8!YV#$/A] _Q]R! M]XT)G@-G1NQ(.YO4"M%'&9AOS?YD"940$HGG:9S@U M%"MIK7&LX@]0M:)@1A2 (65=2(_!JG!#7L%'NY58<=3U8#91FM:%P:,:WK*< M53,F(? L@@]^'#A9YL./D&0N2>!77!-$ "^-G92$$ 1N$,/E Y,Y-XMWA'^X MJ^>,&ZLW0>0DQ#^$.' 3@F8-EZ;;BYPT3 \ABMPX>8W,,U<@R#+'#V,D$F5N MEFVGM"OVPMCS(X=$!(TSXJ8>#"@DZA02#2L$LW:QPLG$''K5LJ:R<)XON ,? M:+EJM_V9PKBVW7W:&9Z\3R:-%/>\0)$8'= G=%@96KRV_>&97J$'R7$#2,73]J'YW9O2C1 MC])LC3!S_<#@H;(R_P!"?$4[B 4W:X;,'SDK"\"IR<& ..).'/&WI8\K=!@7 MWU!H%6)6[T7G;B7J'DD@&MD(D\>L5 KTA"E6$ . M( HPG^Q?$;)."-GW."Y<5DTI'M'7-O[3E41!*P;3DM9?H8)A+OTJP%Q1ZU=4 MH 7@NO/*K+LQF%,N;>2M/Z;G\GHZ_?\B'Q-[1$BQHA/72["!IX&7.F@)X&G3 M'!7LH_>,D+B8ZO$DD;@IGC:P22)S8@C<,-Q#&..=.V+%Y,+>A!7D8E7K]KK8 M]7:7[;/VCOEDWM[4WU&YX";7L3D.)6Z"IT+9WG[;AA:-O7'.A,;[J_U<,EHP M:0SP][D0>MLP$W3_@IC\!U!+ P04 " "1>@17YO2O8G<# !M" &0 M 'AL+W=O'3NS M#3C9AG58UR#)M@_#/M#26>(JD2Y)Q6E_?8^4+#N XP K#%A'BL]S#^^./,UW M4GW4%:*!YZ86>N%5QFRO@T#G%39,7\HM"GJSD:IAAH:J#/16(2LGEG/9FIH+O%.@VZ9AZO,-UG*W\")O/W'/R\K8B6 YW[(2']#\ MN;U3- H&EH(W*#27 A1N%MXJNKY)[7JWX"^..WUD@]W)6LJ/=O"N6'BA%80U MYL8R,'H\X2W6M24B&9]Z3F]P:8'']I[]%[=WVLN::;R5]=^\,-7"FWI0X(:U MM;F7NU^QWT]F^7)9:_3@H:+[LF>^S@< :;A*X"X!\1. M=^?(J?R)&;:<*[D#95<3FS7<5AV:Q'%AD_)@%+WEA#/+59ZW35LS@P5\,!4J MN)4-I;>R<7]">"=RV2",?I=:CV'TR-8UZO$\,.3;,@1Y[^>F\Q._XF<"[Z4P ME8:?18'%2WQ F@?A\5[X37R6\+=67$(2^A"'<7*&+QD"D3B^Y!6^>RSW8=BB M8K9D-/RS6FNCJ'+^/;7CCC ]36A/T[7>LAP7'L53HWI";_G#=]$D_/&,W'20 MFYYC7Y[)TBFIY\D>*X2-K.F 78,%GUDW71J@!E88\F%L)+D!BCA7!;P/8R2Q$]G MZ=B:<>PG8>;,)/63K#.CB3^-KL9 5P(=>$%'5"D4^6>@,A&Z9MU54_Q')[=Q MX?OP=HR0[E:D&RZOF=9\P_.^^I)T2@X3/XO(]_0JH\'43Z?D?=7(UI(?,!2 MC9+-F^FQ+B'Q9^$$+H;G'W3Y=QLQ%WTLWDYMZL=9>M"7^E?3Z*#04K:"VD3- MOY"4DMJ#[I!T?0#%B(LGW,>(,J>1!'##\9LB%LTH6?%L#$F6P&B:9M\LC.&H!#:K2-3I-ZFCS73<8 M9H=>NNI:R&%YUXC?,U7:;-6X(6AX>46M2W7-K1L8N74-92T-M2=G5O0]@,HN MH/<;*@17^UR9Y:<$ !,# &0 'AL M+W=OO;Y?P="?D M5[7F7,-C735JYJRUWIQ.)BI;\YJI$['A#?ZR$K)F&A]E,5$;R5ENC>IJ0CPO MFM2L;)SYU+Z[D?.IV.JJ;/B-!+6M:R:_G?-*[&:.[^Q?W);%6IL7D_ETPPI^ MQ_67S8W$ITF/DI#WS!J\H 81A_=YA.[](8/I?WZ!]M[IC+DBF^$-7O9:[7,R=Q M(.K.&".HRZ8]V6-7AV<&B7?$ M@'0&Q,;=.K)17C#-YE,I=B"--J(9P:9JK3&XLC%-N=,2?RW13L_O>($EUG#+ M-T+JLBE@=,^6%5?CZ40COM&:9!W6>8M%CF!%<"T:O5;PH"08P OZ9 .+%[PYV3_.EDI+I,:?A])MT<+#:&9<3M6& M97SFX#PH+A^X,__Q!S_R?AJ(->QC#8?0Y[?\@3=;#BLI:OCPJ+EL6 4+RP@N M%2R_P<]<%))MUF4&9SB0ZE *@TX.I[#WS)H%%LIMQ-R!4#<-0R"!&Z0^4-2B,82QF\8Q?&(;UL![ M(&Y"(SPC5"5P+S3V3';U1$!"7!)9)P0U/((2"1/7)Z&1J.]ZL0<#Y*$]>>@@ M>2Z?M>WSB[:]XLPAR@Q"'Z;,F]KU[VWJPAY="84:KZ+_OGE838\&1L ^10D* M(7%I8&J)18W2OG,C;%GBC6&$Y0]3/*F;1,'8O$]),H:%D$AF1$47#!F8,>/' ML+/MZ\@/D!(4#?S$C?W$(,5NX(<&PG>CF(R[7A\I_#N@;N0E]B2>X5OJ!M1R M#)$QT(&>1WW/H\&>7XFF>'^%G[@6$F.,(Q1&)X@9OXT9X'%/M-$W,D >UG MUD?&M-A73]A="=OYC/QV/F,W3NA0K^*^5_%@KRY*Q8I"\L+R \1JOZ$.]6<0 M:GB%(P,V4N3;3(.Q^S]LZ,OFK^["=BVJW'RC[30G?FJF!P>Y7=*XKN-V27N1 M&^,66/RZ@&N6K1,6X: M!69]! $JI&Z$_+BSE^)K;IB!Q E2'%[\N /NZR3& 4["&#YC->4^>,R$FFP@ M-+H^[5AU^Q_L_\FS&QY^_@M[CU60B6VCV\M>_[:_*I^U-\0G]?:>?). MJO@*3;V3&/>];.^N[8,6&WM?7 J-=PTKKO&ZSZ51P-]70NC]@W'0_P$Q_P=0 M2P,$% @ D7H$5R-XI'K5 @ )P@ !D !X;"]W;W)K&ULK59M;]HP$/XK5B9-K;0V(4F!,8A$@6F=U@JUVO9AV@>3' ML3/;@>[?[^R$#-H455N_$/M\SW-O]AW#K53W>@U@R$/.A1YY:V.*@>_K= TY MU>>R ($G2ZER:G"K5KXN%-#,@7+NAT'0]7/*A)<,G6RNDJ$L#6<"YHKH,L^I M^GT)7&Y'7L?;"6[9:FVLP$^&!5W!'9BOQ5SASF]8,I:#T$P*HF Y\L:=P2RV M^D[A&X.MWEL3&\E"RGN[N6"-WX57-ZC4D+W%_O MV#^ZV#&6!=4PD?P[R\QZY/4]DL&2EMS0U&#W(FJB]]J/.P!T">=D!8 \+'@/@90%0#HI=:B&M _%(+%S7 A>Y7L;O$ M3:FAR5#)+5%6&]GLPF7?H3%?3-A[0&K^+)%ZGU*;D2J5F9#)\Q&9%K M* R/$KXN13G) K>D3 (HQ9_)B^'AVWA M_)_UV3];/TA&U%R(R/%%S_#-J!),K#29XSVH+L"/\4(;A4_Z9UNQ*[JXGN^\HE<=IXMG6=$A=T PH;?_UJ"8X, M;:C(L-3DA(E:?-I6X,JW"^>;'3N;).H'_;@_]#?[I7NJ%H9!K]<]5)L^58N# M7J?S_E!MUL(6]/MQT*A5B?3W.E\.:N5&CB:I+(6I[GPC;:;:V#7S1_++SF#2 M:9%/<0I60^LO?35"KZE:,2P#AR6:"LY[Z*RJQE*U,;)P?7&ULS5IM;]LV$/XKA%<,*=#$>I><)0:2 M6-(ZM&M0+]N'81\8B8Z%2*)+4G'[[T=2LFQ)C&9W!+8OME[NGN/Q'AY/)UUM M,7FF:X08^%KD);V>K!G;7$ZG-%FC M(+O$$EO[/"I(",GY*G*=T0!%.I5.13 MRS"\:0&S 36B+VL+DG_&S:HJ19@4J:X1(0M+J>W)B7L>D)!2GQ>X:V]. 8"%<>,7X6 M)^_3ZXDA1H1RE# ! ?G?"[I#>2Z0^#B^-*"3UJ90/#S>H4?2>>[,(Z3H#N=_ M9"E;7T^""4C1"E8Y^XRW/Z/&(5?@)3BG\A=L&UEC I**,EPTRGP$15;6__!K M,Q$'"AQ'K6 U"E9?P7E%P6X4[&,5G$;!.5;!;13<8WWP&@7O6 M^H^#+8-6S M*T.S@ S.KPC> B*D.9HXD/&5VCPB62FHN&2$W\VX'IO_RME^]@%3^A:\+Q-< M(+!!!-SAHN \6:XA0>!\R?F?5CD">"7N;"H&)8T^K< MI%D"8)F"1997#*5 M #9(]QRIACA;( :SG!LY!P_+!3A[\Q:\ 5- Q5T*LA(\E!FC[_A%?OS;&E>4 M8]*K*>,NBH%.D\:=V]H=ZQ5W;/ 1EVQ-05BF*%7H1^/ZWHC^E$]M.[_6;GYO MK5' 7ZKR MC&.V 9EJT8S]VX^D=(N+KYJOKB>.N60CT\WKI*/?IWOL??/?A. M*.R6ZK;$LU_!"R$IL_*)'O#RSYM'R@A/AW^IJ%;#.6HXL4=%)"+'IO\S/[8!3_>4P\D,ARW-G7:&%0LAU_:Y0.!1RC9G;%8H42);O=87B MH9#ON58KU)DQMYTQ=W3&ZKW@'&SE]H_2<_B"""]G=EF>%T*4\;3.UR XXVF^ MOOQ6-:^U(;+?JP< MGNFZ!X3KQ,UKX^:-Y\75BM>%8G-/Q1[.*T- 45*1C&6(7JK"X^E,C#K!%CK! M0IU@D4ZP6!-8ARY^2Q=_=)F'Q2;'WQ G"@M9I,1I:M(V9UW,R'DH%CNVI5W+0AB88#2 M@X-C<_#HF$X-E\(JS\%>8/5VU5"GU4CEJ^.XCM7/P0X) MW=-%N98;N."P4#4N#+.WDL>MGLH$A5%NLU]+:;49'64S5DI9@7H)FP>M%/.H M]'M"7,SCXC)J]^2X#(VJXJ+39G24S5@I]6IE.RK"UMEVUI"\*O M25ZE/& K@HM.9XO7PJINP0<.#-XS5%!EOZ 9AJ:LK!5MH14MU(H6:46+=:%U MR;9O,IFC70E)MO.6;;OJ&'6HEL \J?*6:FF3-W9%&_C^HJT97*?X#'B]VZ_9 MQITXF5Q#JY9E^/VN0ZC5:J2PZAB^:0ZRBF)T1A XQBMY9=\A,L=;1.V3T%(^ M"7W:U"]7^(/0)_$@I(S/*.+)*4(GVD(K6J@5+=**%NM"Z_)FWR?@(R5/&>9FC%3=E7/B<,:3^BJ ^87@C7V(_8L9P(0_7"*:( M" %^?X4QVYT( ^VW'/._ 5!+ P04 " "1>@17\>PXJ"H' !",P &0 M 'AL+W=O? M#JGS79I]R]><"_0CCI+\8K068O-B/,[G:QX'^?-TPQ/YRS+-XD#(RVPUSC<9 M#Q:E41R-B>-XXS@(D]'LO/SN8S8[3[)BY!2,>,3GHH (Y+\[?L6CJ$"2/+Y7H*.ZS\*P^?D! M_57IO'3F-LCY51I]#1=B?3'R1VC!E\$V$I_2W1M>.>06>/,TRLN_:%>U=49H MOLU%&E?&DD$<)OO_P8\J$ T#P@P&I#(@'0-L,J"5 2T=W3,KW;H.1# [S](= MRHK6$JWX4,:FM);>A$EQ&V]$)G\-I9V8O4[3Q2Z,(A0D"_2G6/,,O4U$D*S" MVXBCRSSG(D=GZ$8.G\56?I,N-;_O[3ZO@P35>$^ON0C"*'\FK;_<7*.G3YZA M)RA,9+-TF\O>\O.QD X4-,;SBNS+/5EB(/O'-GF.J/,;(@ZA&O,KV/R:SZ4Y M+LU)VWPLPU;'CM2Q(R4>->!=SK]OPXPOT*LP"04_>R<'Y$(3GK_?24/T5O X M_T?G]+X7IN^EF,S77[#G_*X+@26P5D!H'1 *H<]> M9VFNO:U[,Z\T*Q++W9"/\-B@2BH[E',4&H@ZM9$79#H!RYTG-Q>9\2G;C=T M_584DP;Q%B.O9N2!C-X'V3*P&U:?*8UGZFUB3SMSU#?)1V.ND:.IR>)';6> M.L=,X\JJF=PF?H=0U:;)"!-F(-18X#%(Z$O.E]L(O0N7'#V5Z^\]#[+\F98C M#(2=O:UVX05-CQRI6"W$&%S69E]+M58,C#N>2?6)FDY_XH6<+=+8 ??A/J8H M3A.QSA'VT2*XUX?A,59?K)9?#*^_']+D;)[&&RXX"E89YU)OZT@;K.0$ MAO7$D Q>0;6RLY1B79Z:5LR?&(@J*8#!A=68PR>]T)%&9Q6E25^*,6Q@I-9B M#"_&=A(V/-;%1KT!EB#&<1_\,(U[ M&''P+7X,?4.4OB'T-./>JORQA=8.BI(_!"YP#!CW,) +C/O'$#-$B1D"BYF; M="EV0<:1X/-UDD;IZE[K'X@R^+9:0FO[K,02\4XSUJU6:&RAM8.BA!F!A9E1 MU9*^-,.4D&E'G)&^.&LW:_-2\HS TFF(LB7]VLC9Q/&ZQ0!=,X_ZU$!5:2=R M0#OIM6UEU0R@ASW<)=6OF7@^,]1,J-(S%*Z9_'P*.P $E2A@TV,KXTJ>4%A5 M6%'P!_I@>U/D51)>&X;'D#!421@*2Y@ZE6_D;"EV(;5N6A4MMM#:'C?V1$XC M6JA5T6(+K1T4)5HHK#7,.T6L_XSM$=9]RJ;]/1CB.:ZA6$J5TJ"PTAB2R&F_ M2'+FNKA;"M /N5$X(GV,1*K= 47J$' MI'(8" ./8;#IL8-7K?;T!,68 WU,JU0^>:C&>,9B#(QT;#24H*"PH/B M!#'7SV>K=1=;:.V=9*53V&GJ+LQJW<466CLH2M@P6'084WEEU\Q$M+<)5S5J ME4M-^]9,J0P&JXQ!F_Y$LYWO>UV>NE;$D"Z9$@?LP(Z-/HFS_E$(K\>(:G8+ M#8\'K'%:PE8UX0 0-:=OV/+8 :O6> :O\5;2]X$^?B)MPPC'1D')!P;+AZOR M;!G/4,:CDN) _>H@Q]N M_^ '=AJG.O:L-*V(,S74I5RU-KLG*#HYH:A&NU!F$+K1T4)75<6U+G ! @=6#+8UUL'"F% M98AYX)MW#&'(P??X,52.JU2.>YI=%->J!K*%U@Z*TD"NK1K- : I,/"M*IIQ MXP6'XNV2]T&V"I,<17PIX9WG$SG*LOT+&_L+D6[*=QYN4R$G0/EQS8,%SXH& M\O=EFHJ'B^(UBOJUF=G_4$L#!!0 ( )%Z!%>FOA\Q1P0 +T< 9 M>&PO=V]R:W-H965T3AH%]BD>+[G"/Q%8\B M3HZ4?>4[0@1Z3.*43Y6=$/NQJO)@1Q+,>W1/4GEF0UF"A6RRK*KCQUW$;;G<@ZU-ED MC[=D1<3]_H;)EEI1PB@A*8]HBAC93)6Y/O;U7)"/^",B1WYRC+)+65/Z-6LL MPZFB91F1F 0B0V#Y\T"N2!QG))G'MQ*J5#$SX>GQ$]W-+UY>S!IS!#+&[IT2?E!0TR7D!CGO]%QW*LIJ#@P 5-2K',((G2XA<_EC?B M1& 8+PB,4F!T%9BEP.PJZ)>"?E?!H!0,N@JL4F!U%0Q+P;"K8%0*1OGL%M.1 MSZ6-!9Y-&#TBEHV6M.P@-T2NEE,8I9EW5X+)LY'4B9E':7B,XACA-$2_BQUA M:)D*G&ZC=4S0G',B./J(OF#&<.8R=&$3@:.8OT?OWHQ,J_\)12FZE@3I1/X! MO3UM3E0A4\P"J4&9CEVD8[R0CHFN:2IV'#EI2,(&O=NNMU[3^^UZW6@!J/+> M5C?8>+K!"Z.5^!M.>\@P/B!#,W3DW-^BB_+&O6]([^H_=&M[1/36Z#A-F0, <2YD+"/$B8#P2K.;)?.;+?1I_)VB\K>RJK#&,D#;ZC MF$H+-BW:BU;0N::#A-F0, <2YA:PRQR6O4$^S/3>8*(^G'H),J#?%'!8!:Q9 M9%!99-!JD7E"F8C^P?EK)GF4+\R<(/G"+(M\M6[A?-UJMS MXW08X_X\QNSIS^:XPQ@?Z.)J]HO*:UE&"!3@M)L4)H#2G-!:1XHS8>BU:UY\M%9_Y\U5JZ3Y>?11BN6 M'[.UTQ*I/R^15^W1S_88),T!I;F@- ^4YD/1"H^I)WL<"6';?+^+HX >4E%\ M\ZIZJSVU>;Z3]*Q_H8^O](9^6Q\[3?VN/O:*G;0?88N-O6O,ME'*44PV,@6M M-Y3_QK-BKZQH"+K/=U[65 B:Y(<[@D/"L@'R_(92\=3( E0[EK/_ %!+ P04 M " "1>@17;3T^*O(" #""0 &0 'AL+W=O,YEJK+YZ98<,!)*$Y$ %811QF(V,,_MT'.KQ MY8!O!%9BK8UT)5/&'G3G,AD9E@:"#&*I';#Z6\(8LDP;*8S?M:?13*F%Z^UG M]TE9NZIEB@6,6?:=)#(=&0,#)3##129OV.HCU/7XVB]FF2A_T:H>:QDH+H1D M>2U6!#FAU3]^K'-8$]C>#H%3"YQ_%;BUP"T+KK1RTXTR MFU*MJB%4/\5;R=5=HG0R^L!8LB)9AC!-T%>9 D>75&(Z)],,T)D0( 4Z1I-" M%ESU<\8E^8/+)_#^4;U* M#A!4A,,G&DQMW?7J##@R-T@ A%=RDKA/(50U,J M5#VA&==8YQ66LP/K4T%/D&OUD&,Y;HM\W"V_@%C)[5+NO)2;*J F):=)R2G] MW!U^$T*)A.//ZHU+MO/IH2\@>ZWA]-"$B!AGZ =@CJZP2I'()_3S;"HD5Z_P MK[9H*A:OG45_UJ=B@6,8&>J[%<"78$1OW]B!]:XMJ/]D]B(VMXG-[7*/;D"O M(X3.=SW&\TH?E'J]X"PC9Q!Z0W.Y7D+G)'N6X#4E>)TE*'"O#;Q2^6O@;M^S M-\ [K?<$]QMP_S5POPWD_P M?@/>?PV\WP;>;P%WW0WP3NL]P0<-^* 3_$ZM^H!G$G@;_F +W[;",-S@[YQA M3_ZPX0\[^=7JVP8>MJPM*OD-\.U1KNWX5C.J(C+7=EA]NKG"?$ZH0!G,E,XZ MZ:M\>'5BJ#J2+ 9 >&PO=V]R:W-H965T MO$A9_1=LFUC/ ?.2\2)KDD4%69+O_N,?S4!T$N#H0 )J$M"O)OA-0CUR[JZR MFM8UYG@VH<46T"I:H%4']=C4V8)-DE?3^,"I^#41>7QV@Q,*ON&T)."68%92 M(N:(,W *;I(?VCD]L;G?(C1#F(T#%&U MZ#E;XSF9.J('&:$;XLQ^_PT&WA]#_"R!*6S]EJVO0Q>C]\@!JV8YX0EA)P!O MQ/SBQY2*_ PUJT.J)LIGY 8KBB;OI$NM'C>(X"MLHI>)16_%( M6_'?9$-2 ,%_';&>2*$.5:L%-)TM2V *]W'+??Q^;8YMLK4$IK -6K;!,;2Y M QUW5#<>C<,]:?:#XBB"P\H,VWI#;;U?"H[3H8K"WLU"&(^]O9+Z44$P\N/A MFJ*VIN@7N@69=(L6T%0_EL 4[G'+/7Y_M\0VV5H"4]A"3[[RO6/T2X/:%9[O M13[:D^= V,B#7C"L3]@Q*O!M7=/DO5I7/TQ7E[0!4/O>;3K'-^D8M03+S[]P+PZ(-_+9",Z17QL#C*/^NXL"(-H7Z#],#^* G1 I-(10.TK M6!6ID2O2 QM/V3&< I). 7D6OG&U;L/X(]<2FLI8N@RD=QE&(D5]2['_!-6& MJ#5V%A[TCD,1IY'QT ,;3]4QC >2Q@-9,![(JO&PA:8REL8#Z8V'F3A?MQO: M$+5&:3>0WF[<%CGY"3),GPD'6^_F;&TW>,50HDG0\*+ C6 MJLFQA:8REB8'Z5UVP_"H9!?. S#DEW@O3NY%7=&KD _WS]"HF1;OW^@L?^@U8;HM8HG8JO=RJO M"M;(&>AO9CI]MM#4H9$&R;>P->-;]4*VT%3&G=T9_?:,F6#[^RT]P>I"=C6Z MG4W':L?W%M.G)&<@)4N1XYV%0NUTMXFZ.^'%NMZ'?"PX+[+Z<$7P@M J0/R^ M+ K^@171@<"0LH$ #N& &0 'AL M+W=O9!:1V M1NUV-95&I=-]6.V#!PQ8D\2L;:#=7[].R"0D=@QLF1>(P[TGY][$Y]AAM&/\ M2:P(D>![EN9B[*RD7%^[KIBM2(;%%5N37/VR8#S#4@WYTA5K3O"\3,I2%WE> MY&:8YLYD5)Z[YY,1V\B4YN2> ['),LQ_O"C-5Z2 M*9$/ZWNN1FZ-,J<9R05E.>!D,7;>P>L;WRL2RHAOE.S$P3$H2GED[*D8?)J/ M':]@1%(RDP4$5E];R>%7,(Q;DAJ5_TKE< MC9VA ^9D@3>I_,)VOY.JH+# F[%4E)]@5\5Z#IAMA&19E:P89#3??^/O52,. M$F#0DX"J!'1J@E\E^&6A>V9E6;=8XLF(LQW@1;1"*P[*WI39JAJ:%[=Q*KGZ ME:H\.?F,^1.1^#$E8$IF&TXE)0(,P'3%N!Q\)3P#.)^#.Y8O]R-SPNM;=8ZF MXHU*?9C>@M>OWH!7@.;@ZXIMA$(0(U&NJA]L;^9RK\0 M6*L9?MT,WX8^N6%"F@K<9T5E5J$@VXD?^S X3PX,)>AYHMHD4KK&F%I]*Z8T(0(Z]0N^H >BCJ M<#-%^7%BYA?5_"(KOP^8F(VE3)K5L&$[^K@Z:P$(9]Y!I/@\=,C:\9QY*H=:": MA7;%L6.=.\LNA=:NO+%.&+RXZD"K/9_=D NAM1O2F#:TNW:?\D#=@P,OU.:V M'I6$\;#G^6R<&MJM^B3ET;U88V<+:5-KO!H>,>N3E"?6-447'D,0\L(>@HVM M0JM1'1.>H;[.20X$I:*F1R5J>=M#K3$Y:'>Y[9="*V]L6HL%7DOO[6RNO;9>ZL+H;4;TA@YLAMYG_P@W961%P^[#ZHI M+$1QSR1"!SM@NWN?(D!(-^>N %E#VM0:[T9V[SY)@"J,EK9$OM8]0U0<]C%L M/!;9]Z=V!4+ZQA-Y4',64U@0HKX[V_@=.N)WA$NZH#.U^!& +=0":,T$E:ZD M&7D>F%MJQ3U[VET(K=V%QF!1]/(Z9/7PLQMR(;1V0QI;1W9;[]4AW:11T-U_ M&8(2O^=M!6J,'-F-_"0-THU:FTBVD#:UQLC1$2,_28/T;>F@NP8RQ?3L;OS& M9'W[OM6N/U5RU+JCW8V7(2CQ48>8>_ RNO@GX#/F2W6?0$H6*LN[BE59?/]R M?3^0;%V^GWYD4K*L/%P1/">\"%"_+QB3SX/BE7?]%\?D/U!+ P04 " "1 M>@17]?+:8J@" 7!P &0 'AL+W=O Y<;";.P-E. M7+-5ILV$&TQ-\74XFR!B>#*/LFFR?4'Y_('F$%NM*HY(X!T0 MW_.#'OAT-WP&"<('%NX_A[MH4^N5WWKE6[[@3;YGD@\ZMJ2-+0?D@C))[BBO MS)BIA'+R ZC<&OI(?IXME)9X?'_U&5)7$/978'[I4U72!"8._K,*Y!J<^..' MPVP*VT4A.$+:3LW M?Z>T82MMN%/:C=!X1/.G-J#: ]XG:/CJ6P4C_V3\0M#KK' \/CENL^I*W4[; M,E<&]J(5*Q2>DQ1QWM$QTLBZ#=>!%J7M9 NAL2_:888W%TB3@.NI$'H;F.;8 MWH7Q'U!+ P04 " "1>@17IB=UD6T" !$!@ &0 'AL+W=O M:'EM$:%(E:3LY.^[I&35#A2WAUXD+KDSFB&YJVPCU9,N 0QYKKC0$Z\TIK[T M?5V44%%]+FL0N+*4JJ(&0[7R=:V +ARHXGX4!"._HDQX>>;F;E6>R<9P)N!6 M$=U4%54OU\#E9N*%WG;BCJU*8R?\/*OI"N[!/-:W"B._9UFP"H1F4A %RXEW M%5Y.4YOO$KXQV.B=,;%.YE(^V>!F,?$"*P@X%,8R4'RM80J<6R*4\:OC]/I/ M6N#N>,O^R7E'+W.J82KY=[8PY<0;>V0!2]IPG) JB> ^/0R?08'PT,&C?;B/ M/GNS46\VXT/L^8,TE.-Q=CLPY+4E&#D"6_WK/$S&:9KY MZUT3 UGQA]&?K#UU2:\N.:CNBF,[H:( @HV)R+F6''0!.#$DM.5*=R2&ULQ9Q=<^(V&(7_BH;N='9G$L V$$@39I+8FFYGTV4V MW?:BTPL%!'C6'U06(>GTQU?^ "-B!$Y.-S<)&.MY)9U70C[(OEC%XELRYUR2 MQS"(DLO&7,K%>:N5C.<\9$DS7O!(?3*-1BMFK60A.)MDA<*@9;?;O5;( M_*@QO,B.C<3P(E[*P(_X2)!D&89,/%WS(%Y=-JS&^L 7?S:7Z8'6\&+!9OR. MRZ^+D5#O6AO*Q ]YE/AQ1 2?7C:NK'/J#-("V1F_^WR5;+TF:5/NX_A;^N;C MY++13FO$ SZ6*8*I?P_\A@=!2E+U^+N -C8QTX+;K]=TFC5>->:>)?PF#O[P M)W)^V>@WR(1/V3*07^+5S[QH4#?EC>,@R?Z257%NNT'&RT3&85%8U2#TH_P_ M>RPZ8JN XE07L(L"]FZ!SIX"3E' V2E@]_84Z!0%.L=&Z!8%NL<6Z!4%>EG? MYYV5];3+)!M>B'A%1'JVHJ4O,KFRTJJ#_2C-K#LIU*>^*B>'=S(>?SN]5MI, MR$TO_M WI$62>9,\(3X$?D: M^3(Y40?5ZUL_"!0AN6A)5<$T3&M<5.8ZKXR]IS(.N8TC.4^(%TWXI**\:R[? M,Y1OJ8[9](Z][IUKVPC\91DUB=,^(7;;=BKJ%)!\E#Y._JI(KC]^ICI].T>?)@HWY94/-P0D7#[PQ_/$'J]?^J4I9),Q% MPCPDC()@6D9T-AG1,=&+N><^4WJ\G1'\,7W-JS3.B8.,F'YK/@R=YME%ZV%; MNORL>]UN?AZPOQ50Z[WNIO>Z1_<>2\?'"5EEWZ-\ MN%#K C)3(TN2"9.<3)DOR ,+EFHZ5Y/T) X")A*RX"*?QC]4];:Q!G5' M%!+FYK#^5H=:O:;3V]$0&9*"8)K8O8W8/:/8WMUH5"60L51=@9 P%PGSD# * M@FDZGFUT/'OC+\$S9$8@82X2YB%A% 33,J*_R8B^<62[?C*.ETK>J8A#M;(7 MW]3EY$+XXWR>5O/S6(E?.3L;P76E1L+<'&996]-SNVEU=V9G9$@*@FD:#C8: M#HP:?IY.N?"C6:J6'T\RX<+L2J12-R.LKFY(F&MN9J]H5-5X1%:#@F":EE:[ MO")N&YLY6HKQ7,V\Q2B,I^GB5+6<).F*Z^"H--/KR@NEN05M9V#V=PR+V>A+%\;<&0-!=*\Z TBJ+INMJEKO8;+Z6*"J 2 TES MH30/2J,HFIX8I<]D&4V+J@MCR4683=Q/7%WT5D_;4/<(2G,/--AJY^VJ5!;J M%J%HNK*E7V0=;Q@5RC[P1.ZLO P:(SV=&RC-/=#TCD%BJ%.%HND2EZ:6=82K M132)EY'@XW@6^?_4\ F+,):]M=+I-IT=I]!M"0%$73U2I= M*^L)'FJT06DNE.9!:11%TQ.C]-IL ML]?VZ@D>ZL-!:>Z!IAM^&X'6@Z)HNL2EYV:;MXJ-N,AN)8K&/!_?E=L9S)#: M0D)],RC-@](HBJ:+6_IF]N"M)W:HPP:EN5":!Z51%$V_:Z;TX1RS#_=20]6, MK7T[#-2>*VC;ANJ990]V]Z%!@U(43=>Q].><(_RY5WQ!F_&U]82:;@>:;K@" M@]:#HFBZQ*7%YI@M-I1E7H31-Q+L#(X;L4WL M^_CEYIK4'KK86Q/-O;3VRYTC]BY *T91-#T]2L/,,;M&HWR+=WH773PEDHD9 MER=DS!;L/L@.W?-TZE:=$Z4)%$W6L_D)">(5%R3P0U]69D,>6-^$O3NXH0;9 M$1$]:$2*HNGBE5:88[;"7B'>ST]_2';L?HU3%] D$HX!%Q&Y;5?>Q7YMYM:=7J&,%I7E0&D71=)U+ MQ\IYZWLA':BG!:6Y4)H'I5$434^,TN=RS#[7BZ]XHH M@+J&I9WEF+>!O>PF##.TMH)0B^I @TTW84 K0E&T7-G6UK.#0JX62NE3GA*2 MW9.OK?,;J^*X:YW3_#E1)3Y_;-6M6I?Y44("/E6A MVLTSE<\B?Q)4_D;&B^S)1?>QE'&8O9QS-N$B/4%]/HUCN7Z3!M@\CVOX'U!+ M P04 " "1>@17,&7.V+(# #8#@ &0 'AL+W=O#E?$; M55_1NR=0A*;R_=Q66K.1M^-*R[K4X@YH"= GSM1>H@\L@>3O\K8FKK'=,_;: M'=WPUP.;(,^Y0Z[C>NA[9".Y)P)D]1C1X-6.\0H-WIAC*A_(/HM+\6F_N+E, M#S(G,2PL?5LDB"-8RQ^^PX'SXPC8:'Y=NX$61.[>//9!^#>F/0OXL"%,Z MK"ZE\#L4. Q"9]I/$=04P2C%AS<0,957< 0=#J%X=N%&'T(3M-.@G MQ$Z3%)W1R_^E2.:0W*/5$82N3N@<1NA9T!AZ,Z!S@X2 6WD<_P\IX0Z=SJ:1 MRC(X6Y8;RPK7)SQ-B9 H!U$ZWYQ"DV1[K2_IPM91S**)$T2MOX%3<1L3W4L2 MRNUL*-5CKQU/WL0;"J>FE.#18M#DH-NA>Y9.JT=3OJ:=?A@3>9 M#9 WA0>/5YXJT=V.V^]R^_XD& )O:A4>+U87Y,;;&15T;K ?309O;5/\\&PT MEZZ2A!JK2(J>J(Q3+@]#!*-E]+]FT*8ZXO'R6/W>K;Q)-NGE=0AW2R5V?<&PO=V]R M:W-H965TM M&NIINP_3/KC$0-0D9HZ!(NV/G_.C,>$<0RHCOK0D\?OD?5[;3YXX'NT8?\E6 ME KPFL1I-G960JSO7#>;KVA"LENVIJF\LF \(4(>\J6;K3DE81&4Q"[RO,!- M2)0ZDU%Q;L8G([81<932&0?9)DD(W]_3F.W&#G3>3CQ%RY7(3[B3T9HLZ5/> @#RA:_!7177;P&^14GAE[R0^^A&/' MRS.B,9V+'(+(?UOZ0.,X1Y)Y_%N!.O4]\\##WV_HOQ;D)9EGDM$'%G^+0K$: M.P,'A'1!-K%X8KO/M"+4R_'F+,Z*OV!7MNT/'3#?9((E5;#,((G2\C]YK0IQ M$(""E@!4!:!S W 5@ NB968%K8]$D,F(LQW@>6N)EO\H:E-$2S91FG?C5\'E MU4C&B8O-_>R$"%X8(D<'1DIZGL#OA4ED.>G6\IEEX)I)CM[G5_-P(>/ M5) HSGX:N4*FD8.Y\^J6]^4M4 NS]#)"'L":?A_/#D2$=7)<4%WA^"]ZG9!VS/:6@J"V8;?A\)>L+9C%) M==4RHN73^"Y;DSD=.W*>9I1OJ3/Y\0<8>+_HJ%H":Q#W:^)^@8[;QM**<*H; M2U/.2;JDUU#')/XX6%'S84\+U4\D,$X B4L?N'8$-)D'-)#B/21AMHY"F(=A' M- YU7$H@6$I1_GS93KR1NSW,VMBDD5^_SJ]OS*^=4Q9 FLP M'=1,!U>>?@.;I;($UBC5L"[5T#@HGJ+LY6;!I49'J: 27P!.!-5Q-@)UY5R" M0?]P>-]Z<.CKQSCTU%/1W7+8CF^ MXTCLM42-*)V)0EW/^;UAKZ7GD**#;.EGA6044'.;9H[*T$"SHYE17KPPI'-: MJH=62,T@G2M^"2<#E96!U_8RT*J9L876+)>R,]#L)SH(:H5T+((^[AT/97U# MV ]:QK.R+/!,SW)2+'@##$TMFGFJ*P#-'N'QRB-DDT"_@-= M7_3,P)UGO"6TYBNWVD M0.J'.%*>!)WI2BV @Y4R0V9FHR7CR/<^,U'DX7<*> M(&5/T+7M";)J3VRA-"9"<&2XN>*DI#RO(&\ MOF!,O!WD-ZAWETS^!U!+ P04 " "1>@17J#5R:^P$ ='@ &0 'AL M+W=O6/.ZY/B?.];GQ]$C9:[XE MA(,?:9+E,VO+^>[>MO/5EJ0X']$=R<25-64IYN*0;>Q\QPB.5%":V,AQ?#O% M<6;-I^K<(YM/Z9XG<48>&OMQ%.\V7)YPIY/=WA#G@G_ M=_?(Q)%=H41Q2K(\IAE@9#VS'N#]TG5D@+KC6TR.>>TWD%1>*'V5!W]',\N1 M(R()67$)@<6_ UF2))%(8AS_E:!6E5,&UG^_H7]1Y 69%YR3)4V^QQ'?SJS0 M A%9XWW"G^CQ+U(2\B3>BB:Y^@N.Y;V.!5;[G-.T#!8C2..L^(]_E$+4 @3. MZ0!4!J!VP/A,@%L&N(IH,3)%ZS/F>#YE] B8O%N@R1]*&Q4MV,29?(S/G(FK ML8CC\V=.5Z]W"R%$!)8T%;,CQTK?.Z N@0>I<\Q_@@^?"<=QDG\4EWX%-LBW MF)%\:G,Q"HEEK\J,BR(C.I/1!U]IQKV(\R\O#D6$X;J6HJ_#&9_">2,Y9O.)"4*7@*86,"/+-O<]W>$5F MEG@U<\(.Q)K_]@OTG=]/T>L)K$%V7)$=*W37-'U.,1SWR; GL 9#KV+H&1_G M@FSB+(NSC:@6"5R4_@>.;2+C4:*,TBJ1&:ZG106DD MYT-$DP2S'.R$7FING)P:YB%<+5B!%M9F6N",7%VFFTH@K02ZI+8.P=^8^&K^ M!1IT:P*X:.2=X:_=#[S,_M0J\A!:].J@2K2&%J$SN4A;$W"L,S,FC'!62^#S^[)6)C;7 M"VNUIJ0UA&>#VK1!LVN[L$6 7;\60#3QVF2&\&M(^S5D=#^W= DE8IU8N^\Q M)[V5E+9D+K:F(MC?HRL]# M S@S_4M5T=]D-8 M+E=;+M=LN09O^\K\C:(X'CGM#X7F85XK@UW;:$L)VZC]QQRLZ#[CQ895=;;: MXWQ0.WNM\PMXORQV*C5,L7'Z%3.QHH@"0M8"TAD%XB&S8B^R..!TI[;S7BCG M-%4_MP1'A,D;Q/4UI?SM0":H=H3G_P-02P,$% @ D7H$5TF&ULK59=;],P%/TK5IC0 M)L&2)FV!TD9JFR*&-I@V!@^(!R^Y;<)BN]A.N_U[KITT:T=659"7Q'9\SOTX MU_$=KH6\4RF )OWV4TXTXXM&N7,AR*0N<9ATM)5,$8E0\3R,5ZY'29X$3"?.2,.X-9S^RW&[YEL%9;8V(BN17BSDS.DI'C M&8<@AU@;!HJO%4PASPT1NO&[XG1JDP:X/=ZP?["Q8RRW5,%4Y-^S1* [C. H ($AUKH5H#NH19Z%<"&[I:QV\1%5--P*,6:2+,;V7$?D^.B$')&,DZ^I*!3EB1JZ&CTT=MRX\F92>N,_XTU M+@37J2(SGD#2@(_VX_M[\"YFIDZ/OTG/Q-]+^*G@IR3P7A'?\X,&?Z:'P_VF M\D(ZAK);!\W6?X\&3BN>-8EE("CQ^(EI0KK!U[XI-?6*WX!]&- MNN]E-C_#@5K2&$8.UIX"N0(G?/FBT_?>-R6]3;*H3;)92V0[\G1K>;J6/6CE M*/\X1S@YT\#4SR;!NFT*UB99U";9K"6R'<%ZM6"]O>=IS$2!QP6OVSBG2F7S M#)6;2\'P^GR44E@IXQTI>?VAN]H6X^]-WNZ.Z!": MV3Z:,AWNUK7$0"YL/Z P%(RZ_.O4JW7+,;8W[9/U26@17"TZ3F#GB%!K-BG' M[OALPK8R(Q3?<2"V>8[XUQNR6LMBP)Y--FB%[['\M+GCZLUN M4!8DQU001@''RZEU#:\2&!4*I<1O!._%T3,HJ#PP]KEXN5U,+:>8$(ZSK$!2\_B[!K4:FX7B\?,C^@\E>47F 0D\9]GO9"'74RNTP (OT3:3 M']G^1UP3&A5X*"7ROXYUH8U0HE=;OB7CHN1A+-)ISM 2^D%5KQ4'J_U%;^(K1( ME'O)U:]$Z1O MJLF[3TS> Q\8E6L!$KK "XU^/*P?#.C;RI&--]U';]ZX@X _;>DE\)SO@.NX MGF8^\_/571V=EUE/_K/UEC.\)K6\$L\SDEI_O%?JX%;B7/RIRX3*EJ^W5933 M*[%!*9Y:RH+ ?(>MV;??P,#Y7A<&DV"Q2;#$$%@K8'X3,'\(?7:#5X120E>J M]&:(IE@7APHB*"&*76@W"T(/>N.)O3OV<%\L]%S'&[7%8@U:- [\L"V6:-#< MT(^\1JS%=]3P'0WR5:O^!-E*?]0BZP9AA\6\+Q:Z3A!U6,3GH24GT5ID@X9L M,$CVU&HL5J'.!8.HSUUW)L%BDV")(;!6:,9-:,:O6"C')@-F$BPV"988 FL% M+&P"%KZ\4(:]97SA>7[D=VJ'1LQU/:=;*'5HOC?JU@Z-& Q".-;7CJCA&[VP M4$8:%I'KP@Y9C9@70#_JD#T/+3F)UB(+G<.1V!FDJSH0U5]0=?SF'-/T*Y < M4:'69]G9+/Y2IW+5*DG]@740^KG+SRA:;!0M,876#M)1WP)?L6C6QDR%S21: M;!0M,876#IM[")L[N+:J4*6M4)$Z5%D9J@>\5.L/<)QF2 BR)&FY\/2KS>V5 M *][>)QKA"Z@-X+=$JN1"\?= JL%"_WPB0H+#\T2'#S:SZYSME4UY8BW2NPE M9SE 1YG.-.[+GCBYU09;SHF48!1MPSU92X\MWM& MUDAY(Z];@S10H3]ZH@(=VA\XW/_\#WM5OW%QNFXY*1*?%DD&1=KN.'1'<+@] M,K9+1;V_N?K)T9?1)4=?2I,<&JA^=RK*+&JXN?ZD6R37FS M\<"D9'GYN,9H@7DAH'Y?,B8?7PH#S?7;[%]02P,$% @ D7H$5QO1,^"0 M P Z X !D !X;"]W;W)K&ULK5==;]LX$/PK MA%H4"=!:'Y9EP[4%)):,ZP$%@J:Y>SC< RVM;:(2Z9*4G=ZO/Y)25%ME52=U M'F*2VID19ZF5=G9@_(O8 DCT6!94S)VME+NIZXIL"R46 [8#JJZL&2^Q5%.^ M<<6. \X-J"S

,8J61 *=QR)JBPQ_W8+!3O,'=]Y6OA$ M-ENI%]QXML,;N ?YL+OC:N:V+#DI@0K"*.*PGCLW_G0YT?$FX"\"!W$T1GHG M*\:^Z,F'?.YX^H:@@$QJ!JQ^]K" HM!$ZC:^-IQ.*ZF!Q^,G]J79N]K+"@M8 ML.)ODLOMW)DX*(LDI@FHN9*Y6HAKI9(W!;"P0_$1BBCXS*K4 IS2&WX)-^ M?-2#=]5FVQT'3SN^#7H)_ZSH V]MRCP@J'E?A;GPP/;=GY//?T]]64_/(%, MP7T;_,3+87MZAH9O^,O3@Q(BLH*)B@/ZYV8E)%J29,DER=)+DBTO1':2X[#-<=C''M]QMB?F/:)> M8ZH8F(Q+72]LV:VY(L.E7VK[.(CT0=\?9\T6%(Y.@Y(?@T:>UV%*+4%^Z)T& M+7OW]T+W1JU[HU[WTO4:S,OSR#G$L01TI>KJ#G@&5%[;G*QY_?!H;_[ '_L= M+RUAWF#D33IN6L.BR=@[^NM0IU9,Z 4=>WL->*&]46MO]#)[W^H%]:4EE-$Y MU*-KE%>X?/K4%6S6#2>3C22VHN+T1VDL!QF\!Q M;P*7D /'!1(2RTHR_NV\AZ,F]?U3F[K/1J_TJA506!-IK?J3'\KP,/(Z97C1J_?<;)RCF%Y2<6E1#(X4 M:Y/=HR_Q$OC&]$P"9:RBLOZL:E?;MNS&=".=]5M_NO MZXD_3>NNZSM]W0-^ MQ'Q#J$ %K)64-QBKNLSKOJJ>2+8S?<"*2=55F.%6M:+ =8"ZOF9,/DVT0-O< MQO\#4$L#!!0 ( )%Z!%='.+WQ&P0 'D8 9 >&PO=V]R:W-H965T MH]#WEXJ-,YENJ6KVQ1<(*3*BC/;.0X@9WCE%JS2=5V MQV<3MI%92LD=!V*3YYA_O289VTTM:#TUW*>KM2P;[-FDP"LR)_*AN./JSFXI M29H3*E)& 2?+J74%+V,8E &5XL^4[,3!-2A3>63L!6FV?9>#A]1/]URIYE ML]WOI$G(+WD+EHGJ+]@U6L<"BXV0+&^"U0CRE-:?^$LS$0$^"=VH/?!%2IVW7NU<1%6.+9A+,=X*5:T M1D3B-!/OE.YA'H&W;]Z!-R"EX-.:;02FB9C84HVKI-N+9@S7]1C0,V-PP4=& MY5J F"8DT<1'P_'!0+RMYJ.=%/0T*==H$/A^0R^ Z_P$D(- MUGO\OWOO3(;;KA"WXKDGKY!;6AM4^:+__4')P:TDN?A'5_F:[>G9I0M>B@(O MR-12-B<(WQ)K]N,/,'!^T4V[25AD$A8;@G4*Y+4%\H;HLT],XDR9=O72ZFI0 MAP=5>/G%L9U!A%#@3^SMX>SJ9$'HH*XL.I8A;PR1UY7%&ID/G9'3RCJY^FVN M_F"N?Q2$XVH1-LM2:S>#C',7G4E89!(6&X)U"A&TA0A>T14"DP4R"8M,PF)# ML$Z!1FV!1B]SA3K<_YXKZ&0:5SB6:5U!(QMPA7&;Z_A,5P#_@0>:2I* N<22 M:%UBD'GN(C0)BTS"8D.P3F'"MC#A*[I$:+) )F&125AL"-8I$'3VO_^=E_E$ M$W_XSH:!BV#/)S0RJ#:K?L]/(ITN])Q@U',*K2Z /M1;!3S8\,#SS2+><+7W MUJ8_2#MW%1JE149IL2E:MRYH7Q?TBE[1P$V5R20M,DJ+3=&Z9=KO!N'@7N8$ MOW UW_&AY_7]0B-SW1#V[>)8YGN.?^06QS)O%(Y&SYC%?FL%A_=66K-XCPM, MM:D/PLY>A"9ID5%:;(K6+N6:;]'A(,[G!.\ M(C@Z)7#Z/G$L06,_Z-O$=T&Q1A*$'NHYA'UPE)H3OJK.L 58L V5]9E9V]J> MDU]5I\.]]FMX>0,U[5%YKEX=W>[Q]:'\1\Q7*14@(TO5E7,Q4L7C]3EW?2-9 M41WD/C(I65Y=K@E.""\%ZOF2,?ET4W;0_K=A]@U02P,$% @ D7H$5SU! M/$HZ! Z1@ !D !X;"]W;W)K&ULM9EM;]LV M$,>_"J$50PLLD40]V,YL XFE;BE:+(B;[<6P%XQ$VT(E4B7IN 7VX4M*LFS) MC!!OS)M8HN]^Y/%._^CHZ8ZR+WR#L0#?BISPF;41HKRR;9YL<('X)2TQD=^L M*"N0D+=L;?.289163D5N0\<)[0)EQ)I/J[$[-I_2K<@S@N\8X-NB0.S[#<[I M;F:YUG[@/EMOA!JPY],2K?$2BX?RCLD[NZ6D68$)SR@!#*]FUK5[%;NA^KX&4PCXCC![WW$34*!X"^D,?N/@OW2&H'&H0K?K MV*N-BY! \RFC.\"4M:2IBVKW*V^Y7QE1A;(43'Z;23\Q7^*U3+L ][BD3&1D M#2[ +4EH@<%[1@OP1XD9JE+Z^!W\ANF:H7*3)>!:5B4';R,L4);S=]+K81F! MMV_>@3<@(^#SAFXY(BF?VD*N4LUE)\V*;NH5P6=6Y(%/E(@-!S%)<:KQCX;] MPP%_6^Y.NT5POT4W?\ J #/O;,97ELO M7L7S7EPOMZ26*U4C?W^4YN!6X(+_H\M\S?;U;*6)5[Q$"9Y94O0X9D_8FO_\ MDQLZO^JVW20L,@F+#<$Z"?+;!/E#]/EG*E"^?X17G4=8^S#6M+"BJ?\J3_,@ M=,93^^EXJS5&T'&[1M&IT<0+1EVC^-3(]9S) =6).6AC#@9C;B*4Q=B4IS;2 M0<:YQ6<2%IF$Q89@G42$;2+"5U2'T&2"3,(BD[#8$*R3H%&;H)%1=:AIP; Z M:(Q.U>'42*,.IT8#ZC!N8QZ?J0[@7_! ,H%3L!1(8&WD@\QSB]$D+#()BPW! M.HF9M(F9O*):3$PFR"0L,@F+#<$Z"7*=0W?@&-6+!G?\!$/H!%Y/,71FH1OV MA"72F/DP\/R>:NC,QN%SLN$>M4;N^<(1;YGLTK6Q#]+.K4BCM,@H+39%Z^8% M'O("7U$W&KBI-)FD149IL2E:-TV'3M$=['/.UP[OY#&^\+RQT]<.C1F$_J2O M'1JS8!QZ?>W033J!XV>TX]"%N<-MF%8[%I3)BI5O'/+U ^4Y39!Z!T$D!1]0 MB8AV4P:G.;M:3=(BH[38%*V;L$,+Z0:O*2I&FTNCM,@H+39%ZZ;IT&"Z@^W1 M^:(2GAPX7,B>(@SZJJ*S&X_>[).XG&SG/#$>P)BWUT=%M@MJ[. MS#E(Z):(^E2N'6W/Y:^KT^C>^(U[M7 UXY$ZQZ^.B@_X^D> 3XBM,\)!CE=R M*N=R)#/+ZG/U^D;0LCHX?J1"T**ZW&"48J8,Y/&ULM5==3]LP%/TK5H8FD :)\]64M9&@W0>(:8C"]C#MP;2W;41B9[;; M@K0?/SL):0(AHU)XH7%RS^FYQR?E>K!A_$XL 22Z3V(JAL92RO38-,5T"0D1 M1RP%JI[,&4^(5$N^,$7*@.(PB5'8I4D MA#^<0LPV0P,;CS>NHL52ZAMF.$C) B8@;])+KE9FR3*+$J B8A1QF ^-$WP\ MPIX&9!4_(MB(RC72K=PR=J<79[.A86E%$,-4:@JB/M8P@CC63$K'GX+4*+]3 M ZO7C^R?L^95,[=$P(C%/Z.97 Z-P$ SF)-5+*_8YBL4#64"IRP6V5^T*6HM M TU70K*D "L%243S3W)?&%$!8/<%@%T [-<"G +@9(WFRK*VQD22<,#9!G%= MK=CT1>9-AE;=1%1OXT1R]312.!E.8*$V1:(K2!F7$5V@0W3!Z.+P0KD[0R=" M@!3H]@%] ;;@)%U&4W2B\B+0_A@DB6)QH! WDS':WSM >RBBZ'K)5H+0F1B8 M4BG4WV-."S6GN1K[!37G*WJ$'.L#LBW;:8"/VN%CF"HXSN!V'6XJ7TIS[-(< M.^-S7FW.&J')U)2,3OIE9S;K>96[^>QR(E4Q@:ZOT3P-=@A._? M8=_ZV-1X1V0U&YS2!J>-/;QFDL1Y*N)**IIZSHG\C$C_@JQ#VPU\[ [,=;6; MAC*OUPN\LJRFTRUUNJTZOZ? 2;9-Q<8U2FSEV'5;.B*KM>N5[7IOF$ZO2QLZ M(JO9X)!)8!O+ N>%GU>\G5)P^YC2&-ASDA+:*+:5;.=-ZHBMWOIV\,'N M6^:UTY&H*[:Z%=NA"+<.&SOEU7LVAEI/L_J\!#ONDZ2:E>.7/OM^(WP148%B MF"N4==13)#P_3N8+R=+L1';+I#K?99=+=00'K@O4\SEC\G&A#WGEH3[\!U!+ M P04 " "1>@17N060D7H$ !:' &0 'AL+W=O^OLY);CPZ,/Y%; B1X&N64C&V-E)N[VU; M+#8DP^*.;0E55U:,9UBJ4[ZVQ983O"Q(66HCQPGL#"?4FHR*MB<^&;&=3!-* MGC@0NRS#_-\'DK+#V(+6L>$Y66]DWF!/1EN\)G,B/V^?N#JS:Y5EDA$J$D8! M)ZNQ]1'>QS#,"07B]X0Q+?O*X'%M./B*2DH7,);#ZVY,I2=-< M28WCGTK4JOO,B>?'1_4?B^!5,"]8D"E+_TB6I?*9'7XB54!^ MKK=@J2A^P:'".A98[(1D6456(\@26O[CK]5$G!&4CIZ *@)J$[P+!+_(I0A&Z7L1<3%V&))R/.#H#G:*66'Q2S7[#5?"4T7RASR=751/'D M9$[6*NT2/),MXS*A:_ ]B!*!UVM.UKC()5NIJWM"=P2\CXC$22H^*-3G>03> MO_L WH&$@D\;MA.8+L7(EFI4N;:]J$;P4(X 71B!"V:,RHT ,5V2I88?]?.# M'KZM9J.>$G2YFO%,KZG\^N#A:$#FK"HBX,>4.(O"8LUL!\Z R<&M:(U:]C]7MC?:1_5\^7&4N7 M:C'JXNV5>.V:,RD6F12+#8DU\A#4>0AN: J!R029%(M,BL6&Q!H)&M0)&KS- M%$JZ?W9_>L,A#%N>T$7YKNNWG"/JHJ#C#()!RQ)TL&#@NWI+&-:1#GLCG?XZ M!3.\V"3T@AWTTE^[VDR*12;%8D-BC1R$=0["&]I!:#)!)L4BDV*Q(;%&@J!S M>LMWWF8(%;_I""ALW<13/0RUWQ(TL##P'-BR!!W,<]&%MP1X5M/ WFC="#SQ MA,H+EM#/?NV2,ZH6&56+3:DU\X!.>4 W-(9*W%2:3*I%1M5B4VK--)U*/-A; MH%QA#F[G/D7J&=\N(30P&(:!VS:'+LQ#KNNTS:$+M695(N,JL6FU)IY.-5RT+^E.1@M\XRJ14;58E-JS32=2CW8 M6ZA<80Z!YCYUVZ6$!N6K,;:MH8L:PF&[DM"@PJ$WN& ,IYH)]A=-O\D-X<=/ MG=I(>_FO7G,FU2*C:K$IM68F3C4='-[2&HR6?$;5(J-JL2FU9II.91_L+5JN ML(:P^QFP^]:@ W4*BB[(:WM,K 'YL/V^8)_ME62$KXM-*@$6;$=E^5F\;JTW MPCX6VS^M]@=X/X6:]BC?."OV9D[RY:[;#/-U0@5(R4IUY=P-E(/Q$IX#U/458_)XDG=0;R=._@-02P,$% @ D7H$5\:* MZ.M< P S!4 T !X;"]S='EL97,N>&ULW5A=;]HP%/TK4;I.K30UA(Q M5D#:D"I-VJ9*[*D,J,M7GKV>O#DY:=V=7^[&SPQP[@=.TM%BX,("8>'R:^3QN3 M[AXDO4<9$^ZYA7___(5*K[''Q)-M<3/Z5"M9WBE"Z[8<-./@D7S=T$G<2 D= M0P[J&ASVLT*L2S'R;4"KDYQZ]X0/_!'A;"P9L#*2,[ZTX38$)@4OI*?T/:#3 MA1"I?E@XM#VX/6J=G(E"FMPV@_T]KH?O *L>&&2<-P;;O@T,^R51BDIQI3MF ML D^@+RZ?;LLM<.I),NPW?'7!'/12<:%3*ELTH3^*C3LMC.V _J:: MU=Z4[3Q)URO9?:$^S/5TA.E#8=-K23.V,/U%UAC U$-^>2L4FFY'ODI2W=*%6Y;3(<,_M(_3\;]=Y M2@65A&^:UK7_DE?YR8ZC[G-9-D^57<-.C_6!X*6;[!R#R?@83!Y%3?:.P61R M!":[S_;4/-QD=!0+&;Y(DT%]7-LX$VZ=")NH!R?O@?\%SO%\G=0;SQE73-2] M&4M3*AX<#+6\(F/]I^J6OAZ?THS,N;IMP(&_;G^F*9OG23/J&A:B'K5N?X+I MA7%S[->YF$CI@J:CNBNG8]/T=$-GK3] V$6NS,>-8!R+N1' L#R8 XQC65B> M_VD^/70^%L.\]9Q(#^7T4(YEN9"1^6)YW)Q$?]PS39(HBF-L14*NQS $P( L !?3T\$MP>:4#M.*2VBZD8_1!2:5K5 MN %(MB6/:(7->=I3W; M+T]!;X"O.DQQ0FE(2S,.\,W2?S+W\PPU1>5*(Y5;&GC3Y?YVX$G1H2)8%II% MR=.B':5_'@17B99),C<$ "1'P #P 'AL+W=O( M +MNWO=+)T7M%U*&1O>+P>"DWPAELB^?M^<:NS[>L4%605D#A;'@7LDG_^=X MW&4KY=6#TBH\#[-N6\N,-MV=%)'0.,7 M:NDS9D0CA]FY74D7[P !0%8' R0'8T%@N0$)']#R$F$B'_PS,[8N6V6"+(D(,N#04X6 O?' M8P+R^' M*?P"09X0D"=I(;\*KSJDL9,>JG8U$-H' NU#6K0[64$%=E95MC4! M @X8K8'MJFM(!/F1@/R8%O(&SGMT9;U_QT:FLHUD2^GBF])8 WT107XB(#^E MA1S!$UVYCW$S7OVS=KZ26G-A*EQ? ^H_!ZDQ;P4RK%[H5O)KJ7P+?3( MB,DYI)[)EKX1XEZ!I::S![N32NAC0&(P21Y[8'&/QS%:>C:7K M_AZ'69L,@4S!D)0X\L3F&$'_JJ&[39VHH]S.G(.07H\1,"/EC3RQ.$B[?2_P ML)H21Y%8'%AFFY<8*P]C4N(H$HOCI=_6 \*C:93)SB2%G*4D5LA>OVTAWV%* MRBM%8J_\%MU>,LHH16*CO&:\#2C&I(Q2)#8**;[==YN23/'6DMG[O"G;%(EM M0X4='AJZ;RF\!Z[$0ZO+W+*/#RQ>0C,VV50&),R#T]L M'@+S/ZGPK)%3YN&)S4-@QD-XY9LR3YG8//2X#9NGI,Q3)C8/C8G-4U+F*9.O ME_U95]F;0R4EG#+UXMF+P6\/MB$V090/SPQCDE]C4L]X]F!N&O;2V09C4L(I M$PMG'^:5-?/>E5I!+\68E'S*-Y_Q].+RE9C/G9P+K.^2DD_9R:>__01Y(]HWL@$ %0< : >&PO7W)E;',O=V]R:V)O;VLN>&UL M+G)E;'/-V3MNPD 4A>&M("\@PWU 0A12I:&-V( %PT,!;'DF"NP^" HX5HHT M:$YES5B^_JM/UOCM,^[JO&T.:;-MT^"XWQW2M-KDW+Z&D!:;N*_34]/&P_G. MJNGV=3XONW5HZ\57O8Y!A\-QZ.YG5.]O]S,'\U,;_S.Q6:VVB_C1++[W\9#_ M&!Q^FNXK;6+,U6!>=^N8IU4X[F[;*5PN\G2>7 UFRVG5S992A=)!"D%:/L@@ MR,H'.01Y^: 1!(W*!XTA:%P^Z!F"GLL'O4#02_F@"01-R@?)$&4<$B3UL";0 M6I!K(?!:$&PA$%N0;"$P6Q!M(5!;D&TA<%L0;B&06Y!N(;!;$&\AT%M1;R70 M6U%O)=!;>Q_;!'HKZJT$>BOJK01Z*^JM!'HKZJT$>BOJK01Z*^JM!'HKZJT$ M>AOJ;01Z&^IM!'H;ZFT$>EOOL(1 ;T.]C4!O0[V-0&]#O8U ;T.]C4!O0[V- M0&]#O8U ;T>]G4!O1[V=0&]'O9U ;T>]G4!O[QUV$^CMJ+<3Z.VHMQ/H[:BW M/U+OE$^[F&X]US6^_Y%4Y_.S\?;ZR_*ZV6/G@G. GXCOOU!+ P04 " "1 M>@179>&9M;UW7VSI M;#)^VUKRO4U=-7Z2%"'8!\9\5E"M?6HL-7%D;ERM0WQT"V9UMM0+8F(X'+', M-(&:, AMC60Z?J*Y7E6A][R)KWUIFDGBJ/))[W$WL3? M4@;[A#2N[.;XHK2^'RC3S>9E1;K)5'9>DWCK2N2^(0EVENZ+]\\DA[C#MKOSJ_*[,N< X<^:, M]?'$'%T>=SB2=O7 QD+D0GG^$X^)L?35WT?M:>>4_S([;N^'<@17:*+\ K @ $0 @ &O M9&]C4')O<',O8V]R92YX;6Q02P$"% ,4 " "1>@17F5R<(Q & "<)P M$P @ '- 0 >&PO=&AE;64O=&AE;64Q+GAM;%!+ 0(4 Q0 M ( )%Z!%=!Q-.DT 4 ,H> 8 " @0X( !X;"]W;W)K M@17NM?^E_D& "/'@ M& @($4#@ >&PO=V]R:W-H965T&UL4$L! M A0#% @ D7H$5QZXWIHV P [ H !@ ("!0Q4 'AL M+W=OO[LKG3 8 M )P> 8 " @:\8 !X;"]W;W)K@17=MS*"OL, #-@ & @($Q M'P >&PO=V]R:W-H965T&UL4$L! A0#% @ D7H$5]NO MFF U!P &A\ !@ ("!8BP 'AL+W=OL>$J^,04 &,, 8 M " @@17A+1RWFP" #J!0 & @($T.0 >&PO=V]R:W-H965T M&UL4$L! A0#% @ D7H$5W/K6D?'! L P !@ M ("!UCL 'AL+W=O@4 (L, 9 " @=- !X;"]W;W)K M&UL4$L! A0#% @ D7H$5Y,)ZF/ !0 0PX M !D ("!A$8 'AL+W=O@17:?]=RP(% "K# &0 @(%[3 M>&PO=V]R:W-H965TLHJK# M3P, <' 9 " @;11 !X;"]W;W)K&UL4$L! A0#% @ D7H$5S@17GZE""L$# #X"0 &0 @(&T7P >&PO=V]R:W-H965T MMM/ONC 0 *<, 9 M " @:QC !X;"]W;W)K&UL4$L! A0# M% @ D7H$5UH7]AVT!0 ?@T !D ("!;V@ 'AL+W=O M@17]%<;9+ " !X M"0 &0 @(%:;@ >&PO=V]R:W-H965T&UL4$L! A0#% @ D7H$5][. M,MV. P *@@ !D ("!O', 'AL+W=O@17G=Y@:V$$ #-"0 &0 M @(&!=P >&PO=V]R:W-H965T&UL4$L! A0#% @ D7H$5[/B\QEB! K0H !D M ("!2G\ 'AL+W=O@17,I7&JI<" "B!0 &0 @('C@P >&PO M=V]R:W-H965TJ&UL4$L! A0#% @ D7H$5^;TKV)W P ;0@ !D ("! M*8P 'AL+W=O@17 M^UR9Y:<$ !,# &0 @('7CP >&PO=V]R:W-H965T*1ZU0( "<( 9 M " @;64 !X;"]W;W)K&UL4$L! A0#% M @ D7H$5Z7A]R.8!0 UR$ !D ("!P9< 'AL+W=O&PO=V]R:W-H965TFOA\Q1P0 +T< 9 " @?&D !X M;"]W;W)K&UL4$L! A0#% @ D7H$5VT]/BKR M @ P@D !D ("!;ZD 'AL+W=O@17W3T1/L@$ #6'@ &0 M@(&8K >&PO=V]R:W-H965TQ !X;"]W;W)K&UL4$L! A0#% @ D7H$5_7RVF*H @ %P< !D M ("!F+8 'AL+W=O@17IB=UD6T" !$!@ &0 @(%WN0 >&PO=V]R M:W-H965T&UL M4$L! A0#% @ D7H$5S!ESMBR P V X !D ("!5\0 M 'AL+W=O@17 [GZ MET % !I(@ &0 @(% R >&PO=V]R:W-H965TH-7)K[ 0 !T> 9 M " @;?- !X;"]W;W)K&UL4$L! A0#% @ MD7H$5TF&PO=V]R:W-H965T&UL4$L! A0#% @ D7H$5T1@ !D ("!Y]X 'AL+W=O@17/4$\2CH$ #I& &0 @($Y MXP >&PO=V]R:W-H965T&UL4$L! A0#% @ D7H$5[D%D)%Z! 6AP !D M ("!,.L 'AL+W=O@17QHKHZUP# #,%0 #0 @ 'A[P >&PO7BKL

)EDDR-P0 )$? / M " 5'T !X;"]W;W)K8F]O:RYX;6Q02P$"% ,4 " "1 M>@17N2/:-[(! !4' &@ @ &U^ >&PO7W)E;',O=V]R M:V)O;VLN>&UL+G)E;'-02P$"% ,4 " "1>@179>&9M; XML 59 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 60 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.23.2 html 181 229 1 false 44 0 false 5 false false R1.htm 0000001 - Document - Cover Sheet http://www.protolabs.com/role/Cover Cover Cover 1 false false R2.htm 0000002 - Statement - Consolidated Balance Sheets Sheet http://www.protolabs.com/role/ConsolidatedBalanceSheets Consolidated Balance Sheets Statements 2 false false R3.htm 0000003 - Statement - Consolidated Balance Sheets (Parenthetical) Sheet http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical Consolidated Balance Sheets (Parenthetical) Statements 3 false false R4.htm 0000004 - Statement - Consolidated Statements of Comprehensive Income (Unaudited) Sheet http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited Consolidated Statements of Comprehensive Income (Unaudited) Statements 4 false false R5.htm 0000005 - Statement - Consolidated Statements of Shareholders' Equity Sheet http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity Consolidated Statements of Shareholders' Equity Statements 5 false false R6.htm 0000006 - Statement - Consolidated Statements of Cash Flows (Unaudited) Sheet http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited Consolidated Statements of Cash Flows (Unaudited) Statements 6 false false R7.htm 0000007 - Disclosure - Basis of Presentation Sheet http://www.protolabs.com/role/BasisofPresentation Basis of Presentation Notes 7 false false R8.htm 0000008 - Disclosure - Recent Accounting Pronouncements Sheet http://www.protolabs.com/role/RecentAccountingPronouncements Recent Accounting Pronouncements Notes 8 false false R9.htm 0000009 - Disclosure - Net (Loss) Income per Common Share Sheet http://www.protolabs.com/role/NetLossIncomeperCommonShare Net (Loss) Income per Common Share Notes 9 false false R10.htm 0000010 - Disclosure - Intangible Assets, Goodwill and Other Sheet http://www.protolabs.com/role/IntangibleAssetsGoodwillandOther Intangible Assets, Goodwill and Other Notes 10 false false R11.htm 0000011 - Disclosure - Fair Value Measures and Disclosures Sheet http://www.protolabs.com/role/FairValueMeasuresandDisclosures Fair Value Measures and Disclosures Notes 11 false false R12.htm 0000012 - Disclosure - Marketable Securities Sheet http://www.protolabs.com/role/MarketableSecurities Marketable Securities Notes 12 false false R13.htm 0000013 - Disclosure - Inventory Sheet http://www.protolabs.com/role/Inventory Inventory Notes 13 false false R14.htm 0000014 - Disclosure - Stock-Based Compensation Sheet http://www.protolabs.com/role/StockBasedCompensation Stock-Based Compensation Notes 14 false false R15.htm 0000015 - Disclosure - Accumulated Other Comprehensive Income (Loss) Sheet http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLoss Accumulated Other Comprehensive Income (Loss) Notes 15 false false R16.htm 0000016 - Disclosure - Income Taxes Sheet http://www.protolabs.com/role/IncomeTaxes Income Taxes Notes 16 false false R17.htm 0000017 - 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 9954701 - Disclosure - Net (Loss) Income per Common Share (Tables) Sheet http://www.protolabs.com/role/NetLossIncomeperCommonShareTables Net (Loss) Income per Common Share (Tables) Tables http://www.protolabs.com/role/NetLossIncomeperCommonShare 20 false false R21.htm 9954702 - Disclosure - Goodwill and Other Intangible Assets (Tables) Sheet http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsTables Goodwill and Other Intangible Assets (Tables) Tables 21 false false R22.htm 9954703 - Disclosure - Fair Value Measurements (Tables) Sheet http://www.protolabs.com/role/FairValueMeasurementsTables Fair Value Measurements (Tables) Tables 22 false false R23.htm 9954704 - 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 9954705 - Disclosure - Inventory (Tables) Sheet http://www.protolabs.com/role/InventoryTables Inventory (Tables) Tables http://www.protolabs.com/role/Inventory 24 false false R25.htm 9954706 - 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 9954707 - 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 9954708 - 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 9954709 - Disclosure - Net (Loss) Income per Common Share - Narrative (Details) Sheet http://www.protolabs.com/role/NetLossIncomeperCommonShareNarrativeDetails Net (Loss) Income per Common Share - Narrative (Details) Details http://www.protolabs.com/role/NetLossIncomeperCommonShareTables 28 false false R29.htm 9954710 - Disclosure - Net (Loss) Income per Common Share -Schedule of Computation Of Basic and Diluted Net Income Per Share (Details) Sheet http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails Net (Loss) Income per Common Share -Schedule of Computation Of Basic and Diluted Net Income Per Share (Details) Details http://www.protolabs.com/role/NetLossIncomeperCommonShareTables 29 false false R30.htm 9954711 - 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 30 false false R31.htm 9954712 - Disclosure - Goodwill and Other Intangible Assets - Narrative (Details) Sheet http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails Goodwill and Other Intangible Assets - Narrative (Details) Details 31 false false R32.htm 9954713 - Disclosure - Goodwill and Other Intangible Assets - Future Amortization Expense (Details) Sheet http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsFutureAmortizationExpenseDetails Goodwill and Other Intangible Assets - Future Amortization Expense (Details) Details 32 false false R33.htm 9954714 - Disclosure - Fair Value Measurements - Financial Assets Measured At Fair Value On A Recurring Basis (Details) Sheet http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails Fair Value Measurements - Financial Assets Measured At Fair Value On A Recurring Basis (Details) Details 33 false false R34.htm 9954715 - 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 9954716 - 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 9954717 - Disclosure - Inventory (Details) Sheet http://www.protolabs.com/role/InventoryDetails Inventory (Details) Details http://www.protolabs.com/role/InventoryTables 36 false false R37.htm 9954718 - Disclosure - Stock-Based Compensation - Narrative (Details) Sheet http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails Stock-Based Compensation - Narrative (Details) Details 37 false false R38.htm 9954719 - 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 9954720 - 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 9954721 - 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 9954722 - Disclosure - Accumulated Other Comprehensive Income (Loss) - Narrative (Details) Sheet http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossNarrativeDetails Accumulated Other Comprehensive Income (Loss) - Narrative (Details) Details http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossTables 41 false false R42.htm 9954723 - Disclosure - Accumulated Other Comprehensive Income (Loss) - Changes In Accumulated Other Comprehensive Income (Loss) (Details) Sheet http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossChangesInAccumulatedOtherComprehensiveIncomeLossDetails Accumulated Other Comprehensive Income (Loss) - Changes In Accumulated Other Comprehensive Income (Loss) (Details) Details http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossTables 42 false false R43.htm 9954724 - Disclosure - Income Taxes (Details) Sheet http://www.protolabs.com/role/IncomeTaxesDetails Income Taxes (Details) Details http://www.protolabs.com/role/IncomeTaxes 43 false false R44.htm 9954725 - Disclosure - Segment Reporting - Revenue by Geographic Areas (Details) Sheet http://www.protolabs.com/role/SegmentReportingRevenuebyGeographicAreasDetails Segment Reporting - Revenue by Geographic Areas (Details) Details 44 false false R45.htm 9954726 - Disclosure - Segment Reporting - Income From Operation by Geographic Areas (Details) Sheet http://www.protolabs.com/role/SegmentReportingIncomeFromOperationbyGeographicAreasDetails Segment Reporting - Income From Operation by Geographic Areas (Details) Details 45 false false R46.htm 9954727 - Disclosure - Segment Reporting - Long-Lived Assets by Geographic Areas (Details) Sheet http://www.protolabs.com/role/SegmentReportingLongLivedAssetsbyGeographicAreasDetails Segment Reporting - Long-Lived Assets by Geographic Areas (Details) Details 46 false false R47.htm 9954728 - Disclosure - Segment Reporting - Disaggregation of Revenue (Details) Sheet http://www.protolabs.com/role/SegmentReportingDisaggregationofRevenueDetails Segment Reporting - Disaggregation of Revenue (Details) Details 47 false false All Reports Book All Reports [ix-0514-Hidden-Fact-Eligible-For-Transform] WARN: 1 fact(s) appearing in ix:hidden were eligible for transformation: us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1 - prlb-20230630.htm 4 prlb-20230630.htm prlb-20230630.xsd prlb-20230630_cal.xml prlb-20230630_def.xml prlb-20230630_lab.xml prlb-20230630_pre.xml prlb-20230630xexx311.htm prlb-20230630xexx312.htm prlb-20230630xexx321.htm http://fasb.org/us-gaap/2023 http://xbrl.sec.gov/dei/2023 http://xbrl.sec.gov/ecd/2023 true true JSON 64 MetaLinks.json IDEA: XBRL DOCUMENT { "instance": { "prlb-20230630.htm": { "axisCustom": 0, "axisStandard": 15, "baseTaxonomies": { "http://fasb.org/us-gaap/2023": 707, "http://xbrl.sec.gov/dei/2023": 29, "http://xbrl.sec.gov/ecd/2023": 4 }, "contextCount": 181, "dts": { "calculationLink": { "local": [ "prlb-20230630_cal.xml" ] }, "definitionLink": { "local": [ "prlb-20230630_def.xml" ] }, "inline": { "local": [ "prlb-20230630.htm" ] }, "labelLink": { "local": [ "prlb-20230630_lab.xml" ] }, "presentationLink": { "local": [ "prlb-20230630_pre.xml" ] }, "schema": { "local": [ "prlb-20230630.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/2022-03-31/types.xsd", "https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd", "https://xbrl.fasb.org/srt/2023/elts/srt-roles-2023.xsd", "https://xbrl.fasb.org/srt/2023/elts/srt-types-2023.xsd", "https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd", "https://xbrl.fasb.org/us-gaap/2023/elts/us-roles-2023.xsd", "https://xbrl.fasb.org/us-gaap/2023/elts/us-types-2023.xsd", "https://xbrl.sec.gov/country/2023/country-2023.xsd", "https://xbrl.sec.gov/dei/2023/dei-2023.xsd", "https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd" ] } }, "elementCount": 447, "entityCount": 1, "hidden": { "http://fasb.org/us-gaap/2023": 1, "http://xbrl.sec.gov/dei/2023": 5, "total": 6 }, "keyCustom": 10, "keyStandard": 219, "memberCustom": 15, "memberStandard": 29, "nsprefix": "prlb", "nsuri": "http://www.protolabs.com/20230630", "report": { "R1": { "firstAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "dei:DocumentType", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "document", "isDefault": "true", "longName": "0000001 - Document - Cover", "menuCat": "Cover", "order": "1", "role": "http://www.protolabs.com/role/Cover", "shortName": "Cover", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "dei:DocumentType", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R10": { "firstAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "0000010 - Disclosure - Intangible Assets, Goodwill and Other", "menuCat": "Notes", "order": "10", "role": "http://www.protolabs.com/role/IntangibleAssetsGoodwillandOther", "shortName": "Intangible Assets, Goodwill and Other", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R11": { "firstAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:FairValueDisclosuresTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "0000011 - Disclosure - Fair Value Measures and Disclosures", "menuCat": "Notes", "order": "11", "role": "http://www.protolabs.com/role/FairValueMeasuresandDisclosures", "shortName": "Fair Value Measures and Disclosures", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:FairValueDisclosuresTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R12": { "firstAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:InvestmentTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "0000012 - Disclosure - Marketable Securities", "menuCat": "Notes", "order": "12", "role": "http://www.protolabs.com/role/MarketableSecurities", "shortName": "Marketable Securities", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:InvestmentTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R13": { "firstAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:InventoryDisclosureTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "0000013 - Disclosure - Inventory", "menuCat": "Notes", "order": "13", "role": "http://www.protolabs.com/role/Inventory", "shortName": "Inventory", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:InventoryDisclosureTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R14": { "firstAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "0000014 - Disclosure - Stock-Based Compensation", "menuCat": "Notes", "order": "14", "role": "http://www.protolabs.com/role/StockBasedCompensation", "shortName": "Stock-Based Compensation", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R15": { "firstAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:DisclosureOfReclassificationAmountTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "0000015 - Disclosure - Accumulated Other Comprehensive Income (Loss)", "menuCat": "Notes", "order": "15", "role": "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLoss", "shortName": "Accumulated Other Comprehensive Income (Loss)", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:DisclosureOfReclassificationAmountTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R16": { "firstAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:IncomeTaxDisclosureTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "0000016 - Disclosure - Income Taxes", "menuCat": "Notes", "order": "16", "role": "http://www.protolabs.com/role/IncomeTaxes", "shortName": "Income Taxes", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:IncomeTaxDisclosureTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R17": { "firstAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:SegmentReportingDisclosureTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "0000017 - Disclosure - Segment Reporting", "menuCat": "Notes", "order": "17", "role": "http://www.protolabs.com/role/SegmentReporting", "shortName": "Segment Reporting", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:SegmentReportingDisclosureTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R18": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:NetIncomeLoss", "reportCount": 1, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "995410 - Disclosure - Pay vs Performance Disclosure", "menuCat": "Notes", "order": "18", "role": "http://xbrl.sec.gov/ecd/role/PvpDisclosure", "shortName": "Pay vs Performance Disclosure", "subGroupType": "", "uniqueAnchor": null }, "R19": { "firstAnchor": { "ancestors": [ "ecd:NonRule10b51ArrAdoptedFlag", "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": null, "first": true, "lang": "en-US", "name": "ecd:Rule10b51ArrAdoptedFlag", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "995445 - Disclosure - Insider Trading Arrangements", "menuCat": "Notes", "order": "19", "role": "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements", "shortName": "Insider Trading Arrangements", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "ecd:NonRule10b51ArrAdoptedFlag", "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": null, "first": true, "lang": "en-US", "name": "ecd:Rule10b51ArrAdoptedFlag", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R2": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" }, "groupType": "statement", "isDefault": "false", "longName": "0000002 - Statement - Consolidated Balance Sheets", "menuCat": "Statements", "order": "2", "role": "http://www.protolabs.com/role/ConsolidatedBalanceSheets", "shortName": "Consolidated Balance Sheets", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R20": { "firstAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954701 - Disclosure - Net (Loss) Income per Common Share (Tables)", "menuCat": "Tables", "order": "20", "role": "http://www.protolabs.com/role/NetLossIncomeperCommonShareTables", "shortName": "Net (Loss) Income per Common Share (Tables)", "subGroupType": "tables", "uniqueAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R21": { "firstAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954702 - Disclosure - Goodwill and Other Intangible Assets (Tables)", "menuCat": "Tables", "order": "21", "role": "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsTables", "shortName": "Goodwill and Other Intangible Assets (Tables)", "subGroupType": "tables", "uniqueAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R22": { "firstAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954703 - Disclosure - Fair Value Measurements (Tables)", "menuCat": "Tables", "order": "22", "role": "http://www.protolabs.com/role/FairValueMeasurementsTables", "shortName": "Fair Value Measurements (Tables)", "subGroupType": "tables", "uniqueAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R23": { "firstAnchor": { "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954704 - Disclosure - Marketable Securities (Tables)", "menuCat": "Tables", "order": "23", "role": "http://www.protolabs.com/role/MarketableSecuritiesTables", "shortName": "Marketable Securities (Tables)", "subGroupType": "tables", "uniqueAnchor": { "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R24": { "firstAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954705 - Disclosure - Inventory (Tables)", "menuCat": "Tables", "order": "24", "role": "http://www.protolabs.com/role/InventoryTables", "shortName": "Inventory (Tables)", "subGroupType": "tables", "uniqueAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R25": { "firstAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954706 - Disclosure - Stock-Based Compensation (Tables)", "menuCat": "Tables", "order": "25", "role": "http://www.protolabs.com/role/StockBasedCompensationTables", "shortName": "Stock-Based Compensation (Tables)", "subGroupType": "tables", "uniqueAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R26": { "firstAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954707 - Disclosure - Accumulated Other Comprehensive Income (Loss) (Tables)", "menuCat": "Tables", "order": "26", "role": "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossTables", "shortName": "Accumulated Other Comprehensive Income (Loss) (Tables)", "subGroupType": "tables", "uniqueAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R27": { "firstAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954708 - Disclosure - Segment Reporting (Tables)", "menuCat": "Tables", "order": "27", "role": "http://www.protolabs.com/role/SegmentReportingTables", "shortName": "Segment Reporting (Tables)", "subGroupType": "tables", "uniqueAnchor": { "ancestors": [ "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R28": { "firstAnchor": { "ancestors": [ "span", "ix:continuation", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": "0", "first": true, "lang": "en-US", "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount", "reportCount": 1, "unitRef": "shares", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954709 - Disclosure - Net (Loss) Income per Common Share - Narrative (Details)", "menuCat": "Details", "order": "28", "role": "http://www.protolabs.com/role/NetLossIncomeperCommonShareNarrativeDetails", "shortName": "Net (Loss) Income per Common Share - Narrative (Details)", "subGroupType": "details", "uniqueAnchor": null }, "R29": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:NetIncomeLoss", "reportCount": 1, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954710 - Disclosure - Net (Loss) Income per Common Share -Schedule of Computation Of Basic and Diluted Net Income Per Share (Details)", "menuCat": "Details", "order": "29", "role": "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails", "shortName": "Net (Loss) Income per Common Share -Schedule of Computation Of Basic and Diluted Net Income Per Share (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": "INF", "lang": "en-US", "name": "us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements", "reportCount": 1, "unique": true, "unitRef": "shares", "xsiNil": "false" } }, "R3": { "firstAnchor": { "ancestors": [ "span", "div", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" }, "groupType": "statement", "isDefault": "false", "longName": "0000003 - Statement - Consolidated Balance Sheets (Parenthetical)", "menuCat": "Statements", "order": "3", "role": "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical", "shortName": "Consolidated Balance Sheets (Parenthetical)", "subGroupType": "parenthetical", "uniqueAnchor": { "ancestors": [ "span", "div", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R30": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:FiniteLivedIntangibleAssetsGross", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954711 - Disclosure - Goodwill and Other Intangible Assets - Schedule of Intangible Assets Other Than Goodwill (Details)", "menuCat": "Details", "order": "30", "role": "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails", "shortName": "Goodwill and Other Intangible Assets - Schedule of Intangible Assets Other Than Goodwill (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:FiniteLivedIntangibleAssetsGross", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R31": { "firstAnchor": { "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": "-5", "first": true, "lang": "en-US", "name": "us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954712 - Disclosure - Goodwill and Other Intangible Assets - Narrative (Details)", "menuCat": "Details", "order": "31", "role": "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails", "shortName": "Goodwill and Other Intangible Assets - Narrative (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": "-5", "first": true, "lang": "en-US", "name": "us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R32": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954713 - Disclosure - Goodwill and Other Intangible Assets - Future Amortization Expense (Details)", "menuCat": "Details", "order": "32", "role": "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsFutureAmortizationExpenseDetails", "shortName": "Goodwill and Other Intangible Assets - Future Amortization Expense (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R33": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:AvailableForSaleSecuritiesDebtSecurities", "reportCount": 1, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954714 - Disclosure - Fair Value Measurements - Financial Assets Measured At Fair Value On A Recurring Basis (Details)", "menuCat": "Details", "order": "33", "role": "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails", "shortName": "Fair Value Measurements - Financial Assets Measured At Fair Value On A Recurring Basis (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-86", "decimals": "-3", "lang": "en-US", "name": "us-gaap:AvailableForSaleSecuritiesDebtSecurities", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R34": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954715 - Disclosure - Marketable Securities - Short-Term and Long-Term Marketable Securities (Details)", "menuCat": "Details", "order": "34", "role": "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails", "shortName": "Marketable Securities - Short-Term and Long-Term Marketable Securities (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "ix:continuation", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R35": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954716 - Disclosure - Marketable Securities - Maturities of Available-For-Sale Debt Securities (Details)", "menuCat": "Details", "order": "35", "role": "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails", "shortName": "Marketable Securities - Maturities of Available-For-Sale Debt Securities (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R36": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfInventoryCurrentTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:InventoryGross", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954717 - Disclosure - Inventory (Details)", "menuCat": "Details", "order": "36", "role": "http://www.protolabs.com/role/InventoryDetails", "shortName": "Inventory (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfInventoryCurrentTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:InventoryGross", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R37": { "firstAnchor": { "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": "-5", "first": true, "lang": "en-US", "name": "us-gaap:AllocatedShareBasedCompensationExpense", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954718 - Disclosure - Stock-Based Compensation - Narrative (Details)", "menuCat": "Details", "order": "37", "role": "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "shortName": "Stock-Based Compensation - Narrative (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": "-5", "first": true, "lang": "en-US", "name": "us-gaap:AllocatedShareBasedCompensationExpense", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R38": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-4", "decimals": "INF", "first": true, "lang": "en-US", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber", "reportCount": 1, "unique": true, "unitRef": "shares", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954719 - Disclosure - Stock-Based Compensation - Option Activity (Details)", "menuCat": "Details", "order": "38", "role": "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails", "shortName": "Stock-Based Compensation - Option Activity (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-4", "decimals": "INF", "first": true, "lang": "en-US", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber", "reportCount": 1, "unique": true, "unitRef": "shares", "xsiNil": "false" } }, "R39": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-124", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954720 - Disclosure - Stock-Based Compensation - Weighted Average Assumptions (Details)", "menuCat": "Details", "order": "39", "role": "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails", "shortName": "Stock-Based Compensation - Weighted Average Assumptions (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-124", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R4": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax", "reportCount": 1, "unitRef": "usd", "xsiNil": "false" }, "groupType": "statement", "isDefault": "false", "longName": "0000004 - Statement - Consolidated Statements of Comprehensive Income (Unaudited)", "menuCat": "Statements", "order": "4", "role": "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited", "shortName": "Consolidated Statements of Comprehensive Income (Unaudited)", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": "-3", "lang": "en-US", "name": "us-gaap:CostOfGoodsAndServicesSold", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R40": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-110", "decimals": "INF", "first": true, "lang": "en-US", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber", "reportCount": 1, "unique": true, "unitRef": "shares", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954721 - Disclosure - Stock-Based Compensation - Stock Activity (Details)", "menuCat": "Details", "order": "40", "role": "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails", "shortName": "Stock-Based Compensation - Stock Activity (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-110", "decimals": "INF", "first": true, "lang": "en-US", "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber", "reportCount": 1, "unique": true, "unitRef": "shares", "xsiNil": "false" } }, "R41": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-127", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent", "reportCount": 1, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954722 - Disclosure - Accumulated Other Comprehensive Income (Loss) - Narrative (Details)", "menuCat": "Details", "order": "41", "role": "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossNarrativeDetails", "shortName": "Accumulated Other Comprehensive Income (Loss) - Narrative (Details)", "subGroupType": "details", "uniqueAnchor": null }, "R42": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-21", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:StockholdersEquity", "reportCount": 1, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954723 - Disclosure - Accumulated Other Comprehensive Income (Loss) - Changes In Accumulated Other Comprehensive Income (Loss) (Details)", "menuCat": "Details", "order": "42", "role": "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossChangesInAccumulatedOtherComprehensiveIncomeLossDetails", "shortName": "Accumulated Other Comprehensive Income (Loss) - Changes In Accumulated Other Comprehensive Income (Loss) (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-127", "decimals": "-3", "lang": "en-US", "name": "us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R43": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:IncomeTaxExpenseBenefit", "reportCount": 1, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954724 - Disclosure - Income Taxes (Details)", "menuCat": "Details", "order": "43", "role": "http://www.protolabs.com/role/IncomeTaxesDetails", "shortName": "Income Taxes (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "div", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": "3", "lang": "en-US", "name": "us-gaap:EffectiveIncomeTaxRateContinuingOperations", "reportCount": 1, "unique": true, "unitRef": "number", "xsiNil": "false" } }, "R44": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax", "reportCount": 1, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954725 - Disclosure - Segment Reporting - Revenue by Geographic Areas (Details)", "menuCat": "Details", "order": "44", "role": "http://www.protolabs.com/role/SegmentReportingRevenuebyGeographicAreasDetails", "shortName": "Segment Reporting - Revenue by Geographic Areas (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-146", "decimals": "-3", "lang": "en-US", "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R45": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:OperatingIncomeLoss", "reportCount": 1, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954726 - Disclosure - Segment Reporting - Income From Operation by Geographic Areas (Details)", "menuCat": "Details", "order": "45", "role": "http://www.protolabs.com/role/SegmentReportingIncomeFromOperationbyGeographicAreasDetails", "shortName": "Segment Reporting - Income From Operation by Geographic Areas (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "prlb:IncomeFromOperationsByGeographicAreaTableTextBlock", "div", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-146", "decimals": "-3", "lang": "en-US", "name": "us-gaap:OperatingIncomeLoss", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R46": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-3", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:PropertyPlantAndEquipmentNet", "reportCount": 1, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954727 - Disclosure - Segment Reporting - Long-Lived Assets by Geographic Areas (Details)", "menuCat": "Details", "order": "46", "role": "http://www.protolabs.com/role/SegmentReportingLongLivedAssetsbyGeographicAreasDetails", "shortName": "Segment Reporting - Long-Lived Assets by Geographic Areas (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-160", "decimals": "-3", "lang": "en-US", "name": "us-gaap:PropertyPlantAndEquipmentNet", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R47": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-5", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax", "reportCount": 1, "unitRef": "usd", "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "9954728 - Disclosure - Segment Reporting - Disaggregation of Revenue (Details)", "menuCat": "Details", "order": "47", "role": "http://www.protolabs.com/role/SegmentReportingDisaggregationofRevenueDetails", "shortName": "Segment Reporting - Disaggregation of Revenue (Details)", "subGroupType": "details", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:DisaggregationOfRevenueTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-162", "decimals": "-3", "lang": "en-US", "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R5": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-30", "decimals": "INF", "first": true, "lang": "en-US", "name": "us-gaap:CommonStockSharesOutstanding", "reportCount": 1, "unitRef": "shares", "xsiNil": "false" }, "groupType": "statement", "isDefault": "false", "longName": "0000005 - Statement - Consolidated Statements of Shareholders' Equity", "menuCat": "Statements", "order": "5", "role": "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity", "shortName": "Consolidated Statements of Shareholders' Equity", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-35", "decimals": "INF", "lang": "en-US", "name": "us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation", "reportCount": 1, "unique": true, "unitRef": "shares", "xsiNil": "false" } }, "R6": { "firstAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock", "ix:continuation", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": "-3", "first": true, "lang": "en-US", "name": "us-gaap:NetIncomeLoss", "reportCount": 1, "unitRef": "usd", "xsiNil": "false" }, "groupType": "statement", "isDefault": "false", "longName": "0000006 - Statement - Consolidated Statements of Cash Flows (Unaudited)", "menuCat": "Statements", "order": "6", "role": "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited", "shortName": "Consolidated Statements of Cash Flows (Unaudited)", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "td", "tr", "table", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": "-3", "lang": "en-US", "name": "us-gaap:DepreciationDepletionAndAmortization", "reportCount": 1, "unique": true, "unitRef": "usd", "xsiNil": "false" } }, "R7": { "firstAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "0000007 - Disclosure - Basis of Presentation", "menuCat": "Notes", "order": "7", "role": "http://www.protolabs.com/role/BasisofPresentation", "shortName": "Basis of Presentation", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R8": { "firstAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:SignificantAccountingPoliciesTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "0000008 - Disclosure - Recent Accounting Pronouncements", "menuCat": "Notes", "order": "8", "role": "http://www.protolabs.com/role/RecentAccountingPronouncements", "shortName": "Recent Accounting Pronouncements", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:SignificantAccountingPoliciesTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } }, "R9": { "firstAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:EarningsPerShareTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" }, "groupType": "disclosure", "isDefault": "false", "longName": "0000009 - Disclosure - Net (Loss) Income per Common Share", "menuCat": "Notes", "order": "9", "role": "http://www.protolabs.com/role/NetLossIncomeperCommonShare", "shortName": "Net (Loss) Income per Common Share", "subGroupType": "", "uniqueAnchor": { "ancestors": [ "span", "div", "body", "html" ], "baseRef": "prlb-20230630.htm", "contextRef": "c-1", "decimals": null, "first": true, "lang": "en-US", "name": "us-gaap:EarningsPerShareTextBlock", "reportCount": 1, "unique": true, "unitRef": null, "xsiNil": "false" } } }, "segmentCount": 44, "tag": { "country_US": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "UNITED STATES", "terseLabel": "UNITED STATES" } } }, "localname": "US", "nsuri": "http://xbrl.sec.gov/country/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "xbrltype": "domainItemType" }, "dei_AmendmentFlag": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Boolean flag that is true when the XBRL content amends previously-filed or accepted submission.", "label": "Amendment Flag", "terseLabel": "Amendment Flag" } } }, "localname": "AmendmentFlag", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "booleanItemType" }, "dei_CityAreaCode": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Area code of city", "label": "City Area Code", "terseLabel": "City Area Code" } } }, "localname": "CityAreaCode", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "normalizedStringItemType" }, "dei_CoverAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Cover page.", "label": "Cover [Abstract]", "terseLabel": "Cover [Abstract]" } } }, "localname": "CoverAbstract", "nsuri": "http://xbrl.sec.gov/dei/2023", "xbrltype": "stringItemType" }, "dei_CurrentFiscalYearEndDate": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "End date of current fiscal year in the format --MM-DD.", "label": "Current Fiscal Year End Date", "terseLabel": "Current Fiscal Year End Date" } } }, "localname": "CurrentFiscalYearEndDate", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "gMonthDayItemType" }, "dei_DocumentFiscalPeriodFocus": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Document Fiscal Period Focus", "terseLabel": "Document Fiscal Period Focus" } } }, "localname": "DocumentFiscalPeriodFocus", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "fiscalPeriodItemType" }, "dei_DocumentFiscalYearFocus": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Document Fiscal Year Focus", "terseLabel": "Document Fiscal Year Focus" } } }, "localname": "DocumentFiscalYearFocus", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "gYearItemType" }, "dei_DocumentPeriodEndDate": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Document Period End Date", "terseLabel": "Document Period End Date" } } }, "localname": "DocumentPeriodEndDate", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "dateItemType" }, "dei_DocumentQuarterlyReport": { "auth_ref": [ "r612" ], "lang": { "en-us": { "role": { "documentation": "Boolean flag that is true only for a form used as an quarterly report.", "label": "Document Quarterly Report", "terseLabel": "Document Quarterly Report" } } }, "localname": "DocumentQuarterlyReport", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "booleanItemType" }, "dei_DocumentTransitionReport": { "auth_ref": [ "r645" ], "lang": { "en-us": { "role": { "documentation": "Boolean flag that is true only for a form used as a transition report.", "label": "Document Transition Report", "terseLabel": "Document Transition Report" } } }, "localname": "DocumentTransitionReport", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "booleanItemType" }, "dei_DocumentType": { "auth_ref": [], "lang": { "en-us": { "role": { "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'.", "label": "Document Type", "terseLabel": "Document Type" } } }, "localname": "DocumentType", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "submissionTypeItemType" }, "dei_EntityAddressAddressLine1": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Address Line 1 such as Attn, Building Name, Street Name", "label": "Entity Address, Address Line One", "terseLabel": "Entity Address, Address Line One" } } }, "localname": "EntityAddressAddressLine1", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "normalizedStringItemType" }, "dei_EntityAddressCityOrTown": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Name of the City or Town", "label": "Entity Address, City or Town", "terseLabel": "Entity Address, City or Town" } } }, "localname": "EntityAddressCityOrTown", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "normalizedStringItemType" }, "dei_EntityAddressPostalZipCode": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Code for the postal or zip code", "label": "Entity Address, Postal Zip Code", "terseLabel": "Entity Address, Postal Zip Code" } } }, "localname": "EntityAddressPostalZipCode", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "normalizedStringItemType" }, "dei_EntityAddressStateOrProvince": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Name of the state or province.", "label": "Entity Address, State or Province", "terseLabel": "Entity Address, State or Province" } } }, "localname": "EntityAddressStateOrProvince", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "stateOrProvinceItemType" }, "dei_EntityCentralIndexKey": { "auth_ref": [ "r610" ], "lang": { "en-us": { "role": { "documentation": "A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK.", "label": "Entity Central Index Key", "terseLabel": "Entity Central Index Key" } } }, "localname": "EntityCentralIndexKey", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "centralIndexKeyItemType" }, "dei_EntityCommonStockSharesOutstanding": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Entity Common Stock, Shares Outstanding", "terseLabel": "Entity Common Stock, Shares Outstanding" } } }, "localname": "EntityCommonStockSharesOutstanding", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "sharesItemType" }, "dei_EntityCurrentReportingStatus": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Entity Current Reporting Status", "terseLabel": "Entity Current Reporting Status" } } }, "localname": "EntityCurrentReportingStatus", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "yesNoItemType" }, "dei_EntityEmergingGrowthCompany": { "auth_ref": [ "r610" ], "lang": { "en-us": { "role": { "documentation": "Indicate if registrant meets the emerging growth company criteria.", "label": "Entity Emerging Growth Company", "terseLabel": "Entity Emerging Growth Company" } } }, "localname": "EntityEmergingGrowthCompany", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "booleanItemType" }, "dei_EntityFileNumber": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Entity File Number", "terseLabel": "Entity File Number" } } }, "localname": "EntityFileNumber", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "fileNumberItemType" }, "dei_EntityFilerCategory": { "auth_ref": [ "r610" ], "lang": { "en-us": { "role": { "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.", "label": "Entity Filer Category", "terseLabel": "Entity Filer Category" } } }, "localname": "EntityFilerCategory", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "filerCategoryItemType" }, "dei_EntityIncorporationStateCountryCode": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Two-character EDGAR code representing the state or country of incorporation.", "label": "Entity Incorporation, State or Country Code", "terseLabel": "Entity Incorporation, State or Country Code" } } }, "localname": "EntityIncorporationStateCountryCode", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "edgarStateCountryItemType" }, "dei_EntityInteractiveDataCurrent": { "auth_ref": [ "r684" ], "lang": { "en-us": { "role": { "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).", "label": "Entity Interactive Data Current", "terseLabel": "Entity Interactive Data Current" } } }, "localname": "EntityInteractiveDataCurrent", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "yesNoItemType" }, "dei_EntityRegistrantName": { "auth_ref": [ "r610" ], "lang": { "en-us": { "role": { "documentation": "The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC.", "label": "Entity Registrant Name", "terseLabel": "Entity Registrant Name" } } }, "localname": "EntityRegistrantName", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "normalizedStringItemType" }, "dei_EntityShellCompany": { "auth_ref": [ "r610" ], "lang": { "en-us": { "role": { "documentation": "Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act.", "label": "Entity Shell Company", "terseLabel": "Entity Shell Company" } } }, "localname": "EntityShellCompany", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "booleanItemType" }, "dei_EntitySmallBusiness": { "auth_ref": [ "r610" ], "lang": { "en-us": { "role": { "documentation": "Indicates that the company is a Smaller Reporting Company (SRC).", "label": "Entity Small Business", "terseLabel": "Entity Small Business" } } }, "localname": "EntitySmallBusiness", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "booleanItemType" }, "dei_EntityTaxIdentificationNumber": { "auth_ref": [ "r610" ], "lang": { "en-us": { "role": { "documentation": "The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS.", "label": "Entity Tax Identification Number", "terseLabel": "Entity Tax Identification Number" } } }, "localname": "EntityTaxIdentificationNumber", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "employerIdItemType" }, "dei_LocalPhoneNumber": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Local phone number for entity.", "label": "Local Phone Number", "terseLabel": "Local Phone Number" } } }, "localname": "LocalPhoneNumber", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "normalizedStringItemType" }, "dei_Security12bTitle": { "auth_ref": [ "r609" ], "lang": { "en-us": { "role": { "documentation": "Title of a 12(b) registered security.", "label": "Title of 12(b) Security", "terseLabel": "Title of 12(b) Security" } } }, "localname": "Security12bTitle", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "securityTitleItemType" }, "dei_SecurityExchangeName": { "auth_ref": [ "r611" ], "lang": { "en-us": { "role": { "documentation": "Name of the Exchange on which a security is registered.", "label": "Security Exchange Name", "terseLabel": "Security Exchange Name" } } }, "localname": "SecurityExchangeName", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "edgarExchangeCodeItemType" }, "dei_TradingSymbol": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Trading symbol of an instrument as listed on an exchange.", "label": "Trading Symbol", "terseLabel": "Trading Symbol" } } }, "localname": "TradingSymbol", "nsuri": "http://xbrl.sec.gov/dei/2023", "presentation": [ "http://www.protolabs.com/role/Cover" ], "xbrltype": "tradingSymbolItemType" }, "ecd_Additional402vDisclosureTextBlock": { "auth_ref": [ "r646" ], "lang": { "en-us": { "role": { "label": "Additional 402(v) Disclosure [Text Block]", "terseLabel": "Additional 402(v) Disclosure" } } }, "localname": "Additional402vDisclosureTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_AdjToCompAmt": { "auth_ref": [ "r652" ], "lang": { "en-us": { "role": { "label": "Adjustment to Compensation Amount", "terseLabel": "Adjustment to Compensation, Amount" } } }, "localname": "AdjToCompAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_AdjToCompAxis": { "auth_ref": [ "r652" ], "lang": { "en-us": { "role": { "label": "Adjustment to Compensation [Axis]", "terseLabel": "Adjustment to Compensation:" } } }, "localname": "AdjToCompAxis", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "stringItemType" }, "ecd_AdjToNonPeoNeoCompFnTextBlock": { "auth_ref": [ "r652" ], "lang": { "en-us": { "role": { "label": "Adjustment to Non-PEO NEO Compensation Footnote [Text Block]", "terseLabel": "Adjustment to Non-PEO NEO Compensation Footnote" } } }, "localname": "AdjToNonPeoNeoCompFnTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_AdjToPeoCompFnTextBlock": { "auth_ref": [ "r652" ], "lang": { "en-us": { "role": { "label": "Adjustment To PEO Compensation, Footnote [Text Block]", "terseLabel": "Adjustment To PEO Compensation, Footnote" } } }, "localname": "AdjToPeoCompFnTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_AggtErrCompAmt": { "auth_ref": [ "r617", "r628", "r638", "r663" ], "lang": { "en-us": { "role": { "label": "Aggregate Erroneous Compensation Amount", "terseLabel": "Aggregate Erroneous Compensation Amount" } } }, "localname": "AggtErrCompAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_AggtErrCompNotYetDeterminedTextBlock": { "auth_ref": [ "r620", "r631", "r641", "r666" ], "lang": { "en-us": { "role": { "label": "Aggregate Erroneous Compensation Not Yet Determined [Text Block]", "terseLabel": "Aggregate Erroneous Compensation Not Yet Determined" } } }, "localname": "AggtErrCompNotYetDeterminedTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_AllAdjToCompMember": { "auth_ref": [ "r652" ], "lang": { "en-us": { "role": { "label": "All Adjustments to Compensation [Member]", "terseLabel": "All Adjustments to Compensation" } } }, "localname": "AllAdjToCompMember", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "domainItemType" }, "ecd_AllExecutiveCategoriesMember": { "auth_ref": [ "r659" ], "lang": { "en-us": { "role": { "label": "All Executive Categories [Member]", "terseLabel": "All Executive Categories" } } }, "localname": "AllExecutiveCategoriesMember", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "domainItemType" }, "ecd_AllIndividualsMember": { "auth_ref": [ "r624", "r632", "r642", "r659", "r667", "r671", "r679" ], "lang": { "en-us": { "role": { "label": "All Individuals [Member]", "terseLabel": "All Individuals" } } }, "localname": "AllIndividualsMember", "nsuri": "http://xbrl.sec.gov/ecd/2023", "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" ], "xbrltype": "domainItemType" }, "ecd_AllTradingArrangementsMember": { "auth_ref": [ "r677" ], "lang": { "en-us": { "role": { "label": "All Trading Arrangements [Member]", "terseLabel": "All Trading Arrangements" } } }, "localname": "AllTradingArrangementsMember", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "domainItemType" }, "ecd_AwardExrcPrice": { "auth_ref": [ "r674" ], "lang": { "en-us": { "role": { "label": "Award Exercise Price", "terseLabel": "Exercise Price" } } }, "localname": "AwardExrcPrice", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "perShareItemType" }, "ecd_AwardGrantDateFairValue": { "auth_ref": [ "r675" ], "lang": { "en-us": { "role": { "label": "Award Grant Date Fair Value", "terseLabel": "Fair Value as of Grant Date" } } }, "localname": "AwardGrantDateFairValue", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_AwardTmgDiscLineItems": { "auth_ref": [ "r670" ], "lang": { "en-us": { "role": { "label": "Award Timing Disclosures [Line Items]" } } }, "localname": "AwardTmgDiscLineItems", "nsuri": "http://xbrl.sec.gov/ecd/2023", "xbrltype": "stringItemType" }, "ecd_AwardTmgHowMnpiCnsdrdTextBlock": { "auth_ref": [ "r670" ], "lang": { "en-us": { "role": { "label": "Award Timing, How MNPI Considered [Text Block]", "terseLabel": "Award Timing, How MNPI Considered" } } }, "localname": "AwardTmgHowMnpiCnsdrdTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_AwardTmgMethodTextBlock": { "auth_ref": [ "r670" ], "lang": { "en-us": { "role": { "label": "Award Timing Method [Text Block]", "terseLabel": "Award Timing Method" } } }, "localname": "AwardTmgMethodTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_AwardTmgMnpiCnsdrdFlag": { "auth_ref": [ "r670" ], "lang": { "en-us": { "role": { "label": "Award Timing MNPI Considered [Flag]", "terseLabel": "Award Timing MNPI Considered" } } }, "localname": "AwardTmgMnpiCnsdrdFlag", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "booleanItemType" }, "ecd_AwardTmgMnpiDiscTextBlock": { "auth_ref": [ "r670" ], "lang": { "en-us": { "role": { "label": "Award Timing MNPI Disclosure [Text Block]", "terseLabel": "Award Timing MNPI Disclosure" } } }, "localname": "AwardTmgMnpiDiscTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_AwardTmgPredtrmndFlag": { "auth_ref": [ "r670" ], "lang": { "en-us": { "role": { "label": "Award Timing Predetermined [Flag]", "terseLabel": "Award Timing Predetermined" } } }, "localname": "AwardTmgPredtrmndFlag", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "booleanItemType" }, "ecd_AwardUndrlygSecuritiesAmt": { "auth_ref": [ "r673" ], "lang": { "en-us": { "role": { "label": "Award Underlying Securities Amount", "terseLabel": "Underlying Securities" } } }, "localname": "AwardUndrlygSecuritiesAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "decimalItemType" }, "ecd_AwardsCloseToMnpiDiscIndName": { "auth_ref": [ "r672" ], "lang": { "en-us": { "role": { "label": "Awards Close in Time to MNPI Disclosures, Individual Name", "terseLabel": "Name" } } }, "localname": "AwardsCloseToMnpiDiscIndName", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "stringItemType" }, "ecd_AwardsCloseToMnpiDiscTable": { "auth_ref": [ "r671" ], "lang": { "en-us": { "role": { "label": "Awards Close in Time to MNPI Disclosures [Table]", "terseLabel": "Awards Close in Time to MNPI Disclosures" } } }, "localname": "AwardsCloseToMnpiDiscTable", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "stringItemType" }, "ecd_AwardsCloseToMnpiDiscTableTextBlock": { "auth_ref": [ "r671" ], "lang": { "en-us": { "role": { "label": "Awards Close in Time to MNPI Disclosures [Table Text Block]", "terseLabel": "Awards Close in Time to MNPI Disclosures, Table" } } }, "localname": "AwardsCloseToMnpiDiscTableTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_ChangedPeerGroupFnTextBlock": { "auth_ref": [ "r650" ], "lang": { "en-us": { "role": { "label": "Changed Peer Group, Footnote [Text Block]", "terseLabel": "Changed Peer Group, Footnote" } } }, "localname": "ChangedPeerGroupFnTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_CoSelectedMeasureAmt": { "auth_ref": [ "r651" ], "lang": { "en-us": { "role": { "label": "Company Selected Measure Amount", "terseLabel": "Company Selected Measure Amount" } } }, "localname": "CoSelectedMeasureAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "decimalItemType" }, "ecd_CoSelectedMeasureName": { "auth_ref": [ "r651" ], "lang": { "en-us": { "role": { "label": "Company Selected Measure Name", "terseLabel": "Company Selected Measure Name" } } }, "localname": "CoSelectedMeasureName", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "normalizedStringItemType" }, "ecd_CompActuallyPaidVsCoSelectedMeasureTextBlock": { "auth_ref": [ "r656" ], "lang": { "en-us": { "role": { "label": "Compensation Actually Paid vs. Company Selected Measure [Text Block]", "terseLabel": "Compensation Actually Paid vs. Company Selected Measure" } } }, "localname": "CompActuallyPaidVsCoSelectedMeasureTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_CompActuallyPaidVsNetIncomeTextBlock": { "auth_ref": [ "r655" ], "lang": { "en-us": { "role": { "label": "Compensation Actually Paid vs. Net Income [Text Block]", "terseLabel": "Compensation Actually Paid vs. Net Income" } } }, "localname": "CompActuallyPaidVsNetIncomeTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_CompActuallyPaidVsOtherMeasureTextBlock": { "auth_ref": [ "r657" ], "lang": { "en-us": { "role": { "label": "Compensation Actually Paid vs. Other Measure [Text Block]", "terseLabel": "Compensation Actually Paid vs. Other Measure" } } }, "localname": "CompActuallyPaidVsOtherMeasureTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_CompActuallyPaidVsTotalShareholderRtnTextBlock": { "auth_ref": [ "r654" ], "lang": { "en-us": { "role": { "label": "Compensation Actually Paid vs. Total Shareholder Return [Text Block]", "terseLabel": "Compensation Actually Paid vs. Total Shareholder Return" } } }, "localname": "CompActuallyPaidVsTotalShareholderRtnTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_EquityValuationAssumptionDifferenceFnTextBlock": { "auth_ref": [ "r653" ], "lang": { "en-us": { "role": { "label": "Equity Valuation Assumption Difference, Footnote [Text Block]", "terseLabel": "Equity Valuation Assumption Difference, Footnote" } } }, "localname": "EquityValuationAssumptionDifferenceFnTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_ErrCompAnalysisTextBlock": { "auth_ref": [ "r617", "r628", "r638", "r663" ], "lang": { "en-us": { "role": { "label": "Erroneous Compensation Analysis [Text Block]", "terseLabel": "Erroneous Compensation Analysis" } } }, "localname": "ErrCompAnalysisTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_ErrCompRecoveryTable": { "auth_ref": [ "r614", "r625", "r635", "r660" ], "lang": { "en-us": { "role": { "label": "Erroneously Awarded Compensation Recovery [Table]", "terseLabel": "Erroneously Awarded Compensation Recovery" } } }, "localname": "ErrCompRecoveryTable", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "stringItemType" }, "ecd_ExecutiveCategoryAxis": { "auth_ref": [ "r659" ], "lang": { "en-us": { "role": { "label": "Executive Category [Axis]", "terseLabel": "Executive Category:" } } }, "localname": "ExecutiveCategoryAxis", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "stringItemType" }, "ecd_ForgoneRecoveryDueToDisqualificationOfTaxBenefitsAmt": { "auth_ref": [ "r621", "r632", "r642", "r667" ], "lang": { "en-us": { "role": { "label": "Forgone Recovery due to Disqualification of Tax Benefits, Amount", "terseLabel": "Forgone Recovery due to Disqualification of Tax Benefits, Amount" } } }, "localname": "ForgoneRecoveryDueToDisqualificationOfTaxBenefitsAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_ForgoneRecoveryDueToExpenseOfEnforcementAmt": { "auth_ref": [ "r621", "r632", "r642", "r667" ], "lang": { "en-us": { "role": { "label": "Forgone Recovery due to Expense of Enforcement, Amount", "terseLabel": "Forgone Recovery due to Expense of Enforcement, Amount" } } }, "localname": "ForgoneRecoveryDueToExpenseOfEnforcementAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_ForgoneRecoveryDueToViolationOfHomeCountryLawAmt": { "auth_ref": [ "r621", "r632", "r642", "r667" ], "lang": { "en-us": { "role": { "label": "Forgone Recovery due to Violation of Home Country Law, Amount", "terseLabel": "Forgone Recovery due to Violation of Home Country Law, Amount" } } }, "localname": "ForgoneRecoveryDueToViolationOfHomeCountryLawAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_ForgoneRecoveryExplanationOfImpracticabilityTextBlock": { "auth_ref": [ "r621", "r632", "r642", "r667" ], "lang": { "en-us": { "role": { "label": "Forgone Recovery, Explanation of Impracticability [Text Block]", "terseLabel": "Forgone Recovery, Explanation of Impracticability" } } }, "localname": "ForgoneRecoveryExplanationOfImpracticabilityTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_ForgoneRecoveryIndName": { "auth_ref": [ "r621", "r632", "r642", "r667" ], "lang": { "en-us": { "role": { "label": "Forgone Recovery, Individual Name", "terseLabel": "Name" } } }, "localname": "ForgoneRecoveryIndName", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "stringItemType" }, "ecd_IndividualAxis": { "auth_ref": [ "r624", "r632", "r642", "r659", "r667", "r671", "r679" ], "lang": { "en-us": { "role": { "label": "Individual [Axis]", "terseLabel": "Individual:" } } }, "localname": "IndividualAxis", "nsuri": "http://xbrl.sec.gov/ecd/2023", "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" ], "xbrltype": "stringItemType" }, "ecd_InsiderTradingArrLineItems": { "auth_ref": [ "r677" ], "lang": { "en-us": { "role": { "label": "Insider Trading Arrangements [Line Items]" } } }, "localname": "InsiderTradingArrLineItems", "nsuri": "http://xbrl.sec.gov/ecd/2023", "xbrltype": "stringItemType" }, "ecd_InsiderTradingPoliciesProcLineItems": { "auth_ref": [ "r613", "r683" ], "lang": { "en-us": { "role": { "label": "Insider Trading Policies and Procedures [Line Items]" } } }, "localname": "InsiderTradingPoliciesProcLineItems", "nsuri": "http://xbrl.sec.gov/ecd/2023", "xbrltype": "stringItemType" }, "ecd_InsiderTrdPoliciesProcAdoptedFlag": { "auth_ref": [ "r613", "r683" ], "lang": { "en-us": { "role": { "label": "Insider Trading Policies and Procedures Adopted [Flag]", "terseLabel": "Insider Trading Policies and Procedures Adopted" } } }, "localname": "InsiderTrdPoliciesProcAdoptedFlag", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingPoliciesProc" ], "xbrltype": "booleanItemType" }, "ecd_InsiderTrdPoliciesProcNotAdoptedTextBlock": { "auth_ref": [ "r613", "r683" ], "lang": { "en-us": { "role": { "label": "Insider Trading Policies and Procedures Not Adopted [Text Block]", "terseLabel": "Insider Trading Policies and Procedures Not Adopted" } } }, "localname": "InsiderTrdPoliciesProcNotAdoptedTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingPoliciesProc" ], "xbrltype": "textBlockItemType" }, "ecd_MeasureAxis": { "auth_ref": [ "r651" ], "lang": { "en-us": { "role": { "label": "Measure [Axis]", "terseLabel": "Measure:" } } }, "localname": "MeasureAxis", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "stringItemType" }, "ecd_MeasureName": { "auth_ref": [ "r651" ], "lang": { "en-us": { "role": { "label": "Measure Name", "terseLabel": "Name" } } }, "localname": "MeasureName", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "normalizedStringItemType" }, "ecd_MnpiDiscTimedForCompValFlag": { "auth_ref": [ "r670" ], "lang": { "en-us": { "role": { "label": "MNPI Disclosure Timed for Compensation Value [Flag]", "terseLabel": "MNPI Disclosure Timed for Compensation Value" } } }, "localname": "MnpiDiscTimedForCompValFlag", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "booleanItemType" }, "ecd_MtrlTermsOfTrdArrTextBlock": { "auth_ref": [ "r678" ], "lang": { "en-us": { "role": { "label": "Material Terms of Trading Arrangement [Text Block]", "terseLabel": "Material Terms of Trading Arrangement" } } }, "localname": "MtrlTermsOfTrdArrTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "textBlockItemType" }, "ecd_NamedExecutiveOfficersFnTextBlock": { "auth_ref": [ "r652" ], "lang": { "en-us": { "role": { "label": "Named Executive Officers, Footnote [Text Block]", "terseLabel": "Named Executive Officers, Footnote" } } }, "localname": "NamedExecutiveOfficersFnTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_NonGaapMeasureDescriptionTextBlock": { "auth_ref": [ "r651" ], "lang": { "en-us": { "role": { "label": "Non-GAAP Measure Description [Text Block]", "terseLabel": "Non-GAAP Measure Description" } } }, "localname": "NonGaapMeasureDescriptionTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_NonNeosMember": { "auth_ref": [ "r621", "r632", "r642", "r659", "r667" ], "lang": { "en-us": { "role": { "label": "Non-NEOs [Member]", "terseLabel": "Non-NEOs" } } }, "localname": "NonNeosMember", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "domainItemType" }, "ecd_NonPeoNeoAvgCompActuallyPaidAmt": { "auth_ref": [ "r649" ], "lang": { "en-us": { "role": { "label": "Non-PEO NEO Average Compensation Actually Paid Amount", "terseLabel": "Non-PEO NEO Average Compensation Actually Paid Amount" } } }, "localname": "NonPeoNeoAvgCompActuallyPaidAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_NonPeoNeoAvgTotalCompAmt": { "auth_ref": [ "r648" ], "lang": { "en-us": { "role": { "label": "Non-PEO NEO Average Total Compensation Amount", "terseLabel": "Non-PEO NEO Average Total Compensation Amount" } } }, "localname": "NonPeoNeoAvgTotalCompAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_NonPeoNeoMember": { "auth_ref": [ "r659" ], "lang": { "en-us": { "role": { "label": "Non-PEO NEO [Member]", "terseLabel": "Non-PEO NEO" } } }, "localname": "NonPeoNeoMember", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "domainItemType" }, "ecd_NonRule10b51ArrAdoptedFlag": { "auth_ref": [ "r678" ], "lang": { "en-us": { "role": { "label": "Non-Rule 10b5-1 Arrangement Adopted [Flag]", "terseLabel": "Non-Rule 10b5-1 Arrangement Adopted" } } }, "localname": "NonRule10b51ArrAdoptedFlag", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "booleanItemType" }, "ecd_NonRule10b51ArrTrmntdFlag": { "auth_ref": [ "r678" ], "lang": { "en-us": { "role": { "label": "Non-Rule 10b5-1 Arrangement Terminated [Flag]", "terseLabel": "Non-Rule 10b5-1 Arrangement Terminated" } } }, "localname": "NonRule10b51ArrTrmntdFlag", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "booleanItemType" }, "ecd_OtherPerfMeasureAmt": { "auth_ref": [ "r651" ], "lang": { "en-us": { "role": { "label": "Other Performance Measure, Amount", "terseLabel": "Other Performance Measure, Amount" } } }, "localname": "OtherPerfMeasureAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "decimalItemType" }, "ecd_OutstandingAggtErrCompAmt": { "auth_ref": [ "r619", "r630", "r640", "r665" ], "lang": { "en-us": { "role": { "label": "Outstanding Aggregate Erroneous Compensation Amount", "terseLabel": "Outstanding Aggregate Erroneous Compensation Amount" } } }, "localname": "OutstandingAggtErrCompAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_OutstandingRecoveryCompAmt": { "auth_ref": [ "r622", "r633", "r643", "r668" ], "lang": { "en-us": { "role": { "label": "Outstanding Recovery Compensation Amount", "terseLabel": "Compensation Amount" } } }, "localname": "OutstandingRecoveryCompAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_OutstandingRecoveryIndName": { "auth_ref": [ "r622", "r633", "r643", "r668" ], "lang": { "en-us": { "role": { "label": "Outstanding Recovery, Individual Name", "terseLabel": "Name" } } }, "localname": "OutstandingRecoveryIndName", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "stringItemType" }, "ecd_PayVsPerformanceDisclosureLineItems": { "auth_ref": [ "r647" ], "lang": { "en-us": { "role": { "label": "Pay vs Performance Disclosure [Line Items]" } } }, "localname": "PayVsPerformanceDisclosureLineItems", "nsuri": "http://xbrl.sec.gov/ecd/2023", "xbrltype": "stringItemType" }, "ecd_PeerGroupIssuersFnTextBlock": { "auth_ref": [ "r650" ], "lang": { "en-us": { "role": { "label": "Peer Group Issuers, Footnote [Text Block]", "terseLabel": "Peer Group Issuers, Footnote" } } }, "localname": "PeerGroupIssuersFnTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_PeerGroupTotalShareholderRtnAmt": { "auth_ref": [ "r650" ], "lang": { "en-us": { "role": { "label": "Peer Group Total Shareholder Return Amount", "terseLabel": "Peer Group Total Shareholder Return Amount" } } }, "localname": "PeerGroupTotalShareholderRtnAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_PeoActuallyPaidCompAmt": { "auth_ref": [ "r649" ], "lang": { "en-us": { "role": { "label": "PEO Actually Paid Compensation Amount", "terseLabel": "PEO Actually Paid Compensation Amount" } } }, "localname": "PeoActuallyPaidCompAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_PeoMember": { "auth_ref": [ "r659" ], "lang": { "en-us": { "role": { "label": "PEO [Member]", "terseLabel": "PEO" } } }, "localname": "PeoMember", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "domainItemType" }, "ecd_PeoName": { "auth_ref": [ "r652" ], "lang": { "en-us": { "role": { "label": "PEO Name", "terseLabel": "PEO Name" } } }, "localname": "PeoName", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "normalizedStringItemType" }, "ecd_PeoTotalCompAmt": { "auth_ref": [ "r648" ], "lang": { "en-us": { "role": { "label": "PEO Total Compensation Amount", "terseLabel": "PEO Total Compensation Amount" } } }, "localname": "PeoTotalCompAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_PvpTable": { "auth_ref": [ "r647" ], "lang": { "en-us": { "role": { "label": "Pay vs Performance Disclosure [Table]", "terseLabel": "Pay vs Performance Disclosure" } } }, "localname": "PvpTable", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "stringItemType" }, "ecd_PvpTableTextBlock": { "auth_ref": [ "r647" ], "lang": { "en-us": { "role": { "label": "Pay vs Performance [Table Text Block]", "terseLabel": "Pay vs Performance Disclosure, Table" } } }, "localname": "PvpTableTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_RecoveryOfErrCompDisclosureLineItems": { "auth_ref": [ "r614", "r625", "r635", "r660" ], "lang": { "en-us": { "role": { "label": "Recovery of Erroneously Awarded Compensation Disclosure [Line Items]" } } }, "localname": "RecoveryOfErrCompDisclosureLineItems", "nsuri": "http://xbrl.sec.gov/ecd/2023", "xbrltype": "stringItemType" }, "ecd_RestatementDateAxis": { "auth_ref": [ "r615", "r626", "r636", "r661" ], "lang": { "en-us": { "role": { "label": "Restatement Determination Date [Axis]", "terseLabel": "Restatement Determination Date:" } } }, "localname": "RestatementDateAxis", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "stringItemType" }, "ecd_RestatementDeterminationDate": { "auth_ref": [ "r616", "r627", "r637", "r662" ], "lang": { "en-us": { "role": { "label": "Restatement Determination Date", "terseLabel": "Restatement Determination Date" } } }, "localname": "RestatementDeterminationDate", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "dateItemType" }, "ecd_RestatementDoesNotRequireRecoveryTextBlock": { "auth_ref": [ "r623", "r634", "r644", "r669" ], "lang": { "en-us": { "role": { "label": "Restatement Does Not Require Recovery [Text Block]", "terseLabel": "Restatement does not require Recovery" } } }, "localname": "RestatementDoesNotRequireRecoveryTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_Rule10b51ArrAdoptedFlag": { "auth_ref": [ "r678" ], "lang": { "en-us": { "role": { "label": "Rule 10b5-1 Arrangement Adopted [Flag]", "terseLabel": "Rule 10b5-1 Arrangement Adopted" } } }, "localname": "Rule10b51ArrAdoptedFlag", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "booleanItemType" }, "ecd_Rule10b51ArrTrmntdFlag": { "auth_ref": [ "r678" ], "lang": { "en-us": { "role": { "label": "Rule 10b5-1 Arrangement Terminated [Flag]", "terseLabel": "Rule 10b5-1 Arrangement Terminated" } } }, "localname": "Rule10b51ArrTrmntdFlag", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "booleanItemType" }, "ecd_StkPrcOrTsrEstimationMethodTextBlock": { "auth_ref": [ "r618", "r629", "r639", "r664" ], "lang": { "en-us": { "role": { "label": "Stock Price or TSR Estimation Method [Text Block]", "terseLabel": "Stock Price or TSR Estimation Method" } } }, "localname": "StkPrcOrTsrEstimationMethodTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_TabularListTableTextBlock": { "auth_ref": [ "r658" ], "lang": { "en-us": { "role": { "label": "Tabular List [Table Text Block]", "terseLabel": "Tabular List, Table" } } }, "localname": "TabularListTableTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_TotalShareholderRtnAmt": { "auth_ref": [ "r650" ], "lang": { "en-us": { "role": { "label": "Total Shareholder Return Amount", "terseLabel": "Total Shareholder Return Amount" } } }, "localname": "TotalShareholderRtnAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "monetaryItemType" }, "ecd_TotalShareholderRtnVsPeerGroupTextBlock": { "auth_ref": [ "r657" ], "lang": { "en-us": { "role": { "label": "Total Shareholder Return Vs Peer Group [Text Block]", "terseLabel": "Total Shareholder Return Vs Peer Group" } } }, "localname": "TotalShareholderRtnVsPeerGroupTextBlock", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "textBlockItemType" }, "ecd_TradingArrAxis": { "auth_ref": [ "r677" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement [Axis]", "terseLabel": "Trading Arrangement:" } } }, "localname": "TradingArrAxis", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "stringItemType" }, "ecd_TradingArrByIndTable": { "auth_ref": [ "r679" ], "lang": { "en-us": { "role": { "label": "Trading Arrangements, by Individual [Table]", "terseLabel": "Trading Arrangements, by Individual" } } }, "localname": "TradingArrByIndTable", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "stringItemType" }, "ecd_TrdArrAdoptionDate": { "auth_ref": [ "r680" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement Adoption Date", "terseLabel": "Adoption Date" } } }, "localname": "TrdArrAdoptionDate", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "stringItemType" }, "ecd_TrdArrDuration": { "auth_ref": [ "r681" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement Duration", "terseLabel": "Arrangement Duration" } } }, "localname": "TrdArrDuration", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "durationItemType" }, "ecd_TrdArrIndName": { "auth_ref": [ "r679" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement, Individual Name", "terseLabel": "Name" } } }, "localname": "TrdArrIndName", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "stringItemType" }, "ecd_TrdArrIndTitle": { "auth_ref": [ "r679" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement, Individual Title", "terseLabel": "Title" } } }, "localname": "TrdArrIndTitle", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "stringItemType" }, "ecd_TrdArrSecuritiesAggAvailAmt": { "auth_ref": [ "r682" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement, Securities Aggregate Available Amount", "terseLabel": "Aggregate Available" } } }, "localname": "TrdArrSecuritiesAggAvailAmt", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "sharesItemType" }, "ecd_TrdArrTerminationDate": { "auth_ref": [ "r680" ], "lang": { "en-us": { "role": { "label": "Trading Arrangement Termination Date", "terseLabel": "Termination Date" } } }, "localname": "TrdArrTerminationDate", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" ], "xbrltype": "stringItemType" }, "ecd_UndrlygSecurityMktPriceChngPct": { "auth_ref": [ "r676" ], "lang": { "en-us": { "role": { "label": "Underlying Security Market Price Change, Percent", "terseLabel": "Underlying Security Market Price Change" } } }, "localname": "UndrlygSecurityMktPriceChngPct", "nsuri": "http://xbrl.sec.gov/ecd/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "pureItemType" }, "prlb_Acquired3dHubsMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Represents acquired 3D Hubs.", "label": "Acquired 3D Hubs [Member]", "terseLabel": "Acquired 3D Hubs" } } }, "localname": "Acquired3dHubsMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "xbrltype": "domainItemType" }, "prlb_CNCMachiningFirstcutMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Represents the CNC Machining (Firstcut) product.", "label": "CNC Machining (Firstcut) [Member]", "terseLabel": "CNC Machining" } } }, "localname": "CNCMachiningFirstcutMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/SegmentReportingDisaggregationofRevenueDetails" ], "xbrltype": "domainItemType" }, "prlb_ClosureOfJapanBusiness": { "auth_ref": [], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited": { "order": 1.0, "parentTag": "us-gaap_OperatingExpenses", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of operating expense from disposal group.", "label": "Closure of Japan Business", "terseLabel": "Closure of Japan business" } } }, "localname": "ClosureOfJapanBusiness", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "monetaryItemType" }, "prlb_CorporateUnallocatedAndJapanSegmentMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Segment for corporate unallocated expenses and Japan.", "label": "Corporate Unallocated and Japan Segment [Member]", "terseLabel": "Corporate Unallocated and Japan" } } }, "localname": "CorporateUnallocatedAndJapanSegmentMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/SegmentReportingIncomeFromOperationbyGeographicAreasDetails" ], "xbrltype": "domainItemType" }, "prlb_ESPPMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "ESPP [member", "label": "ESPP [Member]", "terseLabel": "ESPP" } } }, "localname": "ESPPMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "domainItemType" }, "prlb_EarningsPerShareBasicAndDilutedEPSAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Earnings Per Share, Basic and Diluted EPS", "label": "Earnings Per Share, Basic and Diluted EPS [Abstract]", "terseLabel": "Net (loss) income per share:" } } }, "localname": "EarningsPerShareBasicAndDilutedEPSAbstract", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "xbrltype": "stringItemType" }, "prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Effective Income Tax Rate, Continuing Operations, Increase (Decrease) During The Period", "terseLabel": "Effective income tax rate, increase (decrease) during period (in percent)" } } }, "localname": "EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/IncomeTaxesDetails" ], "xbrltype": "percentItemType" }, "prlb_EmployeeStockOptionAndOtherMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Employee Stock Option and Other", "label": "Employee Stock Option and Other [Member]", "terseLabel": "Employee Stock Option and Other" } } }, "localname": "EmployeeStockOptionAndOtherMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "xbrltype": "domainItemType" }, "prlb_EmployeeStockPurchasePlanMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Information pertaining to the Employee Stock Purchase Plan.", "label": "Employee Stock Purchase Plan [Member]", "terseLabel": "Employee Stock Purchase Plan" } } }, "localname": "EmployeeStockPurchasePlanMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "xbrltype": "domainItemType" }, "prlb_EmployeeStockPurchasePlanOfferingPeriod": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "The offering period during which employees may purchase stock through the Employee Stock Purchase Plan.", "label": "Employee Stock Purchase Plan, Offering Period", "terseLabel": "Offering period (in months)" } } }, "localname": "EmployeeStockPurchasePlanOfferingPeriod", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "xbrltype": "durationItemType" }, "prlb_EuropeSegmentMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Operating segment for Europe", "label": "Europe Segment [Member]", "terseLabel": "Europe" } } }, "localname": "EuropeSegmentMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/SegmentReportingIncomeFromOperationbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingRevenuebyGeographicAreasDetails" ], "xbrltype": "domainItemType" }, "prlb_FiniteLivedIntangibleAssetExpectedAmortizationAfterYearFour": { "auth_ref": [], "crdr": "debit", "lang": { "en-us": { "role": { "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).", "label": "Finite-Lived Intangible Asset, Expected Amortization, After Year Four", "terseLabel": "Thereafter" } } }, "localname": "FiniteLivedIntangibleAssetExpectedAmortizationAfterYearFour", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsFutureAmortizationExpenseDetails" ], "xbrltype": "monetaryItemType" }, "prlb_IncomeFromOperationsByGeographicAreaTableTextBlock": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Tabular disclosure of income from operations by geographic area.", "label": "Income from Operations by Geographic Area [Table Text Block]", "terseLabel": "Income from Operations by Geographic Area" } } }, "localname": "IncomeFromOperationsByGeographicAreaTableTextBlock", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/SegmentReportingTables" ], "xbrltype": "textBlockItemType" }, "prlb_InjectionMoldingProtomoldMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Represents the Injection Molding (Protomold) product.", "label": "Injection Molding (Protomold) [Member]", "terseLabel": "Injection Molding" } } }, "localname": "InjectionMoldingProtomoldMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/SegmentReportingDisaggregationofRevenueDetails" ], "xbrltype": "domainItemType" }, "prlb_JapanSegmentMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Operating segment for Japan.", "label": "Japan Segment [Member]", "terseLabel": "Japan" } } }, "localname": "JapanSegmentMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/SegmentReportingLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingRevenuebyGeographicAreasDetails" ], "xbrltype": "domainItemType" }, "prlb_LongtermIncentivePlan2012Member": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Information pertaining to the 2012 Long-Term Incentive Plan.", "label": "Long-Term Incentive Plan 2012 [Member]", "terseLabel": "Long-Term Incentive Plan 2012" } } }, "localname": "LongtermIncentivePlan2012Member", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "xbrltype": "domainItemType" }, "prlb_OtherProductsMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Represents other products.", "label": "Other Products [Member]", "terseLabel": "Other Revenue" } } }, "localname": "OtherProductsMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/SegmentReportingDisaggregationofRevenueDetails" ], "xbrltype": "domainItemType" }, "prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Percentage Of Target Number, Capable Of Being Earned And Vesting, Lower Limit", "terseLabel": "Percentage of target, capable of being earned and vesting, lower limit" } } }, "localname": "PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "xbrltype": "percentItemType" }, "prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Percentage Of Target Number, Capable Of Being Earned And Vesting, Upper Limit", "terseLabel": "Percentage of target, capable of being earned and vesting, upper limit" } } }, "localname": "PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "xbrltype": "percentItemType" }, "prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Tabular disclosure of the valuation assumptions of share-based payment awards other than stock options.", "label": "Schedule of Share-based Payment Award, Awards Other Than Stock Options, Valuation Assumptions [Table Text Block]", "terseLabel": "Schedule of Share-based Payment Award, Awards Other Than Stock Options, Valuation Assumptions" } } }, "localname": "ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationTables" ], "xbrltype": "textBlockItemType" }, "prlb_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange": { "auth_ref": [], "lang": { "en-us": { "role": { "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).", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Performance Change", "terseLabel": "Performance change (in shares)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "xbrltype": "sharesItemType" }, "prlb_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Represents the weighted average grant date fair value per share in connection to a performance change related to equity instruments other than options.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Performance Change, Weighted Average Grant Date Fair Value", "terseLabel": "Performance change, weighted-average grant date fair value (in dollars per share)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "xbrltype": "perShareItemType" }, "prlb_SheetMetalMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Represents the information pertaining to sheet metal.", "label": "Sheet Metal [Member]", "terseLabel": "Sheet Metal" } } }, "localname": "SheetMetalMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/SegmentReportingDisaggregationofRevenueDetails" ], "xbrltype": "domainItemType" }, "prlb_SoftwarePlatformMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Information pertaining to software platform.", "label": "Software Platform [Member]", "terseLabel": "Software platform" } } }, "localname": "SoftwarePlatformMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "domainItemType" }, "prlb_ThreeDPrintingFinelineMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Represents the 3D Printing (Fineline) product.", "label": "3D Printing (Fineline) [Member]", "terseLabel": "3D Printing" } } }, "localname": "ThreeDPrintingFinelineMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/SegmentReportingDisaggregationofRevenueDetails" ], "xbrltype": "domainItemType" }, "prlb_UnitedStatesSegmentMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Operating segment for United States.", "label": "United States Segment [Member]", "terseLabel": "United States" } } }, "localname": "UnitedStatesSegmentMember", "nsuri": "http://www.protolabs.com/20230630", "presentation": [ "http://www.protolabs.com/role/SegmentReportingIncomeFromOperationbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingRevenuebyGeographicAreasDetails" ], "xbrltype": "domainItemType" }, "srt_ConsolidationItemsAxis": { "auth_ref": [ "r144", "r180", "r191", "r192", "r193", "r194", "r195", "r197", "r201", "r280", "r281", "r282", "r283", "r285", "r286", "r288", "r290", "r291", "r736", "r737" ], "lang": { "en-us": { "role": { "label": "Consolidation Items [Axis]", "terseLabel": "Consolidation Items [Axis]" } } }, "localname": "ConsolidationItemsAxis", "nsuri": "http://fasb.org/srt/2023", "presentation": [ "http://www.protolabs.com/role/SegmentReportingIncomeFromOperationbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingRevenuebyGeographicAreasDetails" ], "xbrltype": "stringItemType" }, "srt_ConsolidationItemsDomain": { "auth_ref": [ "r144", "r180", "r191", "r192", "r193", "r194", "r195", "r197", "r201", "r280", "r281", "r282", "r283", "r285", "r286", "r288", "r290", "r291", "r736", "r737" ], "lang": { "en-us": { "role": { "label": "Consolidation Items [Domain]", "terseLabel": "Consolidation Items [Domain]" } } }, "localname": "ConsolidationItemsDomain", "nsuri": "http://fasb.org/srt/2023", "presentation": [ "http://www.protolabs.com/role/SegmentReportingIncomeFromOperationbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingRevenuebyGeographicAreasDetails" ], "xbrltype": "domainItemType" }, "srt_EuropeMember": { "auth_ref": [ "r785", "r786", "r787", "r788" ], "lang": { "en-us": { "role": { "label": "Europe [Member]", "terseLabel": "Europe" } } }, "localname": "EuropeMember", "nsuri": "http://fasb.org/srt/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "xbrltype": "domainItemType" }, "srt_MaximumMember": { "auth_ref": [ "r276", "r277", "r278", "r279", "r307", "r438", "r482", "r499", "r500", "r549", "r551", "r553", "r554", "r556", "r568", "r569", "r579", "r585", "r593", "r598", "r738", "r772", "r773", "r774", "r775", "r776", "r777" ], "lang": { "en-us": { "role": { "label": "Maximum [Member]", "terseLabel": "Maximum" } } }, "localname": "MaximumMember", "nsuri": "http://fasb.org/srt/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails", "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "xbrltype": "domainItemType" }, "srt_MinimumMember": { "auth_ref": [ "r276", "r277", "r278", "r279", "r307", "r438", "r482", "r499", "r500", "r549", "r551", "r553", "r554", "r556", "r568", "r569", "r579", "r585", "r593", "r598", "r738", "r772", "r773", "r774", "r775", "r776", "r777" ], "lang": { "en-us": { "role": { "label": "Minimum [Member]", "terseLabel": "Minimum" } } }, "localname": "MinimumMember", "nsuri": "http://fasb.org/srt/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails", "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "xbrltype": "domainItemType" }, "srt_ProductOrServiceAxis": { "auth_ref": [ "r203", "r439", "r476", "r477", "r478", "r479", "r480", "r481", "r570", "r586", "r597", "r685", "r734", "r735", "r739", "r780" ], "lang": { "en-us": { "role": { "label": "Product and Service [Axis]", "terseLabel": "Product and Service [Axis]" } } }, "localname": "ProductOrServiceAxis", "nsuri": "http://fasb.org/srt/2023", "presentation": [ "http://www.protolabs.com/role/SegmentReportingDisaggregationofRevenueDetails" ], "xbrltype": "stringItemType" }, "srt_ProductsAndServicesDomain": { "auth_ref": [ "r203", "r439", "r476", "r477", "r478", "r479", "r480", "r481", "r570", "r586", "r597", "r685", "r734", "r735", "r739", "r780" ], "lang": { "en-us": { "role": { "label": "Product and Service [Domain]", "terseLabel": "Product and Service [Domain]" } } }, "localname": "ProductsAndServicesDomain", "nsuri": "http://fasb.org/srt/2023", "presentation": [ "http://www.protolabs.com/role/SegmentReportingDisaggregationofRevenueDetails" ], "xbrltype": "domainItemType" }, "srt_RangeAxis": { "auth_ref": [ "r276", "r277", "r278", "r279", "r300", "r307", "r336", "r337", "r338", "r414", "r438", "r482", "r499", "r500", "r549", "r551", "r553", "r554", "r556", "r568", "r569", "r579", "r585", "r593", "r598", "r601", "r732", "r738", "r773", "r774", "r775", "r776", "r777" ], "lang": { "en-us": { "role": { "label": "Statistical Measurement [Axis]", "terseLabel": "Statistical Measurement [Axis]" } } }, "localname": "RangeAxis", "nsuri": "http://fasb.org/srt/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails", "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "xbrltype": "stringItemType" }, "srt_RangeMember": { "auth_ref": [ "r276", "r277", "r278", "r279", "r300", "r307", "r336", "r337", "r338", "r414", "r438", "r482", "r499", "r500", "r549", "r551", "r553", "r554", "r556", "r568", "r569", "r579", "r585", "r593", "r598", "r601", "r732", "r738", "r773", "r774", "r775", "r776", "r777" ], "lang": { "en-us": { "role": { "label": "Statistical Measurement [Domain]", "terseLabel": "Statistical Measurement [Domain]" } } }, "localname": "RangeMember", "nsuri": "http://fasb.org/srt/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails", "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "xbrltype": "domainItemType" }, "srt_SegmentGeographicalDomain": { "auth_ref": [ "r205", "r206", "r496", "r497", "r498", "r550", "r552", "r555", "r557", "r559", "r560", "r561", "r562", "r563", "r564", "r565", "r566", "r567", "r571", "r587", "r601", "r739", "r780" ], "lang": { "en-us": { "role": { "label": "Geographical [Domain]", "terseLabel": "Geographical [Domain]" } } }, "localname": "SegmentGeographicalDomain", "nsuri": "http://fasb.org/srt/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "xbrltype": "domainItemType" }, "srt_StatementGeographicalAxis": { "auth_ref": [ "r205", "r206", "r496", "r497", "r498", "r550", "r552", "r555", "r557", "r558", "r559", "r560", "r561", "r562", "r563", "r564", "r565", "r566", "r567", "r571", "r587", "r601", "r739", "r780" ], "lang": { "en-us": { "role": { "label": "Geographical [Axis]", "terseLabel": "Geographical [Axis]" } } }, "localname": "StatementGeographicalAxis", "nsuri": "http://fasb.org/srt/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "xbrltype": "stringItemType" }, "us-gaap_AccountingPoliciesAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Accounting Policies [Abstract]", "terseLabel": "Accounting Policies [Abstract]" } } }, "localname": "AccountingPoliciesAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_AccountsPayableCurrent": { "auth_ref": [ "r23", "r596" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 6.0, "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "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).", "label": "Accounts Payable, Current", "terseLabel": "Accounts payable" } } }, "localname": "AccountsPayableCurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_AccountsReceivableNetCurrent": { "auth_ref": [ "r208", "r209" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 4.0, "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Accounts Receivable, after Allowance for Credit Loss, Current", "terseLabel": "Accounts receivable, net of allowance for doubtful accounts of $2,209 and $1,706 as of June\u00a030, 2023, and December\u00a031, 2022, respectively" } } }, "localname": "AccountsReceivableNetCurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_AccretionExpense": { "auth_ref": [ "r582", "r733" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 5.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Accretion Expense", "terseLabel": "Interest on finance lease obligations" } } }, "localname": "AccretionExpense", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_AccruedIncomeTaxesCurrent": { "auth_ref": [ "r61", "r99" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 5.0, "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Carrying amount as of the balance sheet date of the unpaid sum of the known and estimated amounts payable to satisfy all currently due domestic and foreign income tax obligations.", "label": "Accrued Income Taxes, Current", "terseLabel": "Income taxes payable" } } }, "localname": "AccruedIncomeTaxesCurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_AccruedLiabilitiesAndOtherLiabilities": { "auth_ref": [], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 1.0, "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of expenses incurred but not yet paid nor invoiced, and liabilities classified as other.", "label": "Accrued Liabilities and Other Liabilities", "terseLabel": "Accrued liabilities and other" } } }, "localname": "AccruedLiabilitiesAndOtherLiabilities", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember": { "auth_ref": [ "r121", "r122", "r123", "r125", "r132", "r133", "r699" ], "lang": { "en-us": { "role": { "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.", "label": "AOCI, Accumulated Gain (Loss), Debt Securities, Available-for-Sale, Parent [Member]", "terseLabel": "Net unrealized gains (losses) on investments in securities" } } }, "localname": "AccumulatedNetUnrealizedInvestmentGainLossMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossChangesInAccumulatedOtherComprehensiveIncomeLossDetails" ], "xbrltype": "domainItemType" }, "us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems": { "auth_ref": [ "r131", "r132", "r397", "r398", "r399", "r400", "r401", "r402" ], "lang": { "en-us": { "role": { "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.", "label": "Accumulated Other Comprehensive Income (Loss) [Line Items]", "terseLabel": "Accumulated Other Comprehensive Income (Loss) [Line Items]" } } }, "localname": "AccumulatedOtherComprehensiveIncomeLossLineItems", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossChangesInAccumulatedOtherComprehensiveIncomeLossDetails", "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossNarrativeDetails" ], "xbrltype": "stringItemType" }, "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": { "auth_ref": [ "r29", "r30", "r74", "r117", "r455", "r487", "r488" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 2.0, "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount, after tax, of accumulated increase (decrease) in equity from transaction and other event and circumstance from nonowner source.", "label": "Accumulated Other Comprehensive Income (Loss), Net of Tax", "terseLabel": "Accumulated other comprehensive loss" } } }, "localname": "AccumulatedOtherComprehensiveIncomeLossNetOfTax", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_AccumulatedOtherComprehensiveIncomeLossTable": { "auth_ref": [ "r131", "r132", "r397", "r398", "r399", "r400", "r401", "r402" ], "lang": { "en-us": { "role": { "documentation": "Disclosure of information about components of accumulated other comprehensive income (loss).", "label": "Accumulated Other Comprehensive Income (Loss) [Table]", "terseLabel": "Accumulated Other Comprehensive Income (Loss) [Table]" } } }, "localname": "AccumulatedOtherComprehensiveIncomeLossTable", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossChangesInAccumulatedOtherComprehensiveIncomeLossDetails", "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossNarrativeDetails" ], "xbrltype": "stringItemType" }, "us-gaap_AccumulatedOtherComprehensiveIncomeMember": { "auth_ref": [ "r2", "r12", "r30", "r376", "r379", "r407", "r483", "r484", "r699", "r700", "r701", "r705", "r706", "r707" ], "lang": { "en-us": { "role": { "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.", "label": "AOCI Attributable to Parent [Member]", "terseLabel": "Accumulated Other Comprehensive Loss" } } }, "localname": "AccumulatedOtherComprehensiveIncomeMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossChangesInAccumulatedOtherComprehensiveIncomeLossDetails", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "domainItemType" }, "us-gaap_AccumulatedTranslationAdjustmentMember": { "auth_ref": [ "r4", "r12", "r30", "r132", "r133", "r398", "r399", "r400", "r401", "r402", "r699" ], "lang": { "en-us": { "role": { "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.", "label": "Accumulated Foreign Currency Adjustment Attributable to Parent [Member]", "terseLabel": "Foreign currency translation adjustments" } } }, "localname": "AccumulatedTranslationAdjustmentMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossChangesInAccumulatedOtherComprehensiveIncomeLossDetails", "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossNarrativeDetails" ], "xbrltype": "domainItemType" }, "us-gaap_AcquiredFiniteLivedIntangibleAssetsLineItems": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Acquired Finite-Lived Intangible Assets [Line Items]", "terseLabel": "Acquired Finite-Lived Intangible Assets [Line Items]" } } }, "localname": "AcquiredFiniteLivedIntangibleAssetsLineItems", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails", "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "stringItemType" }, "us-gaap_AdditionalPaidInCapitalCommonStock": { "auth_ref": [ "r64" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 1.0, "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "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.", "label": "Additional Paid in Capital, Common Stock", "terseLabel": "Additional paid-in capital" } } }, "localname": "AdditionalPaidInCapitalCommonStock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_AdditionalPaidInCapitalMember": { "auth_ref": [ "r345", "r346", "r347", "r494", "r705", "r706", "r707", "r767", "r783" ], "lang": { "en-us": { "role": { "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.", "label": "Additional Paid-in Capital [Member]", "terseLabel": "Additional Paid-In Capital" } } }, "localname": "AdditionalPaidInCapitalMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "domainItemType" }, "us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue": { "auth_ref": [ "r49", "r50", "r310" ], "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement.", "label": "APIC, Share-Based Payment Arrangement, Increase for Cost Recognition", "terseLabel": "Stock-based compensation expense" } } }, "localname": "AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "monetaryItemType" }, "us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Adjustments to Reconcile Net Income (Loss) to Cash Provided by (Used in) Operating Activities [Abstract]", "terseLabel": "Adjustments to reconcile net income to net cash provided by operating activities:" } } }, "localname": "AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "stringItemType" }, "us-gaap_AllocatedShareBasedCompensationExpense": { "auth_ref": [ "r340", "r348" ], "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of expense for award under share-based payment arrangement. Excludes amount capitalized.", "label": "Share-Based Payment Arrangement, Expense", "terseLabel": "Stock-based compensation expense" } } }, "localname": "AllocatedShareBasedCompensationExpense", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent": { "auth_ref": [ "r118", "r210", "r247" ], "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of allowance for credit loss on accounts receivable, classified as current.", "label": "Accounts Receivable, Allowance for Credit Loss, Current", "terseLabel": "Allowance for credit loss, current" } } }, "localname": "AllowanceForDoubtfulAccountsReceivableCurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "xbrltype": "monetaryItemType" }, "us-gaap_AmortizationOfIntangibleAssets": { "auth_ref": [ "r8", "r42", "r45" ], "crdr": "debit", "lang": { "en-us": { "role": { "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. As a noncash expense, this element is added back to net income when calculating cash provided by or used in operations using the indirect method.", "label": "Amortization of Intangible Assets", "terseLabel": "Amortization expense for intangible assets" } } }, "localname": "AmortizationOfIntangibleAssets", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount": { "auth_ref": [ "r169" ], "lang": { "en-us": { "role": { "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.", "label": "Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount", "terseLabel": "Anti-dilutive options excluded from calculation of diluted weighted average shares outstanding (in shares)" } } }, "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/NetLossIncomeperCommonShareNarrativeDetails", "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis": { "auth_ref": [ "r36" ], "lang": { "en-us": { "role": { "documentation": "Information by type of antidilutive security.", "label": "Antidilutive Securities [Axis]", "terseLabel": "Antidilutive Securities [Axis]" } } }, "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "xbrltype": "stringItemType" }, "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Antidilutive Securities Excluded from Computation of Earnings Per Share [Line Items]", "terseLabel": "Antidilutive Securities Excluded from Computation of Earnings Per Share [Line Items]" } } }, "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "xbrltype": "stringItemType" }, "us-gaap_AntidilutiveSecuritiesNameDomain": { "auth_ref": [ "r36" ], "lang": { "en-us": { "role": { "documentation": "Incremental common shares attributable to securities that were not included in diluted earnings per share (EPS) because to do so would increase EPS amounts or decrease loss per share amounts for the period presented.", "label": "Antidilutive Securities, Name [Domain]", "terseLabel": "Antidilutive Securities, Name [Domain]" } } }, "localname": "AntidilutiveSecuritiesNameDomain", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "xbrltype": "domainItemType" }, "us-gaap_Assets": { "auth_ref": [ "r98", "r116", "r142", "r178", "r193", "r199", "r244", "r280", "r281", "r283", "r284", "r285", "r287", "r289", "r291", "r292", "r371", "r373", "r392", "r451", "r520", "r596", "r608", "r736", "r737", "r770" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": null, "parentTag": null, "root": true, "weight": null } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.", "label": "Assets", "totalLabel": "Total assets" } } }, "localname": "Assets", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_AssetsAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Assets [Abstract]", "terseLabel": "Assets" } } }, "localname": "AssetsAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "stringItemType" }, "us-gaap_AssetsCurrent": { "auth_ref": [ "r110", "r120", "r142", "r244", "r280", "r281", "r283", "r284", "r285", "r287", "r289", "r291", "r292", "r371", "r373", "r392", "r596", "r736", "r737", "r770" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 1.0, "parentTag": "us-gaap_Assets", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold, or consumed within one year (or the normal operating cycle, if longer). Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.", "label": "Assets, Current", "totalLabel": "Total current assets" } } }, "localname": "AssetsCurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_AssetsCurrentAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Assets, Current [Abstract]", "terseLabel": "Current assets" } } }, "localname": "AssetsCurrentAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "stringItemType" }, "us-gaap_AssetsFairValueDisclosure": { "auth_ref": [ "r56" ], "calculation": { "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails": { "order": null, "parentTag": null, "root": true, "weight": null } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Fair value portion of probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.", "label": "Assets, Fair Value Disclosure", "totalLabel": "Total" } } }, "localname": "AssetsFairValueDisclosure", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_AssetsFairValueDisclosureAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Assets, Fair Value Disclosure [Abstract]", "terseLabel": "Financial Assets:" } } }, "localname": "AssetsFairValueDisclosureAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "stringItemType" }, "us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax": { "auth_ref": [ "r216" ], "calculation": { "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails": { "order": 1.0, "parentTag": "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis", "weight": -1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "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).", "label": "Debt Securities, Available-for-Sale, Accumulated Gross Unrealized Gain, before Tax", "terseLabel": "Unrealized Gains" } } }, "localname": "AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax": { "auth_ref": [ "r217" ], "calculation": { "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails": { "order": 3.0, "parentTag": "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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).", "label": "Debt Securities, Available-for-Sale, Accumulated Gross Unrealized Loss, before Tax", "negatedTerseLabel": "Unrealized Losses" } } }, "localname": "AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis": { "auth_ref": [ "r213", "r253", "r450" ], "calculation": { "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails": { "order": null, "parentTag": null, "root": true, "weight": null } }, "crdr": "debit", "lang": { "en-us": { "role": { "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).", "label": "Debt Securities, Available-for-Sale, Amortized Cost", "totalLabel": "Cost" } } }, "localname": "AvailableForSaleDebtSecuritiesAmortizedCostBasis", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_AvailableForSaleSecuritiesDebtMaturitiesAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Available-for-Sale Securities, Debt Maturities [Abstract]", "terseLabel": "Available-for-Sale Securities, Debt Maturities [Abstract]" } } }, "localname": "AvailableForSaleSecuritiesDebtMaturitiesAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails" ], "xbrltype": "stringItemType" }, "us-gaap_AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsFairValue": { "auth_ref": [ "r221", "r448" ], "calculation": { "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails": { "order": 2.0, "parentTag": "us-gaap_AvailableForSaleSecuritiesDebtSecurities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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).", "label": "Debt Securities, Available-for-Sale, Fair Value, Maturity, Allocated and Single Maturity Date, after Year One Through Five", "terseLabel": "Due after one year through five years" } } }, "localname": "AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsFairValue", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_AvailableForSaleSecuritiesDebtMaturitiesFairValueAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Debt Securities, Available-for-Sale, Fair Value, Fiscal Year Maturity [Abstract]", "terseLabel": "Debt Securities, Available-for-Sale, Fair Value, Fiscal Year Maturity [Abstract]" } } }, "localname": "AvailableForSaleSecuritiesDebtMaturitiesFairValueAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails" ], "xbrltype": "stringItemType" }, "us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue": { "auth_ref": [ "r220", "r447" ], "calculation": { "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails": { "order": 1.0, "parentTag": "us-gaap_AvailableForSaleSecuritiesDebtSecurities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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).", "label": "Debt Securities, Available-for-Sale, Fair Value, Maturity, Allocated and Single Maturity Date, Year One", "terseLabel": "Due in one year or less" } } }, "localname": "AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_AvailableForSaleSecuritiesDebtSecurities": { "auth_ref": [ "r214", "r253", "r443", "r710" ], "calculation": { "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails": { "order": 2.0, "parentTag": "us-gaap_AssetsFairValueDisclosure", "weight": 1.0 }, "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails": { "order": null, "parentTag": null, "root": true, "weight": null }, "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails": { "order": 2.0, "parentTag": "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).", "label": "Debt Securities, Available-for-Sale", "terseLabel": "Fair Value", "totalLabel": "Total marketable securities", "verboseLabel": "Debt securities, available-for-sale" } } }, "localname": "AvailableForSaleSecuritiesDebtSecurities", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails", "http://www.protolabs.com/role/MarketableSecuritiesMaturitiesofAvailableForSaleDebtSecuritiesDetails", "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_AwardTypeAxis": { "auth_ref": [ "r314", "r315", "r316", "r317", "r318", "r319", "r320", "r321", "r322", "r323", "r324", "r325", "r326", "r327", "r328", "r329", "r330", "r331", "r332", "r333", "r334", "r335", "r336", "r337", "r338", "r339" ], "lang": { "en-us": { "role": { "documentation": "Information by type of award under share-based payment arrangement.", "label": "Award Type [Axis]", "terseLabel": "Award Type [Axis]" } } }, "localname": "AwardTypeAxis", "nsuri": "http://fasb.org/us-gaap/2023", "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" ], "xbrltype": "stringItemType" }, "us-gaap_BankTimeDepositsMember": { "auth_ref": [ "r103" ], "lang": { "en-us": { "role": { "documentation": "Certificates of deposit (CD) or savings accounts with a fixed term or understanding the customer can only withdraw by giving advanced notice with a bank or other financial institution. A CD is a short to medium-term investment available at banks and savings and loan institutions where a customer agrees to lend money to the institution for a certain amount of time and is paid a predetermined rate of interest.", "label": "Bank Time Deposits [Member]", "terseLabel": "Certificates of deposit/time deposits" } } }, "localname": "BankTimeDepositsMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "xbrltype": "domainItemType" }, "us-gaap_BusinessAcquisitionAcquireeDomain": { "auth_ref": [ "r370", "r591", "r592" ], "lang": { "en-us": { "role": { "documentation": "Identification of the acquiree in a material business combination (or series of individually immaterial business combinations), which may include the name or other type of identification of the acquiree.", "label": "Business Acquisition, Acquiree [Domain]", "terseLabel": "Business Acquisition, Acquiree [Domain]" } } }, "localname": "BusinessAcquisitionAcquireeDomain", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "xbrltype": "domainItemType" }, "us-gaap_BusinessAcquisitionAxis": { "auth_ref": [ "r51", "r52", "r370", "r591", "r592" ], "lang": { "en-us": { "role": { "documentation": "Information by business combination or series of individually immaterial business combinations.", "label": "Business Acquisition [Axis]", "terseLabel": "Business Acquisition [Axis]" } } }, "localname": "BusinessAcquisitionAxis", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "xbrltype": "stringItemType" }, "us-gaap_CashAndCashEquivalentsAtCarryingValue": { "auth_ref": [ "r35", "r112", "r573" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 6.0, "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount 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. Excludes cash and cash equivalents within disposal group and discontinued operation.", "label": "Cash and Cash Equivalents, at Carrying Value", "terseLabel": "Cash and cash equivalents" } } }, "localname": "CashAndCashEquivalentsAtCarryingValue", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_CashAndCashEquivalentsFairValueDisclosure": { "auth_ref": [], "calculation": { "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails": { "order": 1.0, "parentTag": "us-gaap_AssetsFairValueDisclosure", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Cash and Cash Equivalents, Fair Value Disclosure", "terseLabel": "Cash and cash equivalents" } } }, "localname": "CashAndCashEquivalentsFairValueDisclosure", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": { "auth_ref": [ "r35", "r83", "r140" ], "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, 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.", "label": "Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Including Disposal Group and Discontinued Operations", "periodEndLabel": "Cash and cash equivalents, end of period", "periodStartLabel": "Cash and cash equivalents, beginning of period" } } }, "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": { "auth_ref": [ "r1", "r83" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": null, "parentTag": null, "root": true, "weight": null } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of increase (decrease) in cash, cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including effect from exchange rate change. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, 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.", "label": "Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Period Increase (Decrease), Including Exchange Rate Effect", "totalLabel": "Net increase (decrease) in cash and cash equivalents" } } }, "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_CashMember": { "auth_ref": [ "r112" ], "lang": { "en-us": { "role": { "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.", "label": "Cash [Member]", "terseLabel": "Cash" } } }, "localname": "CashMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "domainItemType" }, "us-gaap_CommonStockMember": { "auth_ref": [ "r599", "r600", "r601", "r603", "r604", "r605", "r606", "r705", "r706", "r767", "r782", "r783" ], "lang": { "en-us": { "role": { "documentation": "Stock that is subordinate to all other stock of the issuer.", "label": "Common Stock [Member]", "terseLabel": "Common Stock" } } }, "localname": "CommonStockMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "domainItemType" }, "us-gaap_CommonStockParOrStatedValuePerShare": { "auth_ref": [ "r63" ], "lang": { "en-us": { "role": { "documentation": "Face amount or stated value per share of common stock.", "label": "Common Stock, Par or Stated Value Per Share", "terseLabel": "Common stock, par value (in dollars per share)" } } }, "localname": "CommonStockParOrStatedValuePerShare", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "xbrltype": "perShareItemType" }, "us-gaap_CommonStockSharesAuthorized": { "auth_ref": [ "r63", "r508" ], "lang": { "en-us": { "role": { "documentation": "The maximum number of common shares permitted to be issued by an entity's charter and bylaws.", "label": "Common Stock, Shares Authorized", "terseLabel": "Common stock, authorized (in shares)" } } }, "localname": "CommonStockSharesAuthorized", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "xbrltype": "sharesItemType" }, "us-gaap_CommonStockSharesIssued": { "auth_ref": [ "r63" ], "lang": { "en-us": { "role": { "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.", "label": "Common Stock, Shares, Issued", "terseLabel": "Common stock, issued (in shares)" } } }, "localname": "CommonStockSharesIssued", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "xbrltype": "sharesItemType" }, "us-gaap_CommonStockSharesOutstanding": { "auth_ref": [ "r13", "r63", "r508", "r526", "r783", "r784" ], "lang": { "en-us": { "role": { "documentation": "Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation.", "label": "Common Stock, Shares, Outstanding", "periodEndLabel": "Ending balance (in shares)", "periodStartLabel": "Beginning balance (in shares)", "terseLabel": "Common stock, outstanding (in shares)" } } }, "localname": "CommonStockSharesOutstanding", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "sharesItemType" }, "us-gaap_CommonStockValue": { "auth_ref": [ "r63", "r454", "r596" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 4.0, "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "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.", "label": "Common Stock, Value, Issued", "terseLabel": "Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 26,095,434 and 26,888,425 shares as of June\u00a030, 2023, and December\u00a031, 2022, respectively" } } }, "localname": "CommonStockValue", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_ComprehensiveIncomeNetOfTax": { "auth_ref": [ "r31", "r128", "r130", "r134", "r444", "r462" ], "crdr": "credit", "lang": { "en-us": { "role": { "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.", "label": "Comprehensive Income (Loss), Net of Tax, Attributable to Parent", "terseLabel": "Comprehensive income (loss)", "verboseLabel": "Comprehensive income" } } }, "localname": "ComprehensiveIncomeNetOfTax", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "monetaryItemType" }, "us-gaap_ComprehensiveIncomeNetOfTaxAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Comprehensive Income (Loss), Net of Tax, Attributable to Parent [Abstract]", "terseLabel": "Comprehensive Income (Loss) (net of tax)" } } }, "localname": "ComprehensiveIncomeNetOfTaxAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "stringItemType" }, "us-gaap_ComputerSoftwareIntangibleAssetMember": { "auth_ref": [ "r572", "r730", "r731" ], "lang": { "en-us": { "role": { "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.", "label": "Computer Software, Intangible Asset [Member]", "terseLabel": "Software technology" } } }, "localname": "ComputerSoftwareIntangibleAssetMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "domainItemType" }, "us-gaap_CorporateDebtSecuritiesMember": { "auth_ref": [ "r588", "r590", "r781" ], "lang": { "en-us": { "role": { "documentation": "Debt securities issued by domestic or foreign corporate business, banks and other entities with a promise of repayment.", "label": "Corporate Debt Securities [Member]", "terseLabel": "Corporate debt securities" } } }, "localname": "CorporateDebtSecuritiesMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "xbrltype": "domainItemType" }, "us-gaap_CostOfGoodsAndServicesSold": { "auth_ref": [ "r78", "r439" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited": { "order": 2.0, "parentTag": "us-gaap_GrossProfit", "weight": -1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Cost of Goods and Services Sold", "terseLabel": "Cost of revenue" } } }, "localname": "CostOfGoodsAndServicesSold", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_CustomerRelationshipsMember": { "auth_ref": [ "r55" ], "lang": { "en-us": { "role": { "documentation": "Customer relationship that exists between an entity and its customer, for example, but not limited to, tenant relationships.", "label": "Customer Relationships [Member]", "terseLabel": "Customer relationships" } } }, "localname": "CustomerRelationshipsMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "domainItemType" }, "us-gaap_DebtSecuritiesAvailableForSaleTable": { "auth_ref": [ "r212", "r213", "r214", "r215", "r216", "r217", "r218", "r219", "r220", "r221", "r222", "r223" ], "lang": { "en-us": { "role": { "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).", "label": "Debt Securities, Available-for-Sale [Table]", "terseLabel": "Debt Securities, Available-for-Sale [Table]" } } }, "localname": "DebtSecuritiesAvailableForSaleTable", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "xbrltype": "stringItemType" }, "us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock": { "auth_ref": [ "r712", "r713", "r714", "r715", "r716", "r717", "r718", "r719", "r720", "r721", "r722", "r723" ], "lang": { "en-us": { "role": { "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).", "label": "Debt Securities, Available-for-Sale [Table Text Block]", "terseLabel": "Debt Securities, Available-for-Sale" } } }, "localname": "DebtSecuritiesAvailableForSaleTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_DeferredIncomeTaxExpenseBenefit": { "auth_ref": [ "r8", "r94", "r105", "r364", "r365", "r704" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 11.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations.", "label": "Deferred Income Tax Expense (Benefit)", "terseLabel": "Deferred taxes" } } }, "localname": "DeferredIncomeTaxExpenseBenefit", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_DeferredIncomeTaxLiabilitiesNet": { "auth_ref": [ "r352", "r353", "r452" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 5.0, "parentTag": "us-gaap_Liabilities", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting.", "label": "Deferred Income Tax Liabilities, Net", "terseLabel": "Long-term deferred tax liabilities" } } }, "localname": "DeferredIncomeTaxLiabilitiesNet", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_DepreciationDepletionAndAmortization": { "auth_ref": [ "r8", "r183" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 2.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Depreciation, Depletion and Amortization", "terseLabel": "Depreciation and amortization" } } }, "localname": "DepreciationDepletionAndAmortization", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_DilutiveSecuritiesAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Dilutive Securities, Effect on Basic Earnings Per Share [Abstract]", "terseLabel": "Effect of dilutive securities:" } } }, "localname": "DilutiveSecuritiesAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "xbrltype": "stringItemType" }, "us-gaap_DisaggregationOfRevenueTableTextBlock": { "auth_ref": [ "r739" ], "lang": { "en-us": { "role": { "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.", "label": "Disaggregation of Revenue [Table Text Block]", "terseLabel": "Disaggregation of Revenue" } } }, "localname": "DisaggregationOfRevenueTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/SegmentReportingTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock": { "auth_ref": [ "r308", "r313", "r341", "r342", "r344", "r594" ], "lang": { "en-us": { "role": { "documentation": "The entire disclosure for share-based payment arrangement.", "label": "Share-Based Payment Arrangement [Text Block]", "terseLabel": "Stock-Based Compensation" } } }, "localname": "DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensation" ], "xbrltype": "textBlockItemType" }, "us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Share-Based Payment Arrangement [Abstract]" } } }, "localname": "DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_DisclosureOfReclassificationAmountTextBlock": { "auth_ref": [ "r72" ], "lang": { "en-us": { "role": { "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.", "label": "Disclosure of Reclassification Amount [Text Block]", "terseLabel": "Accumulated Other Comprehensive Income (Loss)" } } }, "localname": "DisclosureOfReclassificationAmountTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLoss" ], "xbrltype": "textBlockItemType" }, "us-gaap_DisposalGroupNotDiscontinuedOperationLossGainOnWriteDown": { "auth_ref": [ "r8", "r9", "r91" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 13.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Disposal Group, Not Discontinued Operation, Loss (Gain) on Write-down", "terseLabel": "Impairments related to closure of Japan business" } } }, "localname": "DisposalGroupNotDiscontinuedOperationLossGainOnWriteDown", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_EarningsPerShareAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Earnings Per Share [Abstract]", "terseLabel": "Net (loss) income per share:" } } }, "localname": "EarningsPerShareAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "stringItemType" }, "us-gaap_EarningsPerShareBasic": { "auth_ref": [ "r135", "r150", "r151", "r152", "r153", "r154", "r159", "r161", "r166", "r167", "r168", "r172", "r383", "r384", "r445", "r463", "r576" ], "lang": { "en-us": { "role": { "documentation": "The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.", "label": "Earnings Per Share, Basic", "terseLabel": "Basic (in dollars per share)" } } }, "localname": "EarningsPerShareBasic", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited", "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "xbrltype": "perShareItemType" }, "us-gaap_EarningsPerShareDiluted": { "auth_ref": [ "r135", "r150", "r151", "r152", "r153", "r154", "r161", "r166", "r167", "r168", "r172", "r383", "r384", "r445", "r463", "r576" ], "lang": { "en-us": { "role": { "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.", "label": "Earnings Per Share, Diluted", "terseLabel": "Diluted (in dollars per share)" } } }, "localname": "EarningsPerShareDiluted", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited", "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "xbrltype": "perShareItemType" }, "us-gaap_EarningsPerShareTextBlock": { "auth_ref": [ "r158", "r169", "r170", "r171" ], "lang": { "en-us": { "role": { "documentation": "The entire disclosure for earnings per share.", "label": "Earnings Per Share [Text Block]", "terseLabel": "Net (Loss) Income per Common Share" } } }, "localname": "EarningsPerShareTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/NetLossIncomeperCommonShare" ], "xbrltype": "textBlockItemType" }, "us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": { "auth_ref": [ "r769" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 1.0, "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of increase (decrease) from effect of exchange rate changes on cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; held in foreign currencies; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, 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.", "label": "Effect of Exchange Rate on Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Including Disposal Group and Discontinued Operations", "terseLabel": "Effect of exchange rate changes on cash and cash equivalents" } } }, "localname": "EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_EffectiveIncomeTaxRateContinuingOperations": { "auth_ref": [ "r355" ], "lang": { "en-us": { "role": { "documentation": "Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.", "label": "Effective Income Tax Rate Reconciliation, Percent", "terseLabel": "Effective income tax rate (in percent)" } } }, "localname": "EffectiveIncomeTaxRateContinuingOperations", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/IncomeTaxesDetails" ], "xbrltype": "percentItemType" }, "us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate": { "auth_ref": [ "r143", "r355", "r366" ], "lang": { "en-us": { "role": { "documentation": "Percentage of domestic federal statutory tax rate applicable to pretax income (loss).", "label": "Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent", "terseLabel": "Federal statutory rate (in percent)" } } }, "localname": "EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/IncomeTaxesDetails" ], "xbrltype": "percentItemType" }, "us-gaap_EmployeeRelatedLiabilitiesCurrent": { "auth_ref": [ "r25" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 4.0, "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "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).", "label": "Employee-related Liabilities, Current", "terseLabel": "Accrued compensation" } } }, "localname": "EmployeeRelatedLiabilitiesCurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized": { "auth_ref": [ "r343" ], "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of cost not yet recognized for nonvested award under share-based payment arrangement.", "label": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount", "terseLabel": "Stock based award, unrecognized compensation expense" } } }, "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1": { "auth_ref": [ "r343" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition", "terseLabel": "Stock based award, unrecognized compensation expense, period for recognition (in years)" } } }, "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "xbrltype": "durationItemType" }, "us-gaap_EmployeeStockOptionMember": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Employee Stock Option [Member]", "terseLabel": "Stock Options" } } }, "localname": "EmployeeStockOptionMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "domainItemType" }, "us-gaap_EquityComponentDomain": { "auth_ref": [ "r13", "r107", "r131", "r132", "r133", "r145", "r146", "r147", "r149", "r155", "r157", "r173", "r245", "r246", "r297", "r345", "r346", "r347", "r360", "r361", "r375", "r376", "r377", "r378", "r379", "r380", "r382", "r397", "r398", "r399", "r400", "r401", "r402", "r407", "r483", "r484", "r485", "r494", "r546" ], "lang": { "en-us": { "role": { "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.", "label": "Equity Component [Domain]", "terseLabel": "Equity Component [Domain]" } } }, "localname": "EquityComponentDomain", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossChangesInAccumulatedOtherComprehensiveIncomeLossDetails", "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossNarrativeDetails", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "domainItemType" }, "us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems": { "auth_ref": [ "r386", "r387", "r390" ], "lang": { "en-us": { "role": { "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.", "label": "Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]", "terseLabel": "Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]" } } }, "localname": "FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "stringItemType" }, "us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable": { "auth_ref": [ "r386", "r387", "r390" ], "lang": { "en-us": { "role": { "documentation": "Disclosure of information about asset and liability measured at fair value on recurring and nonrecurring basis.", "label": "Fair Value, Recurring and Nonrecurring [Table]", "terseLabel": "Fair Value, Recurring and Nonrecurring [Table]" } } }, "localname": "FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "stringItemType" }, "us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock": { "auth_ref": [ "r56", "r97" ], "lang": { "en-us": { "role": { "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).", "label": "Fair Value, Assets Measured on Recurring Basis [Table Text Block]", "terseLabel": "Fair Value, Assets Measured on Recurring Basis" } } }, "localname": "FairValueAssetsMeasuredOnRecurringBasisTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain": { "auth_ref": [ "r14" ], "lang": { "en-us": { "role": { "documentation": "Class of asset.", "label": "Asset Class [Domain]", "terseLabel": "Asset Class [Domain]" } } }, "localname": "FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "domainItemType" }, "us-gaap_FairValueByAssetClassAxis": { "auth_ref": [ "r56", "r57" ], "lang": { "en-us": { "role": { "documentation": "Information by class of asset.", "label": "Asset Class [Axis]", "terseLabel": "Asset Class [Axis]" } } }, "localname": "FairValueByAssetClassAxis", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "stringItemType" }, "us-gaap_FairValueByFairValueHierarchyLevelAxis": { "auth_ref": [ "r293", "r301", "r302", "r303", "r304", "r305", "r306", "r387", "r411", "r412", "r413", "r583", "r584", "r588", "r589", "r590" ], "lang": { "en-us": { "role": { "documentation": "Information by level within fair value hierarchy and fair value measured at net asset value per share as practical expedient.", "label": "Fair Value Hierarchy and NAV [Axis]", "terseLabel": "Fair Value Hierarchy and NAV [Axis]" } } }, "localname": "FairValueByFairValueHierarchyLevelAxis", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "stringItemType" }, "us-gaap_FairValueByMeasurementFrequencyAxis": { "auth_ref": [ "r386", "r387", "r388", "r389", "r391" ], "lang": { "en-us": { "role": { "documentation": "Information by measurement frequency.", "label": "Measurement Frequency [Axis]", "terseLabel": "Measurement Frequency [Axis]" } } }, "localname": "FairValueByMeasurementFrequencyAxis", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "stringItemType" }, "us-gaap_FairValueDisclosuresAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Fair Value Disclosures [Abstract]" } } }, "localname": "FairValueDisclosuresAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_FairValueDisclosuresTextBlock": { "auth_ref": [ "r385" ], "lang": { "en-us": { "role": { "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.", "label": "Fair Value Disclosures [Text Block]", "terseLabel": "Fair Value Measurements" } } }, "localname": "FairValueDisclosuresTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasuresandDisclosures" ], "xbrltype": "textBlockItemType" }, "us-gaap_FairValueInputsLevel1Member": { "auth_ref": [ "r293", "r301", "r306", "r387", "r411", "r588", "r589", "r590" ], "lang": { "en-us": { "role": { "documentation": "Quoted prices in active markets for identical assets or liabilities that the reporting entity can access at the measurement date.", "label": "Fair Value, Inputs, Level 1 [Member]", "terseLabel": "Level 1" } } }, "localname": "FairValueInputsLevel1Member", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "domainItemType" }, "us-gaap_FairValueInputsLevel2Member": { "auth_ref": [ "r293", "r301", "r306", "r387", "r412", "r583", "r584", "r588", "r589", "r590" ], "lang": { "en-us": { "role": { "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.", "label": "Fair Value, Inputs, Level 2 [Member]", "terseLabel": "Level 2" } } }, "localname": "FairValueInputsLevel2Member", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "domainItemType" }, "us-gaap_FairValueInputsLevel3Member": { "auth_ref": [ "r293", "r301", "r302", "r303", "r304", "r305", "r306", "r387", "r413", "r583", "r584", "r588", "r589", "r590" ], "lang": { "en-us": { "role": { "documentation": "Unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing.", "label": "Fair Value, Inputs, Level 3 [Member]", "terseLabel": "Level 3" } } }, "localname": "FairValueInputsLevel3Member", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "domainItemType" }, "us-gaap_FairValueMeasurementFrequencyDomain": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Measurement frequency.", "label": "Measurement Frequency [Domain]", "terseLabel": "Measurement Frequency [Domain]" } } }, "localname": "FairValueMeasurementFrequencyDomain", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "domainItemType" }, "us-gaap_FairValueMeasurementsFairValueHierarchyDomain": { "auth_ref": [ "r293", "r301", "r302", "r303", "r304", "r305", "r306", "r411", "r412", "r413", "r583", "r584", "r588", "r589", "r590" ], "lang": { "en-us": { "role": { "documentation": "Categories used to prioritize the inputs to valuation techniques to measure fair value.", "label": "Fair Value Hierarchy and NAV [Domain]", "terseLabel": "Fair Value Hierarchy and NAV [Domain]" } } }, "localname": "FairValueMeasurementsFairValueHierarchyDomain", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "domainItemType" }, "us-gaap_FairValueMeasurementsRecurringMember": { "auth_ref": [ "r385", "r391" ], "lang": { "en-us": { "role": { "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.", "label": "Fair Value, Recurring [Member]", "terseLabel": "Fair Value, Recurring" } } }, "localname": "FairValueMeasurementsRecurringMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "domainItemType" }, "us-gaap_FinanceLeaseLiabilityCurrent": { "auth_ref": [ "r404" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 3.0, "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Present value of lessee's discounted obligation for lease payments from finance lease, classified as current.", "label": "Finance Lease, Liability, Current", "terseLabel": "Current finance lease liabilities" } } }, "localname": "FinanceLeaseLiabilityCurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_FinanceLeaseLiabilityNoncurrent": { "auth_ref": [ "r404" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 3.0, "parentTag": "us-gaap_Liabilities", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Present value of lessee's discounted obligation for lease payments from finance lease, classified as noncurrent.", "label": "Finance Lease, Liability, Noncurrent", "terseLabel": "Long-term finance lease liabilities" } } }, "localname": "FinanceLeaseLiabilityNoncurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_FinanceLeasePrincipalPayments": { "auth_ref": [ "r405", "r406" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 2.0, "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of cash outflow for principal payment on finance lease.", "label": "Finance Lease, Principal Payments", "negatedLabel": "Principal repayments of finance lease obligations" } } }, "localname": "FinanceLeasePrincipalPayments", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_FinanceLeaseRightOfUseAsset": { "auth_ref": [ "r403" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 7.0, "parentTag": "us-gaap_Assets", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount, after accumulated amortization, of right-of-use asset from finance lease.", "label": "Finance Lease, Right-of-Use Asset, after Accumulated Amortization", "terseLabel": "Finance lease assets" } } }, "localname": "FinanceLeaseRightOfUseAsset", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_FinancialInstrumentAxis": { "auth_ref": [ "r212", "r213", "r214", "r215", "r216", "r217", "r218", "r219", "r220", "r221", "r222", "r223", "r224", "r225", "r226", "r227", "r228", "r229", "r230", "r231", "r232", "r233", "r234", "r235", "r236", "r237", "r238", "r239", "r240", "r241", "r248", "r249", "r250", "r251", "r252", "r254", "r255", "r256", "r294", "r296", "r381", "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", "r461", "r580", "r688", "r689", "r690", "r691", "r692", "r693", "r694", "r723", "r724", "r725", "r726" ], "lang": { "en-us": { "role": { "documentation": "Information by type of financial instrument.", "label": "Financial Instrument [Axis]", "terseLabel": "Financial Instrument [Axis]" } } }, "localname": "FinancialInstrumentAxis", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "xbrltype": "stringItemType" }, "us-gaap_FiniteLivedIntangibleAssetUsefulLife": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Finite-Lived Intangible Asset, Useful Life", "terseLabel": "Useful Life (in years)" } } }, "localname": "FiniteLivedIntangibleAssetUsefulLife", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "durationItemType" }, "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization": { "auth_ref": [ "r114", "r271" ], "calculation": { "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails": { "order": 2.0, "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": -1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Accumulated amount of amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.", "label": "Finite-Lived Intangible Assets, Accumulated Amortization", "negatedTerseLabel": "Accumulated Amortization" } } }, "localname": "FiniteLivedIntangibleAssetsAccumulatedAmortization", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths": { "auth_ref": [ "r90" ], "crdr": "debit", "lang": { "en-us": { "role": { "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).", "label": "Finite-Lived Intangible Asset, Expected Amortization, Year One", "terseLabel": "2024" } } }, "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsFutureAmortizationExpenseDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear": { "auth_ref": [], "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Finite-Lived Intangible Asset, Expected Amortization, Remainder of Fiscal Year", "terseLabel": "Remaining 2023" } } }, "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsFutureAmortizationExpenseDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour": { "auth_ref": [ "r90" ], "crdr": "debit", "lang": { "en-us": { "role": { "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).", "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Four", "terseLabel": "2027" } } }, "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFour", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsFutureAmortizationExpenseDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree": { "auth_ref": [ "r90" ], "crdr": "debit", "lang": { "en-us": { "role": { "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).", "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Three", "terseLabel": "2026" } } }, "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearThree", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsFutureAmortizationExpenseDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo": { "auth_ref": [ "r90" ], "crdr": "debit", "lang": { "en-us": { "role": { "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).", "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Two", "terseLabel": "2025" } } }, "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsFutureAmortizationExpenseDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": { "auth_ref": [ "r268", "r270", "r271", "r272", "r440", "r441" ], "lang": { "en-us": { "role": { "documentation": "Information by major type or class of finite-lived intangible assets.", "label": "Finite-Lived Intangible Assets by Major Class [Axis]", "terseLabel": "Finite-Lived Intangible Assets by Major Class [Axis]" } } }, "localname": "FiniteLivedIntangibleAssetsByMajorClassAxis", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "stringItemType" }, "us-gaap_FiniteLivedIntangibleAssetsFutureAmortizationExpenseAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Finite-Lived Intangible Assets, Net, Amortization Expense, Fiscal Year Maturity [Abstract]", "terseLabel": "Finite-Lived Intangible Assets, Net, Amortization Expense, Fiscal Year Maturity [Abstract]" } } }, "localname": "FiniteLivedIntangibleAssetsFutureAmortizationExpenseAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsFutureAmortizationExpenseDetails" ], "xbrltype": "stringItemType" }, "us-gaap_FiniteLivedIntangibleAssetsGross": { "auth_ref": [ "r89", "r441" ], "calculation": { "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails": { "order": 1.0, "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount before amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.", "label": "Finite-Lived Intangible Assets, Gross", "terseLabel": "Gross" } } }, "localname": "FiniteLivedIntangibleAssetsGross", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain": { "auth_ref": [ "r43", "r44" ], "lang": { "en-us": { "role": { "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.", "label": "Finite-Lived Intangible Assets, Major Class Name [Domain]", "terseLabel": "Finite-Lived Intangible Assets, Major Class Name [Domain]" } } }, "localname": "FiniteLivedIntangibleAssetsMajorClassNameDomain", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "domainItemType" }, "us-gaap_FiniteLivedIntangibleAssetsNet": { "auth_ref": [ "r89", "r440" ], "calculation": { "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails": { "order": null, "parentTag": null, "root": true, "weight": null } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.", "label": "Finite-Lived Intangible Assets, Net", "totalLabel": "Net" } } }, "localname": "FiniteLivedIntangibleAssetsNet", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsFutureAmortizationExpenseDetails", "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1": { "auth_ref": [ "r440" ], "lang": { "en-us": { "role": { "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.", "label": "Finite-Lived Intangible Assets, Remaining Amortization Period", "terseLabel": "Weighted Average Useful Life Remaining (in years)" } } }, "localname": "FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "durationItemType" }, "us-gaap_FinitelivedIntangibleAssetsAcquired1": { "auth_ref": [ "r269" ], "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of increase in assets, excluding financial assets, lacking physical substance with a definite life, from an acquisition.", "label": "Finite-Lived Intangible Assets Acquired", "terseLabel": "Intangible assets acquired" } } }, "localname": "FinitelivedIntangibleAssetsAcquired1", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_ForeignCurrencyTransactionGainLossBeforeTax": { "auth_ref": [ "r393", "r394", "r395", "r396", "r543" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 14.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount, before tax, of realized and unrealized gain (loss) from foreign currency transaction.", "label": "Gain (Loss), Foreign Currency Transaction, before Tax", "negatedTerseLabel": "Loss on foreign currency translation" } } }, "localname": "ForeignCurrencyTransactionGainLossBeforeTax", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_GainLossOnSaleOfPropertyPlantEquipment": { "auth_ref": [ "r8" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 15.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of gain (loss) on sale or disposal of property, plant and equipment assets, including oil and gas property and timber property.", "label": "Gain (Loss) on Disposition of Property Plant Equipment", "negatedTerseLabel": "Gain on disposal of property and equipment" } } }, "localname": "GainLossOnSaleOfPropertyPlantEquipment", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_GeneralAndAdministrativeExpense": { "auth_ref": [ "r79", "r530" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited": { "order": 3.0, "parentTag": "us-gaap_OperatingExpenses", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "General and Administrative Expense", "terseLabel": "General and administrative" } } }, "localname": "GeneralAndAdministrativeExpense", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_Goodwill": { "auth_ref": [ "r113", "r258", "r442", "r581", "r596", "r728", "r729" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 3.0, "parentTag": "us-gaap_Assets", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.", "label": "Goodwill", "terseLabel": "Goodwill" } } }, "localname": "Goodwill", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Goodwill and Intangible Assets Disclosure [Abstract]" } } }, "localname": "GoodwillAndIntangibleAssetsDisclosureAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock": { "auth_ref": [ "r88" ], "lang": { "en-us": { "role": { "documentation": "The entire disclosure for goodwill and intangible assets.", "label": "Goodwill and Intangible Assets Disclosure [Text Block]", "terseLabel": "Goodwill and Other Intangible Assets" } } }, "localname": "GoodwillAndIntangibleAssetsDisclosureTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/IntangibleAssetsGoodwillandOther" ], "xbrltype": "textBlockItemType" }, "us-gaap_GrossProfit": { "auth_ref": [ "r77", "r142", "r178", "r192", "r198", "r201", "r244", "r280", "r281", "r283", "r284", "r285", "r287", "r289", "r291", "r292", "r392", "r578", "r736" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited": { "order": 2.0, "parentTag": "us-gaap_OperatingIncomeLoss", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity.", "label": "Gross Profit", "totalLabel": "Gross profit" } } }, "localname": "GrossProfit", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest": { "auth_ref": [ "r0", "r75", "r101", "r178", "r192", "r198", "r201", "r446", "r459", "r578" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited": { "order": 2.0, "parentTag": "us-gaap_NetIncomeLoss", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "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.", "label": "Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest", "totalLabel": "Income before income taxes" } } }, "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_IncomeStatementAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Income Statement [Abstract]", "terseLabel": "Income Statement [Abstract]" } } }, "localname": "IncomeStatementAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_IncomeTaxDisclosureAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Income Tax Disclosure [Abstract]" } } }, "localname": "IncomeTaxDisclosureAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_IncomeTaxDisclosureTextBlock": { "auth_ref": [ "r143", "r350", "r356", "r358", "r359", "r362", "r367", "r368", "r369", "r493" ], "lang": { "en-us": { "role": { "documentation": "The entire disclosure for income taxes. Disclosures may include net deferred tax liability or asset recognized in an enterprise's statement of financial position, net change during the year in the total valuation allowance, approximate tax effect of each type of temporary difference and carryforward that gives rise to a significant portion of deferred tax liabilities and deferred tax assets, utilization of a tax carryback, and tax uncertainties information.", "label": "Income Tax Disclosure [Text Block]", "terseLabel": "Income Taxes" } } }, "localname": "IncomeTaxDisclosureTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/IncomeTaxes" ], "xbrltype": "textBlockItemType" }, "us-gaap_IncomeTaxExpenseBenefit": { "auth_ref": [ "r104", "r106", "r156", "r157", "r186", "r354", "r363", "r464" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited": { "order": 1.0, "parentTag": "us-gaap_NetIncomeLoss", "weight": -1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.", "label": "Income Tax Expense (Benefit)", "terseLabel": "Provision for income taxes" } } }, "localname": "IncomeTaxExpenseBenefit", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited", "http://www.protolabs.com/role/IncomeTaxesDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_IncomeTaxesReceivable": { "auth_ref": [ "r58", "r696" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 5.0, "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Income Taxes Receivable, Current", "terseLabel": "Income taxes receivable" } } }, "localname": "IncomeTaxesReceivable", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_IncreaseDecreaseInAccountsPayable": { "auth_ref": [ "r7" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 7.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Increase (Decrease) in Accounts Payable", "terseLabel": "Accounts payable" } } }, "localname": "IncreaseDecreaseInAccountsPayable", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_IncreaseDecreaseInAccountsReceivable": { "auth_ref": [ "r7" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 4.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "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.", "label": "Increase (Decrease) in Accounts Receivable", "negatedLabel": "Accounts receivable" } } }, "localname": "IncreaseDecreaseInAccountsReceivable", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable": { "auth_ref": [ "r7" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 10.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Increase (Decrease) in Income Taxes Payable", "terseLabel": "Income taxes" } } }, "localname": "IncreaseDecreaseInAccruedIncomeTaxesPayable", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities": { "auth_ref": [ "r702" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 9.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of increase (decrease) in accrued expenses, and obligations classified as other.", "label": "Increase (Decrease) in Accrued Liabilities and Other Operating Liabilities", "terseLabel": "Accrued liabilities and other" } } }, "localname": "IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_IncreaseDecreaseInInventories": { "auth_ref": [ "r7" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 1.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "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.", "label": "Increase (Decrease) in Inventories", "negatedLabel": "Inventories" } } }, "localname": "IncreaseDecreaseInInventories", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_IncreaseDecreaseInOperatingCapitalAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Increase (Decrease) in Operating Capital [Abstract]", "terseLabel": "Changes in operating assets and liabilities:" } } }, "localname": "IncreaseDecreaseInOperatingCapitalAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "stringItemType" }, "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets": { "auth_ref": [ "r7" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 3.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": -1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of increase (decrease) in prepaid expenses, and assets classified as other.", "label": "Increase (Decrease) in Prepaid Expense and Other Assets", "negatedLabel": "Prepaid expenses and other" } } }, "localname": "IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_IncreaseDecreaseInStockholdersEquityRollForward": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.", "label": "Increase (Decrease) in Stockholders' Equity [Roll Forward]", "terseLabel": "Increase (Decrease) in Stockholders' Equity [Roll Forward]" } } }, "localname": "IncreaseDecreaseInStockholdersEquityRollForward", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "stringItemType" }, "us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements": { "auth_ref": [ "r162", "r163", "r164", "r168", "r312" ], "calculation": { "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails": { "order": 2.0, "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding", "weight": 1.0 } }, "lang": { "en-us": { "role": { "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.", "label": "Incremental Common Shares Attributable to Dilutive Effect of Share-Based Payment Arrangements", "terseLabel": "Employee stock options and other (in shares)" } } }, "localname": "IncrementalCommonSharesAttributableToShareBasedPaymentArrangements", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_InventoryDisclosureAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Inventory Disclosure [Abstract]" } } }, "localname": "InventoryDisclosureAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_InventoryDisclosureTextBlock": { "auth_ref": [ "r257" ], "lang": { "en-us": { "role": { "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.", "label": "Inventory Disclosure [Text Block]", "terseLabel": "Inventory" } } }, "localname": "InventoryDisclosureTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/Inventory" ], "xbrltype": "textBlockItemType" }, "us-gaap_InventoryGross": { "auth_ref": [ "r697" ], "calculation": { "http://www.protolabs.com/role/InventoryDetails": { "order": 1.0, "parentTag": "us-gaap_InventoryNet", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Inventory, Gross", "terseLabel": "Total inventory" } } }, "localname": "InventoryGross", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/InventoryDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_InventoryNet": { "auth_ref": [ "r119", "r574", "r596" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 2.0, "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0 }, "http://www.protolabs.com/role/InventoryDetails": { "order": null, "parentTag": null, "root": true, "weight": null } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.", "label": "Inventory, Net", "terseLabel": "Inventory", "totalLabel": "Inventory, net of allowance" } } }, "localname": "InventoryNet", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets", "http://www.protolabs.com/role/InventoryDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_InventoryValuationReserves": { "auth_ref": [ "r40", "r697" ], "calculation": { "http://www.protolabs.com/role/InventoryDetails": { "order": 2.0, "parentTag": "us-gaap_InventoryNet", "weight": -1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of valuation reserve for inventory.", "label": "Inventory Valuation Reserves", "negatedTerseLabel": "Allowance for obsolescence" } } }, "localname": "InventoryValuationReserves", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/InventoryDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_InvestmentTextBlock": { "auth_ref": [ "r686", "r687", "r709" ], "lang": { "en-us": { "role": { "documentation": "The entire disclosure for investment.", "label": "Investment [Text Block]", "terseLabel": "Marketable Securities" } } }, "localname": "InvestmentTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecurities" ], "xbrltype": "textBlockItemType" }, "us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Tabular disclosure of maturities of an entity's investments as well as any other information pertinent to the investments.", "label": "Investments Classified by Contractual Maturity Date [Table Text Block]", "terseLabel": "Investments Classified by Contractual Maturity Date" } } }, "localname": "InvestmentsClassifiedByContractualMaturityDateTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_InvestmentsDebtAndEquitySecuritiesAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Investments, Debt and Equity Securities [Abstract]" } } }, "localname": "InvestmentsDebtAndEquitySecuritiesAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_Liabilities": { "auth_ref": [ "r24", "r142", "r244", "r280", "r281", "r283", "r284", "r285", "r287", "r289", "r291", "r292", "r372", "r373", "r374", "r392", "r507", "r577", "r608", "r736", "r770", "r771" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 1.0, "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Sum of the carrying amounts as of the balance sheet date of all liabilities that are recognized. Liabilities are probable future sacrifices of economic benefits arising from present obligations of an entity to transfer assets or provide services to other entities in the future.", "label": "Liabilities", "totalLabel": "Total liabilities" } } }, "localname": "Liabilities", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_LiabilitiesAndStockholdersEquity": { "auth_ref": [ "r68", "r100", "r457", "r596", "r703", "r727", "r768" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": null, "parentTag": null, "root": true, "weight": null } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any.", "label": "Liabilities and Equity", "totalLabel": "Total liabilities and shareholders' equity" } } }, "localname": "LiabilitiesAndStockholdersEquity", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_LiabilitiesAndStockholdersEquityAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Liabilities and Equity [Abstract]", "terseLabel": "Liabilities and shareholders' equity" } } }, "localname": "LiabilitiesAndStockholdersEquityAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "stringItemType" }, "us-gaap_LiabilitiesCurrent": { "auth_ref": [ "r26", "r111", "r142", "r244", "r280", "r281", "r283", "r284", "r285", "r287", "r289", "r291", "r292", "r372", "r373", "r374", "r392", "r596", "r736", "r770", "r771" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 1.0, "parentTag": "us-gaap_Liabilities", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "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.", "label": "Liabilities, Current", "totalLabel": "Total current liabilities" } } }, "localname": "LiabilitiesCurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_LiabilitiesCurrentAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Liabilities, Current [Abstract]", "terseLabel": "Current liabilities" } } }, "localname": "LiabilitiesCurrentAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "stringItemType" }, "us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock": { "auth_ref": [ "r19" ], "lang": { "en-us": { "role": { "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.", "label": "Long-Lived Assets by Geographic Areas [Table Text Block]", "terseLabel": "Long-Lived Assets by Geographic Areas" } } }, "localname": "LongLivedAssetsByGeographicAreasTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/SegmentReportingTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_MarketableSecuritiesCurrent": { "auth_ref": [ "r695" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 1.0, "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of investment in marketable security, classified as current.", "label": "Marketable Securities, Current", "terseLabel": "Short-term marketable securities" } } }, "localname": "MarketableSecuritiesCurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_MarketableSecuritiesNoncurrent": { "auth_ref": [ "r695" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 5.0, "parentTag": "us-gaap_Assets", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of investment in marketable security, classified as noncurrent.", "label": "Marketable Securities, Noncurrent", "terseLabel": "Long-term marketable securities" } } }, "localname": "MarketableSecuritiesNoncurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_MarketingRelatedIntangibleAssetsMember": { "auth_ref": [ "r20" ], "lang": { "en-us": { "role": { "documentation": "Marketing-related asset, including, but not limited to, internet domain name, newspaper mast head, and trademark.", "label": "Marketing-Related Intangible Assets [Member]", "terseLabel": "Marketing assets" } } }, "localname": "MarketingRelatedIntangibleAssetsMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "domainItemType" }, "us-gaap_MoneyMarketFundsMember": { "auth_ref": [ "r740" ], "lang": { "en-us": { "role": { "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.", "label": "Money Market Funds [Member]", "terseLabel": "Money market mutual fund" } } }, "localname": "MoneyMarketFundsMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/FairValueMeasurementsFinancialAssetsMeasuredAtFairValueOnARecurringBasisDetails" ], "xbrltype": "domainItemType" }, "us-gaap_NetCashProvidedByUsedInFinancingActivities": { "auth_ref": [ "r139" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 2.0, "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit.", "label": "Net Cash Provided by (Used in) Financing Activities", "totalLabel": "Net cash used in financing activities" } } }, "localname": "NetCashProvidedByUsedInFinancingActivities", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Net Cash Provided by (Used in) Financing Activities [Abstract]", "terseLabel": "Financing activities" } } }, "localname": "NetCashProvidedByUsedInFinancingActivitiesAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "stringItemType" }, "us-gaap_NetCashProvidedByUsedInInvestingActivities": { "auth_ref": [ "r139" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 3.0, "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets.", "label": "Net Cash Provided by (Used in) Investing Activities", "totalLabel": "Net cash provided by (used in) investing activities" } } }, "localname": "NetCashProvidedByUsedInInvestingActivities", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Net Cash Provided by (Used in) Investing Activities [Abstract]", "terseLabel": "Investing activities" } } }, "localname": "NetCashProvidedByUsedInInvestingActivitiesAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "stringItemType" }, "us-gaap_NetCashProvidedByUsedInOperatingActivities": { "auth_ref": [ "r83", "r84", "r85" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 4.0, "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect", "weight": 1.0 } }, "lang": { "en-us": { "role": { "documentation": "Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities.", "label": "Net Cash Provided by (Used in) Operating Activities", "totalLabel": "Net cash provided by operating activities" } } }, "localname": "NetCashProvidedByUsedInOperatingActivities", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Net Cash Provided by (Used in) Operating Activities [Abstract]", "terseLabel": "Operating activities" } } }, "localname": "NetCashProvidedByUsedInOperatingActivitiesAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "stringItemType" }, "us-gaap_NetIncomeLoss": { "auth_ref": [ "r76", "r85", "r102", "r109", "r126", "r129", "r133", "r142", "r148", "r150", "r151", "r152", "r153", "r156", "r157", "r165", "r178", "r192", "r198", "r201", "r244", "r280", "r281", "r283", "r284", "r285", "r287", "r289", "r291", "r292", "r384", "r392", "r460", "r528", "r544", "r545", "r578", "r607", "r736" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 12.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0 }, "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited": { "order": null, "parentTag": null, "root": true, "weight": null } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.", "label": "Net Income (Loss)", "terseLabel": "Net income", "totalLabel": "Net (loss) income", "verboseLabel": "Net (loss) income" } } }, "localname": "NetIncomeLoss", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited", "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity", "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails", "http://xbrl.sec.gov/ecd/role/PvpDisclosure" ], "xbrltype": "monetaryItemType" }, "us-gaap_NoncompeteAgreementsMember": { "auth_ref": [ "r54" ], "lang": { "en-us": { "role": { "documentation": "Agreement in which one party agrees not to pursue a similar trade in competition with another party.", "label": "Noncompete Agreements [Member]", "terseLabel": "Non-compete agreement" } } }, "localname": "NoncompeteAgreementsMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "domainItemType" }, "us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent": { "auth_ref": [ "r21", "r30" ], "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount after tax, before reclassification adjustments, of other comprehensive income (loss), attributable to parent.", "label": "OCI, before Reclassifications, Net of Tax, Attributable to Parent", "terseLabel": "Other comprehensive income (loss) before reclassifications" } } }, "localname": "OciBeforeReclassificationsNetOfTaxAttributableToParent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossChangesInAccumulatedOtherComprehensiveIncomeLossDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_OperatingExpenses": { "auth_ref": [], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited": { "order": 1.0, "parentTag": "us-gaap_OperatingIncomeLoss", "weight": -1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Operating Expenses", "totalLabel": "Total operating expenses" } } }, "localname": "OperatingExpenses", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_OperatingExpensesAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Operating Expenses [Abstract]", "terseLabel": "Operating expenses" } } }, "localname": "OperatingExpensesAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "stringItemType" }, "us-gaap_OperatingIncomeLoss": { "auth_ref": [ "r178", "r192", "r198", "r201", "r578" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited": { "order": 2.0, "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "The net result for the period of deducting operating expenses from operating revenues.", "label": "Operating Income (Loss)", "totalLabel": "Income from operations", "verboseLabel": "Total Income from Operations" } } }, "localname": "OperatingIncomeLoss", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited", "http://www.protolabs.com/role/SegmentReportingIncomeFromOperationbyGeographicAreasDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_OperatingLeaseLiabilityCurrent": { "auth_ref": [ "r404" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 2.0, "parentTag": "us-gaap_LiabilitiesCurrent", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.", "label": "Operating Lease, Liability, Current", "terseLabel": "Current operating lease liabilities" } } }, "localname": "OperatingLeaseLiabilityCurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_OperatingLeaseLiabilityNoncurrent": { "auth_ref": [ "r404" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 4.0, "parentTag": "us-gaap_Liabilities", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.", "label": "Operating Lease, Liability, Noncurrent", "terseLabel": "Long-term operating lease liabilities" } } }, "localname": "OperatingLeaseLiabilityNoncurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_OperatingLeaseRightOfUseAsset": { "auth_ref": [ "r403" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 8.0, "parentTag": "us-gaap_Assets", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of lessee's right to use underlying asset under operating lease.", "label": "Operating Lease, Right-of-Use Asset", "terseLabel": "Operating lease assets" } } }, "localname": "OperatingLeaseRightOfUseAsset", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_OperatingSegmentsMember": { "auth_ref": [ "r191", "r192", "r193", "r194", "r195", "r201" ], "lang": { "en-us": { "role": { "documentation": "Identifies 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.", "label": "Operating Segments [Member]", "terseLabel": "Operating Segments" } } }, "localname": "OperatingSegmentsMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/SegmentReportingIncomeFromOperationbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingRevenuebyGeographicAreasDetails" ], "xbrltype": "domainItemType" }, "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Organization, Consolidation and Presentation of Financial Statements [Abstract]" } } }, "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock": { "auth_ref": [ "r60", "r95", "r489", "r490" ], "lang": { "en-us": { "role": { "documentation": "The entire disclosure for organization, consolidation and basis of presentation of financial statements disclosure.", "label": "Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]", "terseLabel": "Basis of Presentation" } } }, "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/BasisofPresentation" ], "xbrltype": "textBlockItemType" }, "us-gaap_OtherAssetsNoncurrent": { "auth_ref": [ "r115" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 2.0, "parentTag": "us-gaap_Assets", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of noncurrent assets classified as other.", "label": "Other Assets, Noncurrent", "terseLabel": "Other long-term assets" } } }, "localname": "OtherAssetsNoncurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax": { "auth_ref": [ "r3", "r74" ], "crdr": "credit", "lang": { "en-us": { "role": { "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.", "label": "Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, before Tax", "negatedTerseLabel": "Foreign currency losses" } } }, "localname": "OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax": { "auth_ref": [ "r3" ], "crdr": "credit", "lang": { "en-us": { "role": { "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.", "label": "Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax", "terseLabel": "Foreign currency translation adjustment" } } }, "localname": "OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "monetaryItemType" }, "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Other Comprehensive Income (Loss), Net of Tax [Abstract]", "terseLabel": "Other comprehensive income (loss)" } } }, "localname": "OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "stringItemType" }, "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent": { "auth_ref": [ "r6", "r11", "r96", "r127", "r130" ], "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount after tax of other comprehensive income (loss) attributable to parent entity.", "label": "Other Comprehensive Income (Loss), Net of Tax, Portion Attributable to Parent", "terseLabel": "Net current-period other comprehensive income (loss)" } } }, "localname": "OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossChangesInAccumulatedOtherComprehensiveIncomeLossDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax": { "auth_ref": [ "r121", "r124", "r243" ], "crdr": "credit", "lang": { "en-us": { "role": { "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.", "label": "OCI, Debt Securities, Available-for-Sale, Unrealized Holding Gain (Loss), before Adjustment, after Tax", "terseLabel": "Net unrealized gains (losses) on investments in securities" } } }, "localname": "OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "monetaryItemType" }, "us-gaap_OtherIntangibleAssetsNet": { "auth_ref": [], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 6.0, "parentTag": "us-gaap_Assets", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount after accumulated amortization of finite-lived and indefinite-lived intangible assets classified as other.", "label": "Other Intangible Assets, Net", "terseLabel": "Other intangible assets, net" } } }, "localname": "OtherIntangibleAssetsNet", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_OtherLiabilitiesNoncurrent": { "auth_ref": [ "r27" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 2.0, "parentTag": "us-gaap_Liabilities", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer.", "label": "Other Liabilities, Noncurrent", "terseLabel": "Other long-term liabilities" } } }, "localname": "OtherLiabilitiesNoncurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_OtherNonoperatingIncomeExpense": { "auth_ref": [ "r80" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited": { "order": 1.0, "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of income (expense) related to nonoperating activities, classified as other.", "label": "Other Nonoperating Income (Expense)", "terseLabel": "Other (loss) income, net" } } }, "localname": "OtherNonoperatingIncomeExpense", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_OtherOperatingActivitiesCashFlowStatement": { "auth_ref": [], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 8.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Other cash or noncash adjustments to reconcile net income to cash provided by (used in) operating activities that are not separately disclosed in the statement of cash flows (for example, cash received or cash paid during the current period for miscellaneous operating activities, net change during the reporting period in other assets or other liabilities).", "label": "Other Operating Activities, Cash Flow Statement", "terseLabel": "Other" } } }, "localname": "OtherOperatingActivitiesCashFlowStatement", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_PaymentsForRepurchaseOfCommonStock": { "auth_ref": [ "r34" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 4.0, "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "The cash outflow to reacquire common stock during the period.", "label": "Payments for Repurchase of Common Stock", "negatedLabel": "Repurchases of common stock" } } }, "localname": "PaymentsForRepurchaseOfCommonStock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation": { "auth_ref": [ "r138" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 1.0, "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": -1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of cash outflow to satisfy grantee's tax withholding obligation for award under share-based payment arrangement.", "label": "Payment, Tax Withholding, Share-Based Payment Arrangement", "negatedLabel": "Purchases of shares withheld for tax obligations" } } }, "localname": "PaymentsRelatedToTaxWithholdingForShareBasedCompensation", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt": { "auth_ref": [ "r33", "r136", "r211" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 4.0, "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": -1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "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).", "label": "Payments to Acquire Debt Securities, Available-for-Sale", "negatedLabel": "Purchases of marketable securities" } } }, "localname": "PaymentsToAcquireAvailableForSaleSecuritiesDebt", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": { "auth_ref": [ "r82" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 5.0, "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": -1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "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.", "label": "Payments to Acquire Property, Plant, and Equipment", "negatedLabel": "Purchases of property, equipment and other capital assets" } } }, "localname": "PaymentsToAcquirePropertyPlantAndEquipment", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_PerformanceSharesMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Share-based payment arrangement awarded for meeting performance target.", "label": "Performance Shares [Member]", "terseLabel": "Performance Shares" } } }, "localname": "PerformanceSharesMember", "nsuri": "http://fasb.org/us-gaap/2023", "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" ], "xbrltype": "domainItemType" }, "us-gaap_PlanNameAxis": { "auth_ref": [ "r741", "r742", "r743", "r744", "r745", "r746", "r747", "r748", "r749", "r750", "r751", "r752", "r753", "r754", "r755", "r756", "r757", "r758", "r759", "r760", "r761", "r762", "r763", "r764", "r765", "r766" ], "lang": { "en-us": { "role": { "documentation": "Information by plan name for share-based payment arrangement.", "label": "Plan Name [Axis]", "terseLabel": "Plan Name [Axis]" } } }, "localname": "PlanNameAxis", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "xbrltype": "stringItemType" }, "us-gaap_PlanNameDomain": { "auth_ref": [ "r741", "r742", "r743", "r744", "r745", "r746", "r747", "r748", "r749", "r750", "r751", "r752", "r753", "r754", "r755", "r756", "r757", "r758", "r759", "r760", "r761", "r762", "r763", "r764", "r765", "r766" ], "lang": { "en-us": { "role": { "documentation": "Plan name for share-based payment arrangement.", "label": "Plan Name [Domain]", "terseLabel": "Plan Name [Domain]" } } }, "localname": "PlanNameDomain", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "xbrltype": "domainItemType" }, "us-gaap_PreferredStockParOrStatedValuePerShare": { "auth_ref": [ "r62", "r295" ], "lang": { "en-us": { "role": { "documentation": "Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer.", "label": "Preferred Stock, Par or Stated Value Per Share", "terseLabel": "Preferred stock, par value (in dollars per share)" } } }, "localname": "PreferredStockParOrStatedValuePerShare", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "xbrltype": "perShareItemType" }, "us-gaap_PreferredStockSharesAuthorized": { "auth_ref": [ "r62", "r508" ], "lang": { "en-us": { "role": { "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.", "label": "Preferred Stock, Shares Authorized", "terseLabel": "Preferred stock, authorized (in shares)" } } }, "localname": "PreferredStockSharesAuthorized", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "xbrltype": "sharesItemType" }, "us-gaap_PreferredStockSharesIssued": { "auth_ref": [ "r62", "r295" ], "lang": { "en-us": { "role": { "documentation": "Total number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) issued to shareholders (includes related preferred shares that were issued, repurchased, and remain in the treasury). May be all or portion of the number of preferred shares authorized. Excludes preferred shares that are classified as debt.", "label": "Preferred Stock, Shares Issued", "terseLabel": "Preferred stock, issued (in shares)" } } }, "localname": "PreferredStockSharesIssued", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "xbrltype": "sharesItemType" }, "us-gaap_PreferredStockSharesOutstanding": { "auth_ref": [ "r62", "r508", "r526", "r783", "r784" ], "lang": { "en-us": { "role": { "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.", "label": "Preferred Stock, Shares Outstanding", "terseLabel": "Preferred stock, outstanding (in shares)" } } }, "localname": "PreferredStockSharesOutstanding", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheetsParenthetical" ], "xbrltype": "sharesItemType" }, "us-gaap_PreferredStockValue": { "auth_ref": [ "r62", "r453", "r596" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 5.0, "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "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.", "label": "Preferred Stock, Value, Issued", "terseLabel": "Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of each of June\u00a030, 2023, and December\u00a031, 2022" } } }, "localname": "PreferredStockValue", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_PrepaidExpenseAndOtherAssetsCurrent": { "auth_ref": [ "r698" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 3.0, "parentTag": "us-gaap_AssetsCurrent", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Prepaid Expense and Other Assets, Current", "terseLabel": "Prepaid expenses and other current assets" } } }, "localname": "PrepaidExpenseAndOtherAssetsCurrent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions": { "auth_ref": [ "r5", "r17" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 3.0, "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of cash inflow from issuance of shares under share-based payment arrangement. Includes, but is not limited to, option exercised.", "label": "Proceeds, Issuance of Shares, Share-Based Payment Arrangement, Including Option Exercised", "terseLabel": "Proceeds from exercises of stock options" } } }, "localname": "ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities": { "auth_ref": [ "r136", "r137", "r711" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 3.0, "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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).", "label": "Proceeds from Maturities, Prepayments and Calls of Debt Securities, Available-for-Sale", "terseLabel": "Proceeds from call redemptions and maturities of marketable securities" } } }, "localname": "ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_ProceedsFromSaleOfAvailableForSaleSecuritiesDebt": { "auth_ref": [ "r32", "r136", "r211", "r242" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 1.0, "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of cash inflow from sale of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).", "label": "Proceeds from Sale of Debt Securities, Available-for-Sale", "terseLabel": "Proceeds from sales of marketable securities" } } }, "localname": "ProceedsFromSaleOfAvailableForSaleSecuritiesDebt", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_ProceedsFromSaleOfProductiveAssets": { "auth_ref": [ "r81" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 2.0, "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "The cash inflow from the sale of property, plant and equipment (capital expenditures), software, and other intangible assets.", "label": "Proceeds from Sale of Productive Assets", "terseLabel": "Proceeds from sales of property, equipment and other capital assets" } } }, "localname": "ProceedsFromSaleOfProductiveAssets", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_PropertyPlantAndEquipmentNet": { "auth_ref": [ "r10", "r449", "r458", "r596" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 4.0, "parentTag": "us-gaap_Assets", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "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.", "label": "Property, Plant and Equipment, Net", "terseLabel": "Property and equipment, net", "verboseLabel": "Total Long-lived Assets" } } }, "localname": "PropertyPlantAndEquipmentNet", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets", "http://www.protolabs.com/role/SegmentReportingLongLivedAssetsbyGeographicAreasDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent": { "auth_ref": [ "r21", "r30" ], "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount after tax of reclassification adjustments of other comprehensive income (loss) attributable to parent.", "label": "Reclassification from AOCI, Current Period, Net of Tax, Attributable to Parent", "negatedTerseLabel": "Amounts reclassified from accumulated other comprehensive loss" } } }, "localname": "ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossChangesInAccumulatedOtherComprehensiveIncomeLossDetails", "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossNarrativeDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_RegulatedOperationsAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Regulated Operations [Abstract]" } } }, "localname": "RegulatedOperationsAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_ResearchAndDevelopmentExpense": { "auth_ref": [ "r59", "r349", "r778" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited": { "order": 4.0, "parentTag": "us-gaap_OperatingExpenses", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "The aggregate costs incurred (1) in a planned search or critical investigation aimed at discovery of new knowledge with the hope that such knowledge will be useful in developing a new product or service, a new process or technique, or in bringing about a significant improvement to an existing product or process; or (2) to translate research findings or other knowledge into a plan or design for a new product or process or for a significant improvement to an existing product or process whether intended for sale or the entity's use, during the reporting period charged to research and development projects, including the costs of developing computer software up to the point in time of achieving technological feasibility, and costs allocated in accounting for a business combination to in-process projects deemed to have no alternative future use.", "label": "Research and Development Expense", "terseLabel": "Research and development" } } }, "localname": "ResearchAndDevelopmentExpense", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_RestrictedStockMember": { "auth_ref": [ "r36" ], "lang": { "en-us": { "role": { "documentation": "Stock including a provision that prohibits sale or substantive sale of an equity instrument for a specified period of time or until specified performance conditions are met.", "label": "Restricted Stock [Member]", "terseLabel": "Restricted Stock" } } }, "localname": "RestrictedStockMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails", "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "domainItemType" }, "us-gaap_RetainedEarningsAccumulatedDeficit": { "auth_ref": [ "r65", "r92", "r456", "r486", "r488", "r492", "r509", "r596" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 3.0, "parentTag": "us-gaap_StockholdersEquity", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of accumulated undistributed earnings (deficit).", "label": "Retained Earnings (Accumulated Deficit)", "terseLabel": "Retained earnings" } } }, "localname": "RetainedEarningsAccumulatedDeficit", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "monetaryItemType" }, "us-gaap_RetainedEarningsMember": { "auth_ref": [ "r107", "r145", "r146", "r147", "r149", "r155", "r157", "r245", "r246", "r345", "r346", "r347", "r360", "r361", "r375", "r377", "r378", "r380", "r382", "r483", "r485", "r494", "r783" ], "lang": { "en-us": { "role": { "documentation": "Accumulated undistributed earnings (deficit).", "label": "Retained Earnings [Member]", "terseLabel": "Retained Earnings" } } }, "localname": "RetainedEarningsMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "domainItemType" }, "us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax": { "auth_ref": [ "r179", "r180", "r191", "r196", "r197", "r203", "r205", "r207", "r298", "r299", "r439" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited": { "order": 1.0, "parentTag": "us-gaap_GrossProfit", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "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.", "label": "Revenue from Contract with Customer, Including Assessed Tax", "terseLabel": "Revenue", "verboseLabel": "Total revenue" } } }, "localname": "RevenueFromContractWithCustomerIncludingAssessedTax", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited", "http://www.protolabs.com/role/SegmentReportingDisaggregationofRevenueDetails", "http://www.protolabs.com/role/SegmentReportingRevenuebyGeographicAreasDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock": { "auth_ref": [ "r18" ], "lang": { "en-us": { "role": { "documentation": "Tabular disclosure of revenue from external customers by geographic areas attributed to the entity's country of domicile and to foreign countries from which the entity derives revenue.", "label": "Revenue from External Customers by Geographic Areas [Table Text Block]", "terseLabel": "Revenue from External Customers by Geographic Areas" } } }, "localname": "RevenueFromExternalCustomersByGeographicAreasTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/SegmentReportingTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_RevenuesAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Revenues [Abstract]", "terseLabel": "Statements of Operations:" } } }, "localname": "RevenuesAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "stringItemType" }, "us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetByMajorClassTable": { "auth_ref": [ "r43" ], "lang": { "en-us": { "role": { "documentation": "Tabular disclosure of the major classes of acquired finite-lived intangible assets showing the amount, any significant residual value, weighted average amortization period, and other characteristics. A major class is composed of intangible assets that can be grouped together because they are similar, either by nature or by their use in the operations of the company.", "label": "Schedule of Acquired Finite-Lived Intangible Asset by Major Class [Table]", "terseLabel": "Schedule of Acquired Finite-Lived Intangible Asset by Major Class [Table]" } } }, "localname": "ScheduleOfAcquiredFiniteLivedIntangibleAssetByMajorClassTable", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsNarrativeDetails", "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "stringItemType" }, "us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable": { "auth_ref": [ "r36" ], "lang": { "en-us": { "role": { "documentation": "Schedule for securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) in the future that were not included in the computation of diluted EPS because to do so would increase EPS amounts or decrease loss per share amounts for the period presented, by Antidilutive Securities.", "label": "Schedule of Antidilutive Securities Excluded from Computation of Earnings Per Share [Table]", "terseLabel": "Schedule of Antidilutive Securities Excluded from Computation of Earnings Per Share [Table]" } } }, "localname": "ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "xbrltype": "stringItemType" }, "us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems": { "auth_ref": [ "r212", "r213", "r214", "r215", "r216", "r217", "r218", "r219", "r220", "r221", "r222", "r223" ], "lang": { "en-us": { "role": { "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.", "label": "Debt Securities, Available-for-Sale [Line Items]", "terseLabel": "Debt Securities, Available-for-Sale [Line Items]" } } }, "localname": "ScheduleOfAvailableForSaleSecuritiesLineItems", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "xbrltype": "stringItemType" }, "us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock": { "auth_ref": [ "r73" ], "lang": { "en-us": { "role": { "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.", "label": "Comprehensive Income (Loss) [Table Text Block]", "terseLabel": "Comprehensive Income (Loss)" } } }, "localname": "ScheduleOfComprehensiveIncomeLossTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock": { "auth_ref": [ "r708" ], "lang": { "en-us": { "role": { "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.", "label": "Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]", "terseLabel": "Schedule of Earnings Per Share, Basic and Diluted" } } }, "localname": "ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/NetLossIncomeperCommonShareTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock": { "auth_ref": [ "r43", "r44" ], "lang": { "en-us": { "role": { "documentation": "Tabular disclosure of assets, excluding financial assets and goodwill, lacking physical substance with a finite life, by either major class or business segment.", "label": "Schedule of Finite-Lived Intangible Assets [Table Text Block]", "terseLabel": "Schedule of Finite-Lived Intangible Assets" } } }, "localname": "ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_ScheduleOfInventoryCurrentTableTextBlock": { "auth_ref": [ "r22", "r69", "r70", "r71" ], "lang": { "en-us": { "role": { "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.", "label": "Schedule of Inventory, Current [Table Text Block]", "terseLabel": "Schedule of Inventory, Current" } } }, "localname": "ScheduleOfInventoryCurrentTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/InventoryTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock": { "auth_ref": [ "r48" ], "lang": { "en-us": { "role": { "documentation": "Tabular disclosure of the changes in outstanding nonvested performance-based units.", "label": "Schedule of Nonvested Performance-Based Units Activity [Table Text Block]", "terseLabel": "Schedule of Nonvested Performance-Based Units Activity" } } }, "localname": "ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_ScheduleOfSegmentReportingInformationBySegmentTable": { "auth_ref": [ "r37", "r38", "r39", "r41" ], "lang": { "en-us": { "role": { "documentation": "A table disclosing the profit or loss and total assets for each reportable segment of the entity. 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.", "label": "Schedule of Segment Reporting Information, by Segment [Table]", "terseLabel": "Schedule of Segment Reporting Information, by Segment [Table]" } } }, "localname": "ScheduleOfSegmentReportingInformationBySegmentTable", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/SegmentReportingDisaggregationofRevenueDetails", "http://www.protolabs.com/role/SegmentReportingIncomeFromOperationbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingRevenuebyGeographicAreasDetails" ], "xbrltype": "stringItemType" }, "us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable": { "auth_ref": [ "r309", "r311", "r314", "r315", "r316", "r317", "r318", "r319", "r320", "r321", "r322", "r323", "r324", "r325", "r326", "r327", "r328", "r329", "r330", "r331", "r332", "r333", "r334", "r335", "r336", "r337", "r338", "r339" ], "lang": { "en-us": { "role": { "documentation": "Disclosure of information about share-based payment arrangement.", "label": "Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table]", "terseLabel": "Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table]" } } }, "localname": "ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "xbrltype": "stringItemType" }, "us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock": { "auth_ref": [ "r15", "r16", "r47" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Payment Arrangement, Option, Activity [Table Text Block]", "terseLabel": "Share-Based Payment Arrangement, Option, Activity" } } }, "localname": "ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock": { "auth_ref": [ "r93" ], "lang": { "en-us": { "role": { "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.", "label": "Schedule of Share-Based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block]", "terseLabel": "Schedule of Share-Based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions" } } }, "localname": "ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock": { "auth_ref": [ "r93" ], "lang": { "en-us": { "role": { "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.", "label": "Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]", "terseLabel": "Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions" } } }, "localname": "ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]", "terseLabel": "Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity" } } }, "localname": "ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock": { "auth_ref": [ "r44" ], "lang": { "en-us": { "role": { "documentation": "Tabular disclosure of the amount of amortization expense expected to be recorded in succeeding fiscal years for finite-lived intangible assets.", "label": "Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]", "terseLabel": "Schedule of Finite-Lived Intangible Assets, Future Amortization Expense" } } }, "localname": "ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsTables" ], "xbrltype": "textBlockItemType" }, "us-gaap_SegmentDomain": { "auth_ref": [ "r175", "r178", "r179", "r180", "r181", "r182", "r183", "r184", "r185", "r186", "r187", "r188", "r189", "r191", "r192", "r193", "r194", "r195", "r196", "r197", "r198", "r199", "r201", "r207", "r259", "r260", "r261", "r262", "r263", "r264", "r265", "r266", "r267", "r274", "r275", "r465", "r466", "r467", "r468", "r469", "r470", "r471", "r472", "r473", "r474", "r475", "r581", "r685", "r780" ], "lang": { "en-us": { "role": { "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.", "label": "Segments [Domain]", "terseLabel": "Segments [Domain]" } } }, "localname": "SegmentDomain", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/SegmentReportingIncomeFromOperationbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingRevenuebyGeographicAreasDetails" ], "xbrltype": "domainItemType" }, "us-gaap_SegmentReportingAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Segment Reporting [Abstract]" } } }, "localname": "SegmentReportingAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_SegmentReportingDisclosureTextBlock": { "auth_ref": [ "r174", "r175", "r176", "r177", "r178", "r190", "r195", "r199", "r200", "r201", "r202", "r203", "r204", "r207" ], "lang": { "en-us": { "role": { "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.", "label": "Segment Reporting Disclosure [Text Block]", "terseLabel": "Segment Reporting" } } }, "localname": "SegmentReportingDisclosureTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/SegmentReporting" ], "xbrltype": "textBlockItemType" }, "us-gaap_SegmentReportingInformationLineItems": { "auth_ref": [], "lang": { "en-us": { "role": { "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.", "label": "Segment Reporting Information [Line Items]", "terseLabel": "Segment Reporting Information [Line Items]" } } }, "localname": "SegmentReportingInformationLineItems", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/SegmentReportingDisaggregationofRevenueDetails", "http://www.protolabs.com/role/SegmentReportingIncomeFromOperationbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingRevenuebyGeographicAreasDetails" ], "xbrltype": "stringItemType" }, "us-gaap_SellingAndMarketingExpense": { "auth_ref": [], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited": { "order": 2.0, "parentTag": "us-gaap_OperatingExpenses", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "The aggregate total amount of expenses directly related to the marketing or selling of products or services.", "label": "Selling and Marketing Expense", "terseLabel": "Marketing and sales" } } }, "localname": "SellingAndMarketingExpense", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_ShareBasedCompensation": { "auth_ref": [ "r7" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited": { "order": 6.0, "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities", "weight": 1.0 } }, "crdr": "debit", "lang": { "en-us": { "role": { "documentation": "Amount of noncash expense for share-based payment arrangement.", "label": "Share-Based Payment Arrangement, Noncash Expense", "terseLabel": "Stock-based compensation expense" } } }, "localname": "ShareBasedCompensation", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofCashFlowsUnaudited" ], "xbrltype": "monetaryItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1": { "auth_ref": [ "r594" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Award Vesting Period", "terseLabel": "Stock-based award, vesting period (in years)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "xbrltype": "durationItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate": { "auth_ref": [ "r46" ], "lang": { "en-us": { "role": { "documentation": "Discount rate from fair value on offering date that participants pay for shares.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Discount from Market Price, Offering Date", "terseLabel": "Discount from market price (in percent)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "xbrltype": "percentItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod": { "auth_ref": [ "r330" ], "lang": { "en-us": { "role": { "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeited in Period", "negatedTerseLabel": "Forfeited (in shares)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue": { "auth_ref": [ "r330" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeitures, Weighted Average Grant Date Fair Value", "terseLabel": "Forfeited, weighted-average grant date fair value (in dollars per share)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "xbrltype": "perShareItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod": { "auth_ref": [ "r328" ], "lang": { "en-us": { "role": { "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).", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period", "terseLabel": "Granted (in shares)", "verboseLabel": "Awards granted in period (in shares)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": { "auth_ref": [ "r328" ], "lang": { "en-us": { "role": { "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).", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value", "terseLabel": "Granted, weighted-average grant date fair value (in dollars per share)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "xbrltype": "perShareItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber": { "auth_ref": [ "r325", "r326" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Number", "periodEndLabel": "Ending balance (in shares)", "periodStartLabel": "Beginning balance (in shares)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue": { "auth_ref": [ "r325", "r326" ], "lang": { "en-us": { "role": { "documentation": "Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value", "periodEndLabel": "Ending balance, weighted-average grant date fair value (in dollars per share)", "periodStartLabel": "Beginning balance, weighted-average grant date fair value (in dollars per share)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "xbrltype": "perShareItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value [Abstract]", "terseLabel": "Weighted- Average Grant Date Fair Value Per Share" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "xbrltype": "stringItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod": { "auth_ref": [ "r329" ], "lang": { "en-us": { "role": { "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period", "negatedTerseLabel": "Restrictions lapsed (in shares)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue": { "auth_ref": [ "r329" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period, Weighted Average Grant Date Fair Value", "terseLabel": "Restrictions lapsed, weighted-average grant date fair value (in dollars per share)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "xbrltype": "perShareItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate": { "auth_ref": [ "r337" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Dividend Rate", "terseLabel": "Expected dividend yield" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "xbrltype": "percentItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate": { "auth_ref": [ "r336" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Volatility Rate", "terseLabel": "Expected volatility" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "xbrltype": "percentItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate": { "auth_ref": [ "r338" ], "lang": { "en-us": { "role": { "documentation": "The risk-free interest rate assumption that is used in valuing an option on its own shares.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Risk Free Interest Rate", "terseLabel": "Risk-free interest rate" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "xbrltype": "percentItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems": { "auth_ref": [ "r309", "r311", "r314", "r315", "r316", "r317", "r318", "r319", "r320", "r321", "r322", "r323", "r324", "r325", "r326", "r327", "r328", "r329", "r330", "r331", "r332", "r333", "r334", "r335", "r336", "r337", "r338", "r339" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]", "terseLabel": "Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails", "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails", "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "xbrltype": "stringItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingRollForward": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Non-Option Equity Instruments, Outstanding [Roll Forward]", "terseLabel": "Stock" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingRollForward", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationStockActivityDetails" ], "xbrltype": "stringItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Additional Disclosures [Abstract]", "terseLabel": "Additional Disclosures" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsAdditionalDisclosuresAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "stringItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber": { "auth_ref": [ "r319" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Number", "terseLabel": "Option exercisable (in shares)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice": { "auth_ref": [ "r319" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Weighted Average Exercise Price", "terseLabel": "Options exercisable, weighted-average exercise price (in dollars per share)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "perShareItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod": { "auth_ref": [ "r324" ], "lang": { "en-us": { "role": { "documentation": "Number of options or other stock instruments for which the right to exercise has lapsed under the terms of the plan agreements.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Expirations in Period", "negatedTerseLabel": "Expired (in shares)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod": { "auth_ref": [ "r323" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures in Period", "negatedTerseLabel": "Forfeited (in shares)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross": { "auth_ref": [ "r321" ], "lang": { "en-us": { "role": { "documentation": "Gross number of share options (or share units) granted during the period.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Gross", "terseLabel": "Granted (in shares)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": { "auth_ref": [ "r331" ], "lang": { "en-us": { "role": { "documentation": "The weighted average grant-date fair value of options granted during the reporting period as calculated by applying the disclosed option pricing methodology.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value", "terseLabel": "Stock-based award, weighted-average grant date fair value (in dollars per share)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "xbrltype": "perShareItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber": { "auth_ref": [ "r317", "r318" ], "lang": { "en-us": { "role": { "documentation": "Number of options outstanding, including both vested and non-vested options.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number", "periodEndLabel": "Options outstanding, ending balance (in shares)", "periodStartLabel": "Options outstanding, beginning balance (in shares)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding [Roll Forward]", "terseLabel": "Stock Options" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "stringItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice": { "auth_ref": [ "r317", "r318" ], "lang": { "en-us": { "role": { "documentation": "Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price", "periodEndLabel": "Options outstanding, ending balance, weighted-average exercise price (in dollars per share)", "periodStartLabel": "Options outstanding, beginning balance, weighted-average exercise price (in dollars per share)" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "perShareItemType" }, "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract]", "terseLabel": "Weighted- Average Exercise Price" } } }, "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "stringItemType" }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": { "auth_ref": [ "r314", "r315", "r316", "r317", "r318", "r319", "r320", "r321", "r322", "r323", "r324", "r325", "r326", "r327", "r328", "r329", "r330", "r331", "r332", "r333", "r334", "r335", "r336", "r337", "r338", "r339" ], "lang": { "en-us": { "role": { "documentation": "Award under share-based payment arrangement.", "label": "Award Type [Domain]", "terseLabel": "Award Type [Domain]" } } }, "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain", "nsuri": "http://fasb.org/us-gaap/2023", "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" ], "xbrltype": "domainItemType" }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice": { "auth_ref": [ "r322" ], "lang": { "en-us": { "role": { "documentation": "Weighted average price at which option holders acquired shares when converting their stock options into shares.", "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price", "terseLabel": "Exercised, weighted-average exercise price (in dollars per share)" } } }, "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "perShareItemType" }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice": { "auth_ref": [ "r324" ], "lang": { "en-us": { "role": { "documentation": "Weighted average price at which grantees could have acquired the underlying shares with respect to stock options of the plan that expired.", "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Expirations in Period, Weighted Average Exercise Price", "terseLabel": "Expired, weighted-average exercise price (in dollars per share)" } } }, "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "perShareItemType" }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice": { "auth_ref": [ "r323" ], "lang": { "en-us": { "role": { "documentation": "Weighted average price at which grantees could have acquired the underlying shares with respect to stock options that were terminated.", "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price", "terseLabel": "Forfeited, weighted-average exercise price (in dollars per share)" } } }, "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "perShareItemType" }, "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice": { "auth_ref": [ "r321" ], "lang": { "en-us": { "role": { "documentation": "Weighted average per share amount at which grantees can acquire shares of common stock by exercise of options.", "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Grants in Period, Weighted Average Exercise Price", "terseLabel": "Granted, weighted-average exercise price (in dollars per share)" } } }, "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "perShareItemType" }, "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod": { "auth_ref": [ "r595" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Expiration Period", "terseLabel": "Stock-based award, term (in years)" } } }, "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "xbrltype": "durationItemType" }, "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1": { "auth_ref": [ "r335" ], "lang": { "en-us": { "role": { "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.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Term", "terseLabel": "Expected life (years)" } } }, "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationWeightedAverageAssumptionsDetails" ], "xbrltype": "durationItemType" }, "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Purchase price of common stock expressed as a percentage of its fair value.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Purchase Price of Common Stock, Percent", "terseLabel": "Purchase price of common stock (in percent)" } } }, "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationNarrativeDetails" ], "xbrltype": "percentItemType" }, "us-gaap_SignificantAccountingPoliciesTextBlock": { "auth_ref": [ "r86", "r141" ], "lang": { "en-us": { "role": { "documentation": "The entire disclosure for all significant accounting policies of the reporting entity.", "label": "Significant Accounting Policies [Text Block]", "terseLabel": "Recent Accounting Pronouncements" } } }, "localname": "SignificantAccountingPoliciesTextBlock", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/RecentAccountingPronouncements" ], "xbrltype": "textBlockItemType" }, "us-gaap_StatementBusinessSegmentsAxis": { "auth_ref": [ "r108", "r175", "r178", "r179", "r180", "r181", "r182", "r183", "r184", "r185", "r186", "r187", "r188", "r189", "r191", "r192", "r193", "r194", "r195", "r196", "r197", "r198", "r199", "r201", "r207", "r259", "r260", "r261", "r262", "r263", "r264", "r265", "r266", "r267", "r273", "r274", "r275", "r465", "r466", "r467", "r468", "r469", "r470", "r471", "r472", "r473", "r474", "r475", "r581", "r685", "r780" ], "lang": { "en-us": { "role": { "documentation": "Information by business segments.", "label": "Segments [Axis]", "terseLabel": "Segments [Axis]" } } }, "localname": "StatementBusinessSegmentsAxis", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/SegmentReportingIncomeFromOperationbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingLongLivedAssetsbyGeographicAreasDetails", "http://www.protolabs.com/role/SegmentReportingRevenuebyGeographicAreasDetails" ], "xbrltype": "stringItemType" }, "us-gaap_StatementEquityComponentsAxis": { "auth_ref": [ "r13", "r28", "r107", "r131", "r132", "r133", "r145", "r146", "r147", "r149", "r155", "r157", "r173", "r245", "r246", "r297", "r345", "r346", "r347", "r360", "r361", "r375", "r376", "r377", "r378", "r379", "r380", "r382", "r397", "r398", "r399", "r400", "r401", "r402", "r407", "r483", "r484", "r485", "r494", "r546" ], "lang": { "en-us": { "role": { "documentation": "Information by component of equity.", "label": "Equity Components [Axis]", "terseLabel": "Equity Components [Axis]" } } }, "localname": "StatementEquityComponentsAxis", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossChangesInAccumulatedOtherComprehensiveIncomeLossDetails", "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossNarrativeDetails", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "stringItemType" }, "us-gaap_StatementLineItems": { "auth_ref": [ "r145", "r146", "r147", "r173", "r439", "r491", "r495", "r501", "r502", "r503", "r504", "r505", "r506", "r508", "r511", "r512", "r513", "r514", "r515", "r516", "r517", "r518", "r519", "r521", "r522", "r523", "r524", "r525", "r527", "r529", "r530", "r531", "r532", "r533", "r534", "r535", "r536", "r537", "r538", "r539", "r540", "r541", "r542", "r546", "r602" ], "lang": { "en-us": { "role": { "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.", "label": "Statement [Line Items]", "terseLabel": "Statement [Line Items]" } } }, "localname": "StatementLineItems", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "stringItemType" }, "us-gaap_StatementOfCashFlowsAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Statement of Cash Flows [Abstract]", "terseLabel": "Statement of Cash Flows [Abstract]" } } }, "localname": "StatementOfCashFlowsAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_StatementOfFinancialPositionAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Statement of Financial Position [Abstract]", "terseLabel": "Statement of Financial Position [Abstract]" } } }, "localname": "StatementOfFinancialPositionAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_StatementOfStockholdersEquityAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Statement of Stockholders' Equity [Abstract]", "terseLabel": "Statement of Stockholders' Equity [Abstract]" } } }, "localname": "StatementOfStockholdersEquityAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "xbrltype": "stringItemType" }, "us-gaap_StatementTable": { "auth_ref": [ "r145", "r146", "r147", "r173", "r439", "r491", "r495", "r501", "r502", "r503", "r504", "r505", "r506", "r508", "r511", "r512", "r513", "r514", "r515", "r516", "r517", "r518", "r519", "r521", "r522", "r523", "r524", "r525", "r527", "r529", "r530", "r531", "r532", "r533", "r534", "r535", "r536", "r537", "r538", "r539", "r540", "r541", "r542", "r546", "r602" ], "lang": { "en-us": { "role": { "documentation": "Schedule reflecting a Statement of Income, Statement of Cash Flows, Statement of Financial Position, Statement of Shareholders' Equity and Other Comprehensive Income, or other statement as needed.", "label": "Statement [Table]", "terseLabel": "Statement [Table]" } } }, "localname": "StatementTable", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "stringItemType" }, "us-gaap_StockAppreciationRightsSARSMember": { "auth_ref": [], "lang": { "en-us": { "role": { "documentation": "Right to receive cash or shares equal to appreciation of predetermined number of grantor's shares during predetermined time period.", "label": "Stock Appreciation Rights (SARs) [Member]", "terseLabel": "Stock Appreciation Rights (SARs)" } } }, "localname": "StockAppreciationRightsSARSMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure" ], "xbrltype": "domainItemType" }, "us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation": { "auth_ref": [ "r13", "r62", "r63", "r92" ], "lang": { "en-us": { "role": { "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).", "label": "Shares Issued, Shares, Share-Based Payment Arrangement, after Forfeiture", "terseLabel": "Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)" } } }, "localname": "StockIssuedDuringPeriodSharesShareBasedCompensation", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "sharesItemType" }, "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": { "auth_ref": [ "r13", "r62", "r63", "r92", "r322" ], "lang": { "en-us": { "role": { "documentation": "Number of share options (or share units) exercised during the current period.", "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period", "negatedTerseLabel": "Exercised (in shares)" } } }, "localname": "StockIssuedDuringPeriodSharesStockOptionsExercised", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/StockBasedCompensationOptionActivityDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised": { "auth_ref": [ "r13", "r28", "r92" ], "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Value of stock issued as a result of the exercise of stock options.", "label": "Stock Issued During Period, Value, Stock Options Exercised", "terseLabel": "Common shares issued on exercise of options and other, net of shares withheld for tax obligations" } } }, "localname": "StockIssuedDuringPeriodValueStockOptionsExercised", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "monetaryItemType" }, "us-gaap_StockRepurchasedAndRetiredDuringPeriodShares": { "auth_ref": [ "r13", "r62", "r63", "r92" ], "lang": { "en-us": { "role": { "documentation": "Number of shares that have been repurchased and retired during the period.", "label": "Stock Repurchased and Retired During Period, Shares", "negatedLabel": "Repurchases of common stock and other (in shares)" } } }, "localname": "StockRepurchasedAndRetiredDuringPeriodShares", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "sharesItemType" }, "us-gaap_StockRepurchasedAndRetiredDuringPeriodValue": { "auth_ref": [ "r13", "r62", "r63", "r92" ], "crdr": "debit", "lang": { "en-us": { "role": { "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).", "label": "Stock Repurchased and Retired During Period, Value", "negatedLabel": "Repurchases of common stock and other" } } }, "localname": "StockRepurchasedAndRetiredDuringPeriodValue", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "monetaryItemType" }, "us-gaap_StockholdersEquity": { "auth_ref": [ "r63", "r66", "r67", "r87", "r510", "r526", "r547", "r548", "r596", "r608", "r703", "r727", "r768", "r783" ], "calculation": { "http://www.protolabs.com/role/ConsolidatedBalanceSheets": { "order": 2.0, "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity", "weight": 1.0 } }, "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of equity (deficit) attributable to parent. Excludes temporary equity and equity attributable to noncontrolling interest.", "label": "Equity, Attributable to Parent", "periodEndLabel": "Ending balance", "periodStartLabel": "Beginning balance", "totalLabel": "Total shareholders' equity" } } }, "localname": "StockholdersEquity", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/AccumulatedOtherComprehensiveIncomeLossChangesInAccumulatedOtherComprehensiveIncomeLossDetails", "http://www.protolabs.com/role/ConsolidatedBalanceSheets", "http://www.protolabs.com/role/ConsolidatedStatementsofShareholdersEquity" ], "xbrltype": "monetaryItemType" }, "us-gaap_StockholdersEquityAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Equity, Attributable to Parent [Abstract]", "terseLabel": "Shareholders' equity" } } }, "localname": "StockholdersEquityAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedBalanceSheets" ], "xbrltype": "stringItemType" }, "us-gaap_TradeNamesMember": { "auth_ref": [ "r53" ], "lang": { "en-us": { "role": { "documentation": "Rights acquired through registration of a business name to gain or protect exclusive use thereof.", "label": "Trade Names [Member]", "terseLabel": "Tradenames" } } }, "localname": "TradeNamesMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/GoodwillandOtherIntangibleAssetsScheduleofIntangibleAssetsOtherThanGoodwillDetails" ], "xbrltype": "domainItemType" }, "us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain": { "auth_ref": [ "r212", "r213", "r214", "r215", "r216", "r217", "r218", "r219", "r220", "r221", "r222", "r223", "r224", "r225", "r226", "r227", "r228", "r229", "r230", "r231", "r232", "r233", "r234", "r235", "r236", "r237", "r238", "r239", "r240", "r241", "r294", "r296", "r381", "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", "r461", "r688", "r689", "r690", "r691", "r692", "r693", "r694", "r723", "r724", "r725", "r726" ], "lang": { "en-us": { "role": { "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.", "label": "Financial Instruments [Domain]", "terseLabel": "Financial Instruments [Domain]" } } }, "localname": "TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "xbrltype": "domainItemType" }, "us-gaap_USGovernmentAgenciesDebtSecuritiesMember": { "auth_ref": [ "r575", "r588", "r779" ], "lang": { "en-us": { "role": { "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).", "label": "US Government Agencies Debt Securities [Member]", "terseLabel": "U.S. government agency securities" } } }, "localname": "USGovernmentAgenciesDebtSecuritiesMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "xbrltype": "domainItemType" }, "us-gaap_USStatesAndPoliticalSubdivisionsMember": { "auth_ref": [ "r588", "r781" ], "lang": { "en-us": { "role": { "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.", "label": "US States and Political Subdivisions Debt Securities [Member]", "terseLabel": "U.S. municipal securities" } } }, "localname": "USStatesAndPoliticalSubdivisionsMember", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/MarketableSecuritiesShortTermandLongTermMarketableSecuritiesDetails" ], "xbrltype": "domainItemType" }, "us-gaap_UnrecognizedTaxBenefits": { "auth_ref": [ "r351", "r357" ], "crdr": "credit", "lang": { "en-us": { "role": { "documentation": "Amount of unrecognized tax benefits.", "label": "Unrecognized Tax Benefits", "terseLabel": "Unrecognized tax benefits" } } }, "localname": "UnrecognizedTaxBenefits", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/IncomeTaxesDetails" ], "xbrltype": "monetaryItemType" }, "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": { "auth_ref": [ "r160", "r168" ], "calculation": { "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails": { "order": null, "parentTag": null, "root": true, "weight": null } }, "lang": { "en-us": { "role": { "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.", "label": "Weighted Average Number of Shares Outstanding, Diluted", "terseLabel": "Diluted (in shares)", "totalLabel": "Diluted - weighted-average shares outstanding (in shares)" } } }, "localname": "WeightedAverageNumberOfDilutedSharesOutstanding", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited", "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": { "auth_ref": [ "r159", "r168" ], "calculation": { "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails": { "order": 1.0, "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding", "weight": 1.0 } }, "lang": { "en-us": { "role": { "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.", "label": "Weighted Average Number of Shares Outstanding, Basic", "terseLabel": "Basic (in shares)", "verboseLabel": "Basic - weighted-average shares outstanding (in shares)" } } }, "localname": "WeightedAverageNumberOfSharesOutstandingBasic", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited", "http://www.protolabs.com/role/NetLossIncomeperCommonShareScheduleofComputationOfBasicandDilutedNetIncomePerShareDetails" ], "xbrltype": "sharesItemType" }, "us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract": { "auth_ref": [], "lang": { "en-us": { "role": { "label": "Weighted Average Number of Shares Outstanding Reconciliation [Abstract]", "terseLabel": "Shares used to compute net (loss) income per share:" } } }, "localname": "WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract", "nsuri": "http://fasb.org/us-gaap/2023", "presentation": [ "http://www.protolabs.com/role/ConsolidatedStatementsofComprehensiveIncomeUnaudited" ], "xbrltype": "stringItemType" } }, "unitCount": 5 } }, "std_ref": { "r0": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "25", "SubTopic": "20", "Topic": "940", "URI": "https://asc.fasb.org//1943274/2147481913/940-20-25-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r1": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "230", "Topic": "830", "URI": "https://asc.fasb.org//1943274/2147481877/830-230-45-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r10": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "360", "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r100": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.9-03(23))", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r101": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.9-04(15))", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r102": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.9-04(22))", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r103": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "230", "Subparagraph": "b.", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147481160/942-230-45-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r104": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "45", "SubTopic": "20", "Subparagraph": "(a)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482659/740-20-45-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r105": { "Name": "Accounting Standards Codification", "Paragraph": "9", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r106": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.4-08(h))", "Topic": "235", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r107": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "65", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "105", "URI": "https://asc.fasb.org//1943274/2147479343/105-10-65-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r108": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(d)", "Topic": "205", "URI": "https://asc.fasb.org//1943274/2147483499/205-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r109": { "Name": "Accounting Standards Codification", "Paragraph": "7", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Topic": "205", "URI": "https://asc.fasb.org//1943274/2147483499/205-20-50-7", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r11": { "Name": "Accounting Standards Codification", "Paragraph": "1A", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(3)", "Topic": "810", "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-1A", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r110": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r111": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r112": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(1))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r113": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(15))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r114": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(16))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r115": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(17))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r116": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(18))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r117": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(30)(a)(4))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r118": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(4))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r119": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(6))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r12": { "Name": "Accounting Standards Codification", "Paragraph": "1A", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c),(3)", "Topic": "810", "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-1A", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r120": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(9))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r121": { "Name": "Accounting Standards Codification", "Paragraph": "10A", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(e)", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r122": { "Name": "Accounting Standards Codification", "Paragraph": "10A", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(f)", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r123": { "Name": "Accounting Standards Codification", "Paragraph": "10A", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(h)", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r124": { "Name": "Accounting Standards Codification", "Paragraph": "11", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-11", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r125": { "Name": "Accounting Standards Codification", "Paragraph": "14A", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-14A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r126": { "Name": "Accounting Standards Codification", "Paragraph": "1A", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r127": { "Name": "Accounting Standards Codification", "Paragraph": "1A", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r128": { "Name": "Accounting Standards Codification", "Paragraph": "1A", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r129": { "Name": "Accounting Standards Codification", "Paragraph": "1B", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r13": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "505", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r130": { "Name": "Accounting Standards Codification", "Paragraph": "1B", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r131": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r132": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r133": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r134": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-03(24))", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r135": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-03(25))", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r136": { "Name": "Accounting Standards Codification", "Paragraph": "11", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-11", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r137": { "Name": "Accounting Standards Codification", "Paragraph": "12", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-12", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r138": { "Name": "Accounting Standards Codification", "Paragraph": "15", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-15", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r139": { "Name": "Accounting Standards Codification", "Paragraph": "24", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-24", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r14": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "820", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r140": { "Name": "Accounting Standards Codification", "Paragraph": "8", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482913/230-10-50-8", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r141": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "235", "URI": "https://asc.fasb.org//1943274/2147483426/235-10-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r142": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.4-08(g)(1)(ii))", "Topic": "235", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r143": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.4-08(h)(2))", "Topic": "235", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r144": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.12-04(a))", "Topic": "235", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r145": { "Name": "Accounting Standards Codification", "Paragraph": "23", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-23", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r146": { "Name": "Accounting Standards Codification", "Paragraph": "24", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-24", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r147": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r148": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)(2)", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r149": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)(3)", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r15": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r150": { "Name": "Accounting Standards Codification", "Paragraph": "11", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-11", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r151": { "Name": "Accounting Standards Codification", "Paragraph": "11", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-11", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r152": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r153": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r154": { "Name": "Accounting Standards Codification", "Paragraph": "7", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-7", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r155": { "Name": "Accounting Standards Codification", "Paragraph": "7", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-7", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r156": { "Name": "Accounting Standards Codification", "Paragraph": "8", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-8", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r157": { "Name": "Accounting Standards Codification", "Paragraph": "9", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-9", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r158": { "Name": "Accounting Standards Codification", "Publisher": "FASB", "Topic": "260", "URI": "https://asc.fasb.org//260/tableOfContent", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r159": { "Name": "Accounting Standards Codification", "Paragraph": "10", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-10", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r16": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(e)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r160": { "Name": "Accounting Standards Codification", "Paragraph": "16", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-16", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r161": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r162": { "Name": "Accounting Standards Codification", "Paragraph": "22", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-22", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r163": { "Name": "Accounting Standards Codification", "Paragraph": "23", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-23", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r164": { "Name": "Accounting Standards Codification", "Paragraph": "28A", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-28A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r165": { "Name": "Accounting Standards Codification", "Paragraph": "60B", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-60B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r166": { "Name": "Accounting Standards Codification", "Paragraph": "60B", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-60B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r167": { "Name": "Accounting Standards Codification", "Paragraph": "7", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-7", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r168": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r169": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r17": { "Name": "Accounting Standards Codification", "Paragraph": "2A", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2A", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r170": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r171": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r172": { "Name": "Accounting Standards Codification", "Paragraph": "15", "Publisher": "FASB", "Section": "55", "SubTopic": "10", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482635/260-10-55-15", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r173": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "272", "URI": "https://asc.fasb.org//1943274/2147483014/272-10-45-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r174": { "Name": "Accounting Standards Codification", "Publisher": "FASB", "Topic": "280", "URI": "https://asc.fasb.org//280/tableOfContent", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r175": { "Name": "Accounting Standards Codification", "Paragraph": "15", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-15", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r176": { "Name": "Accounting Standards Codification", "Paragraph": "21", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-21", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r177": { "Name": "Accounting Standards Codification", "Paragraph": "21", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-21", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r178": { "Name": "Accounting Standards Codification", "Paragraph": "22", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r179": { "Name": "Accounting Standards Codification", "Paragraph": "22", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r18": { "Name": "Accounting Standards Codification", "Paragraph": "41", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "a", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-41", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r180": { "Name": "Accounting Standards Codification", "Paragraph": "22", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r181": { "Name": "Accounting Standards Codification", "Paragraph": "22", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r182": { "Name": "Accounting Standards Codification", "Paragraph": "22", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r183": { "Name": "Accounting Standards Codification", "Paragraph": "22", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(e)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r184": { "Name": "Accounting Standards Codification", "Paragraph": "22", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r185": { "Name": "Accounting Standards Codification", "Paragraph": "22", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(g)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r186": { "Name": "Accounting Standards Codification", "Paragraph": "22", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(h)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r187": { "Name": "Accounting Standards Codification", "Paragraph": "22", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(j)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r188": { "Name": "Accounting Standards Codification", "Paragraph": "25", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-25", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r189": { "Name": "Accounting Standards Codification", "Paragraph": "25", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-25", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r19": { "Name": "Accounting Standards Codification", "Paragraph": "41", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "b", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-41", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r190": { "Name": "Accounting Standards Codification", "Paragraph": "26", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-26", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r191": { "Name": "Accounting Standards Codification", "Paragraph": "30", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r192": { "Name": "Accounting Standards Codification", "Paragraph": "30", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r193": { "Name": "Accounting Standards Codification", "Paragraph": "30", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r194": { "Name": "Accounting Standards Codification", "Paragraph": "30", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r195": { "Name": "Accounting Standards Codification", "Paragraph": "31", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-31", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r196": { "Name": "Accounting Standards Codification", "Paragraph": "32", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r197": { "Name": "Accounting Standards Codification", "Paragraph": "32", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r198": { "Name": "Accounting Standards Codification", "Paragraph": "32", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r199": { "Name": "Accounting Standards Codification", "Paragraph": "32", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r2": { "Name": "Accounting Standards Codification", "Paragraph": "10A", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r20": { "Name": "Accounting Standards Codification", "Paragraph": "13", "Publisher": "FASB", "Section": "55", "SubTopic": "20", "Topic": "805", "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-13", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r200": { "Name": "Accounting Standards Codification", "Paragraph": "32", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(e)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r201": { "Name": "Accounting Standards Codification", "Paragraph": "32", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r202": { "Name": "Accounting Standards Codification", "Paragraph": "34", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-34", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r203": { "Name": "Accounting Standards Codification", "Paragraph": "40", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-40", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r204": { "Name": "Accounting Standards Codification", "Paragraph": "41", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-41", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r205": { "Name": "Accounting Standards Codification", "Paragraph": "41", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-41", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r206": { "Name": "Accounting Standards Codification", "Paragraph": "41", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-41", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r207": { "Name": "Accounting Standards Codification", "Paragraph": "42", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-42", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r208": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "310", "URI": "https://asc.fasb.org//1943274/2147481990/310-10-45-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r209": { "Name": "Accounting Standards Codification", "Paragraph": "9", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "310", "URI": "https://asc.fasb.org//1943274/2147481990/310-10-45-9", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r21": { "Name": "Accounting Standards Codification", "Paragraph": "15", "Publisher": "FASB", "Section": "55", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482739/220-10-55-15", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r210": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "310", "URI": "https://asc.fasb.org//1943274/2147481962/310-10-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r211": { "Name": "Accounting Standards Codification", "Paragraph": "11", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481830/320-10-45-11", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r212": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r213": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r214": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(aa)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r215": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(aaa)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r216": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r217": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r218": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r219": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r22": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147483489/210-10-50-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r220": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r221": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r222": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r223": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r224": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r225": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r226": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(aaa)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r227": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r228": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(e)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r229": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r23": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02.19(a))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r230": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(1)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r231": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(2)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r232": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(3)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r233": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(4)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r234": { "Name": "Accounting Standards Codification", "Paragraph": "5A", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r235": { "Name": "Accounting Standards Codification", "Paragraph": "5A", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r236": { "Name": "Accounting Standards Codification", "Paragraph": "5A", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r237": { "Name": "Accounting Standards Codification", "Paragraph": "5B", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r238": { "Name": "Accounting Standards Codification", "Paragraph": "5B", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r239": { "Name": "Accounting Standards Codification", "Paragraph": "5B", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r24": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02.19-26)", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r240": { "Name": "Accounting Standards Codification", "Paragraph": "5B", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r241": { "Name": "Accounting Standards Codification", "Paragraph": "5B", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-5B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r242": { "Name": "Accounting Standards Codification", "Paragraph": "9", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-9", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r243": { "Name": "Accounting Standards Codification", "Paragraph": "9", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-9", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r244": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "323", "URI": "https://asc.fasb.org//1943274/2147481687/323-10-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r245": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "65", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "326", "URI": "https://asc.fasb.org//1943274/2147479654/326-10-65-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r246": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "65", "SubTopic": "10", "Subparagraph": "(c)(2)", "Topic": "326", "URI": "https://asc.fasb.org//1943274/2147479654/326-10-65-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r247": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "20", "Topic": "326", "URI": "https://asc.fasb.org//1943274/2147479344/326-20-45-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r248": { "Name": "Accounting Standards Codification", "Paragraph": "11", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Topic": "326", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-11", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r249": { "Name": "Accounting Standards Codification", "Paragraph": "13", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Topic": "326", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-13", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r25": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02.20)", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r250": { "Name": "Accounting Standards Codification", "Paragraph": "14", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Topic": "326", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-14", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r251": { "Name": "Accounting Standards Codification", "Paragraph": "16", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Topic": "326", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-16", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r252": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Topic": "326", "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r253": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "30", "Topic": "326", "URI": "https://asc.fasb.org//1943274/2147479130/326-30-45-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r254": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Topic": "326", "URI": "https://asc.fasb.org//1943274/2147479106/326-30-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r255": { "Name": "Accounting Standards Codification", "Paragraph": "7", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Topic": "326", "URI": "https://asc.fasb.org//1943274/2147479106/326-30-50-7", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r256": { "Name": "Accounting Standards Codification", "Paragraph": "9", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Topic": "326", "URI": "https://asc.fasb.org//1943274/2147479106/326-30-50-9", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r257": { "Name": "Accounting Standards Codification", "Publisher": "FASB", "Topic": "330", "URI": "https://asc.fasb.org//330/tableOfContent", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r258": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "20", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482598/350-20-45-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r259": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r26": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02.21)", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r260": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(a)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r261": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(b)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r262": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(c)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r263": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(d)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r264": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(e)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r265": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(f)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r266": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(g)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r267": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(h)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r268": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(a)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r269": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(a)(1)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r27": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02.24)", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r270": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(d)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r271": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(a)(1)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r272": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(d)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r273": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)", "Topic": "360", "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r274": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "420", "URI": "https://asc.fasb.org//1943274/2147482017/420-10-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r275": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SAB Topic 5.P.4(d))", "Topic": "420", "URI": "https://asc.fasb.org//1943274/2147479823/420-10-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r276": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(b)", "Topic": "450", "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r277": { "Name": "Accounting Standards Codification", "Paragraph": "9", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(b)", "Topic": "450", "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-9", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r278": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "20", "Subparagraph": "(SAB Topic 5.Y.Q2)", "Topic": "450", "URI": "https://asc.fasb.org//1943274/2147480102/450-20-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r279": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "20", "Subparagraph": "(SAB Topic 5.Y.Q4)", "Topic": "450", "URI": "https://asc.fasb.org//1943274/2147480102/450-20-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r28": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02.29-31)", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r280": { "Name": "Accounting Standards Codification", "Paragraph": "1A", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-01(a)(4)(i))", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r281": { "Name": "Accounting Standards Codification", "Paragraph": "1A", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-01(a)(4)(iii)(A))", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r282": { "Name": "Accounting Standards Codification", "Paragraph": "1A", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-01(a)(4)(iii)(B))", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r283": { "Name": "Accounting Standards Codification", "Paragraph": "1A", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-01(a)(4)(iv))", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r284": { "Name": "Accounting Standards Codification", "Paragraph": "1A", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-01(a)(5))", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r285": { "Name": "Accounting Standards Codification", "Paragraph": "1B", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-02(a)(4)(i))", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r286": { "Name": "Accounting Standards Codification", "Paragraph": "1B", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A)", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r287": { "Name": "Accounting Standards Codification", "Paragraph": "1B", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A))", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r288": { "Name": "Accounting Standards Codification", "Paragraph": "1B", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B)", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r289": { "Name": "Accounting Standards Codification", "Paragraph": "1B", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B))", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r29": { "Name": "Accounting Standards Codification", "Paragraph": "14", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-14", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r290": { "Name": "Accounting Standards Codification", "Paragraph": "1B", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-02(a)(4)(iii)(C))", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r291": { "Name": "Accounting Standards Codification", "Paragraph": "1B", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-02(a)(4)(iv))", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r292": { "Name": "Accounting Standards Codification", "Paragraph": "1B", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-02(a)(5))", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r293": { "Name": "Accounting Standards Codification", "Paragraph": "1D", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(c)", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1D", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r294": { "Name": "Accounting Standards Codification", "Paragraph": "1I", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(c)", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1I", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r295": { "Name": "Accounting Standards Codification", "Paragraph": "13", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "505", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r296": { "Name": "Accounting Standards Codification", "Paragraph": "18", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "505", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-18", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r297": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.3-04)", "Topic": "505", "URI": "https://asc.fasb.org//1943274/2147480008/505-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r298": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "606", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r299": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "606", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r3": { "Name": "Accounting Standards Codification", "Paragraph": "10A", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r30": { "Name": "Accounting Standards Codification", "Paragraph": "14A", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-14A", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r300": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(d)(i)", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r301": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(d)(iv)(01)", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r302": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(d)(iv)(02)", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r303": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(d)(iv)(02)(A)", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r304": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(d)(iv)(02)(B)", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r305": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(d)(iv)(02)(C)", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r306": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(d)(iv)(03)", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r307": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "80", "Subparagraph": "(d)", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r308": { "Name": "Accounting Standards Codification", "Publisher": "FASB", "Topic": "718", "URI": "https://asc.fasb.org//718/tableOfContent", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r309": { "Name": "Accounting Standards Codification", "Paragraph": "1D", "Publisher": "FASB", "Section": "35", "SubTopic": "10", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480483/718-10-35-1D", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r31": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-5", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r310": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "35", "SubTopic": "10", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480483/718-10-35-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r311": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "35", "SubTopic": "10", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480483/718-10-35-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r312": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480454/718-10-45-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r313": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r314": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)(1)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r315": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)(2)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r316": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)(3)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r317": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(i)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r318": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(ii)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r319": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(iii)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r32": { "Name": "Accounting Standards Codification", "Paragraph": "12", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-12", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r320": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(iv)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r321": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(iv)(01)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r322": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(iv)(02)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r323": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(iv)(03)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r324": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(iv)(04)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r325": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(2)(i)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r326": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(2)(ii)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r327": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(2)(iii)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r328": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(2)(iii)(01)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r329": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(2)(iii)(02)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r33": { "Name": "Accounting Standards Codification", "Paragraph": "13", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-13", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r330": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(2)(iii)(03)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r331": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)(1)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r332": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)(2)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r333": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(e)(1)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r334": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(e)(2)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r335": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(2)(i)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r336": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(2)(ii)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r337": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(2)(iii)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r338": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(2)(iv)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r339": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(2)(v)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r34": { "Name": "Accounting Standards Codification", "Paragraph": "15", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-15", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r340": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(h)(1)(i)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r341": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(h)(2)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r342": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(h)(2)(i)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r343": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(i)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r344": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(l)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r345": { "Name": "Accounting Standards Codification", "Paragraph": "15", "Publisher": "FASB", "Section": "65", "SubTopic": "10", "Subparagraph": "(e)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480336/718-10-65-15", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r346": { "Name": "Accounting Standards Codification", "Paragraph": "15", "Publisher": "FASB", "Section": "65", "SubTopic": "10", "Subparagraph": "(f)(1)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480336/718-10-65-15", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r347": { "Name": "Accounting Standards Codification", "Paragraph": "15", "Publisher": "FASB", "Section": "65", "SubTopic": "10", "Subparagraph": "(f)(2)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480336/718-10-65-15", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r348": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SAB Topic 14.F)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147479830/718-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r349": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "730", "URI": "https://asc.fasb.org//1943274/2147482916/730-10-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r35": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-4", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r350": { "Name": "Accounting Standards Codification", "Publisher": "FASB", "Topic": "740", "URI": "https://asc.fasb.org//740/tableOfContent", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r351": { "Name": "Accounting Standards Codification", "Paragraph": "10B", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-10B", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r352": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r353": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r354": { "Name": "Accounting Standards Codification", "Paragraph": "10", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-10", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r355": { "Name": "Accounting Standards Codification", "Paragraph": "12", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-12", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r356": { "Name": "Accounting Standards Codification", "Paragraph": "14", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-14", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r357": { "Name": "Accounting Standards Codification", "Paragraph": "15A", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-15A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r358": { "Name": "Accounting Standards Codification", "Paragraph": "17", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-17", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r359": { "Name": "Accounting Standards Codification", "Paragraph": "21", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-21", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r36": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r360": { "Name": "Accounting Standards Codification", "Paragraph": "8", "Publisher": "FASB", "Section": "65", "SubTopic": "10", "Subparagraph": "(d)(2)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482615/740-10-65-8", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r361": { "Name": "Accounting Standards Codification", "Paragraph": "8", "Publisher": "FASB", "Section": "65", "SubTopic": "10", "Subparagraph": "(d)(3)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482615/740-10-65-8", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r362": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SAB TOPIC 6.I.5.Q1)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r363": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SAB TOPIC 6.I.7)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r364": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SAB Topic 6.I.Fact.1)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r365": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SAB Topic 6.I.Fact.2)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r366": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SAB Topic 6.I.Fact.4)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r367": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SAB Topic 11.C)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r368": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "270", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482526/740-270-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r369": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(a)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147482603/740-30-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r37": { "Name": "Accounting Standards Codification", "Paragraph": "22", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r370": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(a)", "Topic": "805", "URI": "https://asc.fasb.org//1943274/2147479907/805-20-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r371": { "Name": "Accounting Standards Codification", "Paragraph": "25", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "810", "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-25", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r372": { "Name": "Accounting Standards Codification", "Paragraph": "25", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "810", "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-25", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r373": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(bb)", "Topic": "810", "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r374": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "810", "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r375": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "65", "SubTopic": "20", "Subparagraph": "(e)", "Topic": "815", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r376": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "65", "SubTopic": "20", "Subparagraph": "(h)(1)", "Topic": "815", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r377": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "65", "SubTopic": "20", "Subparagraph": "(h)(1)(i)", "Topic": "815", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r378": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "65", "SubTopic": "20", "Subparagraph": "(h)(1)(iii)", "Topic": "815", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r379": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "65", "SubTopic": "20", "Subparagraph": "(h)(1)(iv)", "Topic": "815", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r38": { "Name": "Accounting Standards Codification", "Paragraph": "25", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-25", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r380": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "65", "SubTopic": "20", "Subparagraph": "(i)(3)", "Topic": "815", "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r381": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "40", "Subparagraph": "(f)", "Topic": "815", "URI": "https://asc.fasb.org//1943274/2147480237/815-40-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r382": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "65", "SubTopic": "40", "Subparagraph": "(e)(3)", "Topic": "815", "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r383": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "65", "SubTopic": "40", "Subparagraph": "(e)(4)", "Topic": "815", "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r384": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "65", "SubTopic": "40", "Subparagraph": "(f)", "Topic": "815", "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r385": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "820", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r386": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "820", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r387": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "820", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r388": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(bbb)(1)", "Topic": "820", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r389": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(bbb)(2)", "Topic": "820", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r39": { "Name": "Accounting Standards Codification", "Paragraph": "30", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r390": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "820", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r391": { "Name": "Accounting Standards Codification", "Paragraph": "6A", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "820", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-6A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r392": { "Name": "Accounting Standards Codification", "Paragraph": "28", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)", "Topic": "825", "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-28", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r393": { "Name": "Accounting Standards Codification", "Paragraph": "17", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "830", "URI": "https://asc.fasb.org//1943274/2147481839/830-10-45-17", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r394": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "35", "SubTopic": "20", "Topic": "830", "URI": "https://asc.fasb.org//1943274/2147482014/830-20-35-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r395": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "20", "Topic": "830", "URI": "https://asc.fasb.org//1943274/2147481956/830-20-45-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r396": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Topic": "830", "URI": "https://asc.fasb.org//1943274/2147481926/830-20-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r397": { "Name": "Accounting Standards Codification", "Paragraph": "17", "Publisher": "FASB", "Section": "45", "SubTopic": "30", "Topic": "830", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-17", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r398": { "Name": "Accounting Standards Codification", "Paragraph": "20", "Publisher": "FASB", "Section": "45", "SubTopic": "30", "Subparagraph": "(a)", "Topic": "830", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r399": { "Name": "Accounting Standards Codification", "Paragraph": "20", "Publisher": "FASB", "Section": "45", "SubTopic": "30", "Subparagraph": "(b)", "Topic": "830", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r4": { "Name": "Accounting Standards Codification", "Paragraph": "10A", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a),(b),(c)", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r40": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SAB TOPIC 5.BB)", "Topic": "330", "URI": "https://asc.fasb.org//1943274/2147480581/330-10-S99-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r400": { "Name": "Accounting Standards Codification", "Paragraph": "20", "Publisher": "FASB", "Section": "45", "SubTopic": "30", "Subparagraph": "(c)", "Topic": "830", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r401": { "Name": "Accounting Standards Codification", "Paragraph": "20", "Publisher": "FASB", "Section": "45", "SubTopic": "30", "Subparagraph": "(d)", "Topic": "830", "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r402": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Topic": "830", "URI": "https://asc.fasb.org//1943274/2147481674/830-30-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r403": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "20", "Subparagraph": "(a)", "Topic": "842", "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r404": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "20", "Subparagraph": "(b)", "Topic": "842", "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r405": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "45", "SubTopic": "20", "Subparagraph": "(a)", "Topic": "842", "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r406": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(g)(1)", "Topic": "842", "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r407": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "65", "SubTopic": "10", "Subparagraph": "(a)(3)(iii)(03)", "Topic": "848", "URI": "https://asc.fasb.org//1943274/2147483550/848-10-65-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r408": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(b)(2)(i)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r409": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(b)(2)(ii)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r41": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r410": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(b)(3)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r411": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(bb)(1)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r412": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(bb)(2)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r413": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(bb)(3)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r414": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(c)(1)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r415": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(c)(2)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r416": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(c)(3)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r417": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(b)(1)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r418": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(b)(2)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r419": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(b)(3)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r42": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "45", "SubTopic": "30", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482686/350-30-45-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r420": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(c)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r421": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "30", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481444/860-30-45-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r422": { "Name": "Accounting Standards Codification", "Paragraph": "7", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(a)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481420/860-30-50-7", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r423": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(a)(1)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r424": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(a)(2)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r425": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(a)(3)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r426": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(a)(4)(i)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r427": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(a)(1)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r428": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(a)(2)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r429": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(a)(3)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r43": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(a)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r430": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(a)(4)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r431": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(a)(5)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r432": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(a)(6)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r433": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(a)(7)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r434": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(b)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r435": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(e)(1)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r436": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(e)(2)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r437": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "50", "Subparagraph": "(e)(3)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481229/860-50-50-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r438": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "910", "URI": "https://asc.fasb.org//1943274/2147482546/910-10-50-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r439": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SAB Topic 11.L)", "Topic": "924", "URI": "https://asc.fasb.org//1943274/2147479941/924-10-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r44": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(a)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r440": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Topic": "926", "URI": "https://asc.fasb.org//1943274/2147483154/926-20-50-5", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r441": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "340", "Topic": "928", "URI": "https://asc.fasb.org//1943274/2147483147/928-340-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r442": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.9-03(10)(1))", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r443": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.9-03(6))", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r444": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.9-04(26))", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r445": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.9-04(27))", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r446": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.9-05(b)(2))", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147479557/942-235-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r447": { "Name": "Accounting Standards Codification", "Paragraph": "3A", "Publisher": "FASB", "Section": "50", "SubTopic": "320", "Subparagraph": "(a)", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147480832/942-320-50-3A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r448": { "Name": "Accounting Standards Codification", "Paragraph": "3A", "Publisher": "FASB", "Section": "50", "SubTopic": "320", "Subparagraph": "(b)", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147480832/942-320-50-3A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r449": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "360", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147480842/942-360-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r45": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(a)(2)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r450": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.7-03(a)(1))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r451": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.7-03(a)(12))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r452": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.7-03(a)(15)(b)(2))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r453": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.7-03(a)(21))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r454": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.7-03(a)(22))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r455": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.7-03(a)(23)(a)(3))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r456": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.7-03(a)(23)(a)(4))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r457": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.7-03(a)(25))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r458": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.7-03(a)(8))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r459": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.7-04(11))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r46": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r460": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.7-04(18))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r461": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.7-04(2)(a))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r462": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.7-04(22))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r463": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.7-04(23))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r464": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.7-04(9))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r465": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-16(Column A))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r466": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-16(Column B))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r467": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-16(Column C))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r468": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-16(Column D))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r469": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-16(Column E))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r47": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r470": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-16(Column F))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r471": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-16(Column G))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r472": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-16(Column H))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r473": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-16(Column I))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r474": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-16(Column J))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r475": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-16(Column K))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r476": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-17(Column A))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r477": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-17(Column B))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r478": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-17(Column C))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r479": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-17(Column D))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r48": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(2)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r480": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-17(Column E))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r481": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "235", "Subparagraph": "(SX 210.12-17(Column F))", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r482": { "Name": "Accounting Standards Codification", "Paragraph": "7A", "Publisher": "FASB", "Section": "50", "SubTopic": "40", "Subparagraph": "(d)", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480081/944-40-50-7A", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r483": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "65", "SubTopic": "40", "Subparagraph": "(e)", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r484": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "65", "SubTopic": "40", "Subparagraph": "(f)(1)", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r485": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "65", "SubTopic": "40", "Subparagraph": "(f)(2)", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r486": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "65", "SubTopic": "40", "Subparagraph": "(g)(2)(i)", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r487": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "65", "SubTopic": "40", "Subparagraph": "(g)(2)(ii)", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r488": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "65", "SubTopic": "40", "Subparagraph": "(h)(2)", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r489": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480424/946-10-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r49": { "Name": "Accounting Standards Codification", "Paragraph": "12", "Publisher": "FASB", "Section": "55", "SubTopic": "20", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147481089/718-20-55-12", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r490": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480424/946-10-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r491": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.6-03(d))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479886/946-10-S99-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r492": { "Name": "Accounting Standards Codification", "Paragraph": "11", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480990/946-20-50-11", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r493": { "Name": "Accounting Standards Codification", "Paragraph": "13", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480990/946-20-50-13", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r494": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "45", "SubTopic": "205", "Subparagraph": "(a)", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480767/946-205-45-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r495": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "45", "SubTopic": "210", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480555/946-210-45-4", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r496": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "210", "Subparagraph": "(b)(2)", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r497": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "210", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r498": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "50", "SubTopic": "210", "Subparagraph": "(a)(2)", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r499": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "50", "SubTopic": "210", "Subparagraph": "(e)", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r5": { "Name": "Accounting Standards Codification", "Paragraph": "14", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-14", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r50": { "Name": "Accounting Standards Codification", "Paragraph": "13", "Publisher": "FASB", "Section": "55", "SubTopic": "20", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147481089/718-20-55-13", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r500": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "50", "SubTopic": "210", "Subparagraph": "(f)", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r501": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(1))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r502": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(12)(b)(1))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r503": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(12)(b)(2))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r504": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(12)(b)(3))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r505": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(13)(a)(2))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r506": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(13)(a)(3))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r507": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(14))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r508": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(16)(a))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r509": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(17))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r51": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "805", "URI": "https://asc.fasb.org//1943274/2147479328/805-10-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r510": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(19))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r511": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(2)(a))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r512": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(2)(b))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r513": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(3)(a))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r514": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(3)(b))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r515": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(3)(c))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r516": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(6)(b))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r517": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(6)(c))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r518": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(6)(d))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r519": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(6)(e))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r52": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "805", "URI": "https://asc.fasb.org//1943274/2147479328/805-10-50-3", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r520": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(8))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r521": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(9)(b))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r522": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(9)(c))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r523": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(9)(d))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r524": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-04(9)(e))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r525": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-05(2))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r526": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.6-05(4))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r527": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "45", "SubTopic": "220", "Subparagraph": "(b)", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483581/946-220-45-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r528": { "Name": "Accounting Standards Codification", "Paragraph": "7", "Publisher": "FASB", "Section": "45", "SubTopic": "220", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483581/946-220-45-7", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r529": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(1))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r53": { "Name": "Accounting Standards Codification", "Paragraph": "14", "Publisher": "FASB", "Section": "55", "SubTopic": "20", "Subparagraph": "(a)", "Topic": "805", "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-14", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r530": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(2)(a))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r531": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(7)(a)(1))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r532": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(7)(a)(2))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r533": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(7)(a)(3))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r534": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(7)(a)(5))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r535": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(7)(a)(6))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r536": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(7)(a)(7))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r537": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(7)(c)(1))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r538": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(7)(c)(2))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r539": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(7)(c)(3))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r54": { "Name": "Accounting Standards Codification", "Paragraph": "14", "Publisher": "FASB", "Section": "55", "SubTopic": "20", "Subparagraph": "(e)", "Topic": "805", "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-14", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r540": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(7)(c)(5))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r541": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(7)(c)(6))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r542": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(7)(c)(7))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r543": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(7))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r544": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-07(9))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r545": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-09(1)(d))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r546": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-09(4)(b))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r547": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-09(6))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r548": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-09(7))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r549": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r55": { "Name": "Accounting Standards Codification", "Paragraph": "20", "Publisher": "FASB", "Section": "55", "SubTopic": "20", "Subparagraph": "(c)", "Topic": "805", "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-20", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r550": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-12(Column C)(Footnote 5))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r551": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r552": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-12A(Column C)(Footnote 4))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-2", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r553": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(a))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r554": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(b))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r555": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-12B(Column C)(Footnote 2))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r556": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r557": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-14(Column F)(Footnote 7))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-6", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r558": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "310", "Subparagraph": "(SX 210.12-29(Footnote 4))", "Topic": "948", "URI": "https://asc.fasb.org//1943274/2147479851/948-310-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r559": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "360", "Subparagraph": "(SX 210.12-28(Column B))", "Topic": "970", "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r56": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "820", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r560": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "360", "Subparagraph": "(SX 210.12-28(Column C))", "Topic": "970", "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r561": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "360", "Subparagraph": "(SX 210.12-28(Column D))", "Topic": "970", "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r562": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "360", "Subparagraph": "(SX 210.12-28(Column E))", "Topic": "970", "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r563": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "360", "Subparagraph": "(SX 210.12-28(Column F))", "Topic": "970", "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r564": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "360", "Subparagraph": "(SX 210.12-28(Column G))", "Topic": "970", "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r565": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "360", "Subparagraph": "(SX 210.12-28(Column H))", "Topic": "970", "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r566": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "360", "Subparagraph": "(SX 210.12-28(Column I))", "Topic": "970", "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r567": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "360", "Subparagraph": "(SX 210.12-28(Footnote 2))", "Topic": "970", "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r568": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "310", "Subparagraph": "(c)", "Topic": "976", "URI": "https://asc.fasb.org//1943274/2147482856/976-310-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r569": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "310", "Subparagraph": "(b)", "Topic": "978", "URI": "https://asc.fasb.org//1943274/2147482707/978-310-50-1", "role": "http://www.xbrl.org/2003/role/disclosureRef" }, "r57": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "820", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-3", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r570": { "Name": "Accounting Standards Codification", "Paragraph": "13H", "Publisher": "FASB", "Section": "55", "SubTopic": "40", "Subparagraph": "(a)", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480046/944-40-55-13H", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r571": { "Name": "Accounting Standards Codification", "Paragraph": "13H", "Publisher": "FASB", "Section": "55", "SubTopic": "40", "Subparagraph": "(b)", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480046/944-40-55-13H", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r572": { "Name": "Accounting Standards Codification", "Paragraph": "38", "Publisher": "FASB", "Section": "55", "SubTopic": "20", "Subparagraph": "(b)", "Topic": "805", "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-38", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r573": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-1", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r574": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-1", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r575": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.4-08(m)(1)(ii)(A))", "Topic": "235", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r576": { "Name": "Accounting Standards Codification", "Paragraph": "52", "Publisher": "FASB", "Section": "55", "SubTopic": "10", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482635/260-10-55-52", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r577": { "Name": "Accounting Standards Codification", "Paragraph": "30", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r578": { "Name": "Accounting Standards Codification", "Paragraph": "31", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "280", "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-31", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r579": { "Name": "Accounting Standards Codification", "Paragraph": "12A", "Publisher": "FASB", "Section": "55", "SubTopic": "10", "Topic": "310", "URI": "https://asc.fasb.org//1943274/2147481933/310-10-55-12A", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r58": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.9-03.10)", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r580": { "Name": "Accounting Standards Codification", "Paragraph": "8", "Publisher": "FASB", "Section": "55", "SubTopic": "30", "Topic": "326", "URI": "https://asc.fasb.org//1943274/2147479081/326-30-55-8", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r581": { "Name": "Accounting Standards Codification", "Paragraph": "24", "Publisher": "FASB", "Section": "55", "SubTopic": "20", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482548/350-20-55-24", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r582": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "35", "SubTopic": "10", "Topic": "420", "URI": "https://asc.fasb.org//1943274/2147481639/420-10-35-4", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r583": { "Name": "Accounting Standards Codification", "Paragraph": "69B", "Publisher": "FASB", "Section": "55", "SubTopic": "20", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147481568/470-20-55-69B", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r584": { "Name": "Accounting Standards Codification", "Paragraph": "69C", "Publisher": "FASB", "Section": "55", "SubTopic": "20", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147481568/470-20-55-69C", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r585": { "Name": "Accounting Standards Codification", "Paragraph": "13", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "505", "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r586": { "Name": "Accounting Standards Codification", "Paragraph": "91", "Publisher": "FASB", "Section": "55", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "606", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r587": { "Name": "Accounting Standards Codification", "Paragraph": "91", "Publisher": "FASB", "Section": "55", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "606", "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r588": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(d)(ii)", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r589": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(d)(iv)(01)", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r59": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Topic": "985", "URI": "https://asc.fasb.org//1943274/2147481283/985-20-50-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r590": { "Name": "Accounting Standards Codification", "Paragraph": "17", "Publisher": "FASB", "Section": "55", "SubTopic": "20", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480482/715-20-55-17", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r591": { "Name": "Accounting Standards Codification", "Paragraph": "11", "Publisher": "FASB", "Section": "50", "SubTopic": "80", "Subparagraph": "(a)", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-11", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r592": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "50", "SubTopic": "80", "Subparagraph": "(a)", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-6", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r593": { "Name": "Accounting Standards Codification", "Paragraph": "8", "Publisher": "FASB", "Section": "55", "SubTopic": "80", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480547/715-80-55-8", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r594": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)(1)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r595": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)(2)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r596": { "Name": "Accounting Standards Codification", "Paragraph": "10", "Publisher": "FASB", "Section": "55", "SubTopic": "10", "Topic": "852", "URI": "https://asc.fasb.org//1943274/2147481372/852-10-55-10", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r597": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "55", "SubTopic": "30", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147479401/944-30-55-2", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r598": { "Name": "Accounting Standards Codification", "Paragraph": "29F", "Publisher": "FASB", "Section": "55", "SubTopic": "40", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480046/944-40-55-29F", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r599": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "210", "Subparagraph": "(b)(1)", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-1", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r6": { "Name": "Accounting Standards Codification", "Paragraph": "20", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "810", "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-20", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r60": { "Name": "Accounting Standards Codification", "Publisher": "FASB", "Topic": "205", "URI": "https://asc.fasb.org//205/tableOfContent", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r600": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "50", "SubTopic": "210", "Subparagraph": "(a)(1)", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r601": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "55", "SubTopic": "210", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480493/946-210-55-1", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r602": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "310", "Subparagraph": "(d)", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480833/946-310-45-1", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r603": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2)(i))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-1", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r604": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-2", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r605": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 1)(a))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r606": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-6", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r607": { "Name": "Accounting Standards Codification", "Paragraph": "10", "Publisher": "FASB", "Section": "55", "SubTopic": "830", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480167/946-830-55-10", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r608": { "Name": "Accounting Standards Codification", "Paragraph": "12", "Publisher": "FASB", "Section": "55", "SubTopic": "830", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480167/946-830-55-12", "role": "http://www.xbrl.org/2003/role/exampleRef" }, "r609": { "Name": "Exchange Act", "Number": "240", "Publisher": "SEC", "Section": "12", "Subsection": "b", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r61": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(20))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r610": { "Name": "Exchange Act", "Number": "240", "Publisher": "SEC", "Section": "12", "Subsection": "b-2", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r611": { "Name": "Exchange Act", "Number": "240", "Publisher": "SEC", "Section": "12", "Subsection": "d1-1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r612": { "Name": "Form 10-Q", "Number": "240", "Publisher": "SEC", "Section": "308", "Subsection": "a", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r613": { "Name": "Form 20-F", "Paragraph": "a", "Publisher": "SEC", "Section": "16", "Subsection": "J", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r614": { "Name": "Form 20-F", "Paragraph": "1", "Publisher": "SEC", "Section": "6", "Subsection": "F", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r615": { "Name": "Form 20-F", "Paragraph": "1", "Publisher": "SEC", "Section": "6", "Subparagraph": "i", "Subsection": "F", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r616": { "Name": "Form 20-F", "Paragraph": "1", "Publisher": "SEC", "Section": "6", "Sentence": "A", "Subparagraph": "i", "Subsection": "F", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r617": { "Name": "Form 20-F", "Paragraph": "1", "Publisher": "SEC", "Section": "6", "Sentence": "B", "Subparagraph": "i", "Subsection": "F", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r618": { "Name": "Form 20-F", "Paragraph": "1", "Publisher": "SEC", "Section": "6", "Sentence": "C", "Subparagraph": "i", "Subsection": "F", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r619": { "Name": "Form 20-F", "Paragraph": "1", "Publisher": "SEC", "Section": "6", "Sentence": "D", "Subparagraph": "i", "Subsection": "F", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r62": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(28))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r620": { "Name": "Form 20-F", "Paragraph": "1", "Publisher": "SEC", "Section": "6", "Sentence": "E", "Subparagraph": "i", "Subsection": "F", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r621": { "Name": "Form 20-F", "Paragraph": "1", "Publisher": "SEC", "Section": "6", "Subparagraph": "ii", "Subsection": "F", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r622": { "Name": "Form 20-F", "Paragraph": "1", "Publisher": "SEC", "Section": "6", "Subparagraph": "iii", "Subsection": "F", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r623": { "Name": "Form 20-F", "Paragraph": "2", "Publisher": "SEC", "Section": "6", "Subsection": "F", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r624": { "Name": "Form 20-F", "Paragraph": "1", "Publisher": "SEC", "Section": "6", "Subparagraph": "ii", "Subsection": "F", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r625": { "Name": "Form 40-F", "Paragraph": "a", "Publisher": "SEC", "Section": "19", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r626": { "Name": "Form 40-F", "Paragraph": "a", "Publisher": "SEC", "Section": "19", "Subparagraph": "1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r627": { "Name": "Form 40-F", "Paragraph": "a", "Publisher": "SEC", "Section": "19", "Sentence": "i", "Subparagraph": "1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r628": { "Name": "Form 40-F", "Paragraph": "a", "Publisher": "SEC", "Section": "19", "Sentence": "ii", "Subparagraph": "1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r629": { "Name": "Form 40-F", "Paragraph": "a", "Publisher": "SEC", "Section": "19", "Sentence": "iii", "Subparagraph": "1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r63": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(29))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r630": { "Name": "Form 40-F", "Paragraph": "a", "Publisher": "SEC", "Section": "19", "Sentence": "iv", "Subparagraph": "1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r631": { "Name": "Form 40-F", "Paragraph": "a", "Publisher": "SEC", "Section": "19", "Sentence": "v", "Subparagraph": "1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r632": { "Name": "Form 40-F", "Paragraph": "a", "Publisher": "SEC", "Section": "19", "Subparagraph": "2", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r633": { "Name": "Form 40-F", "Paragraph": "a", "Publisher": "SEC", "Section": "19", "Subparagraph": "3", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r634": { "Name": "Form 40-F", "Paragraph": "b", "Publisher": "SEC", "Section": "19", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r635": { "Name": "Form N-CSR", "Paragraph": "a", "Publisher": "SEC", "Section": "18", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r636": { "Name": "Form N-CSR", "Paragraph": "a", "Publisher": "SEC", "Section": "18", "Subparagraph": "1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r637": { "Name": "Form N-CSR", "Paragraph": "a", "Publisher": "SEC", "Section": "18", "Sentence": "i", "Subparagraph": "1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r638": { "Name": "Form N-CSR", "Paragraph": "a", "Publisher": "SEC", "Section": "18", "Sentence": "ii", "Subparagraph": "1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r639": { "Name": "Form N-CSR", "Paragraph": "a", "Publisher": "SEC", "Section": "18", "Sentence": "iii", "Subparagraph": "1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r64": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(30)(a)(1))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r640": { "Name": "Form N-CSR", "Paragraph": "a", "Publisher": "SEC", "Section": "18", "Sentence": "iv", "Subparagraph": "1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r641": { "Name": "Form N-CSR", "Paragraph": "a", "Publisher": "SEC", "Section": "18", "Sentence": "v", "Subparagraph": "1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r642": { "Name": "Form N-CSR", "Paragraph": "a", "Publisher": "SEC", "Section": "18", "Subparagraph": "2", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r643": { "Name": "Form N-CSR", "Paragraph": "a", "Publisher": "SEC", "Section": "18", "Subparagraph": "3", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r644": { "Name": "Form N-CSR", "Paragraph": "b", "Publisher": "SEC", "Section": "18", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r645": { "Name": "Forms 10-K, 10-Q, 20-F", "Number": "240", "Publisher": "SEC", "Section": "13", "Subsection": "a-1", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r646": { "Name": "Regulation S-K", "Number": "229", "Publisher": "SEC", "Section": "402", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r647": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "1", "Publisher": "SEC", "Section": "402", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r648": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "402", "Subparagraph": "ii", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r649": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "402", "Subparagraph": "iii", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r65": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(30)(a)(3))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r650": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "402", "Subparagraph": "iv", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r651": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "402", "Subparagraph": "vi", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r652": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "3", "Publisher": "SEC", "Section": "402", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r653": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "4", "Publisher": "SEC", "Section": "402", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r654": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "5", "Publisher": "SEC", "Section": "402", "Subparagraph": "i", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r655": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "5", "Publisher": "SEC", "Section": "402", "Subparagraph": "ii", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r656": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "5", "Publisher": "SEC", "Section": "402", "Subparagraph": "iii", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r657": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "5", "Publisher": "SEC", "Section": "402", "Subparagraph": "iv", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r658": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "6", "Publisher": "SEC", "Section": "402", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r659": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "6", "Publisher": "SEC", "Section": "402", "Subparagraph": "i", "Subsection": "v", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r66": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(30))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r660": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "1", "Publisher": "SEC", "Section": "402", "Subsection": "w", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r661": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "1", "Publisher": "SEC", "Section": "402", "Subparagraph": "i", "Subsection": "w", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r662": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "1", "Publisher": "SEC", "Section": "402", "Sentence": "A", "Subparagraph": "i", "Subsection": "w", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r663": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "1", "Publisher": "SEC", "Section": "402", "Sentence": "B", "Subparagraph": "i", "Subsection": "w", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r664": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "1", "Publisher": "SEC", "Section": "402", "Sentence": "C", "Subparagraph": "i", "Subsection": "w", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r665": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "1", "Publisher": "SEC", "Section": "402", "Sentence": "D", "Subparagraph": "i", "Subsection": "w", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r666": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "1", "Publisher": "SEC", "Section": "402", "Sentence": "E", "Subparagraph": "i", "Subsection": "w", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r667": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "1", "Publisher": "SEC", "Section": "402", "Subparagraph": "ii", "Subsection": "w", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r668": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "1", "Publisher": "SEC", "Section": "402", "Subparagraph": "iii", "Subsection": "w", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r669": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "402", "Subsection": "w", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r67": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(31))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r670": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "1", "Publisher": "SEC", "Section": "402", "Subsection": "x", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r671": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "402", "Subsection": "x", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r672": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "402", "Sentence": "A", "Subparagraph": "ii", "Subsection": "x", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r673": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "402", "Sentence": "C", "Subparagraph": "ii", "Subsection": "x", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r674": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "402", "Sentence": "D", "Subparagraph": "ii", "Subsection": "x", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r675": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "402", "Sentence": "E", "Subparagraph": "ii", "Subsection": "x", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r676": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "402", "Sentence": "F", "Subparagraph": "ii", "Subsection": "x", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r677": { "Name": "Regulation S-K", "Number": "229", "Publisher": "SEC", "Section": "408", "Subsection": "a", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r678": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "1", "Publisher": "SEC", "Section": "408", "Subsection": "a", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r679": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "408", "Subparagraph": "A", "Subsection": "a", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r68": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(32))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r680": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "408", "Subparagraph": "B", "Subsection": "a", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r681": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "408", "Subparagraph": "C", "Subsection": "a", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r682": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "2", "Publisher": "SEC", "Section": "408", "Subparagraph": "D", "Subsection": "a", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r683": { "Name": "Regulation S-K", "Number": "229", "Paragraph": "1", "Publisher": "SEC", "Section": "408", "Subsection": "b", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r684": { "Name": "Regulation S-T", "Number": "232", "Publisher": "SEC", "Section": "405", "role": "http://www.xbrl.org/2003/role/presentationRef" }, "r685": { "Name": "Accounting Standards Codification", "Paragraph": "4H", "Publisher": "FASB", "Section": "50", "SubTopic": "40", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480081/944-40-50-4H", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r686": { "Name": "Accounting Standards Codification", "Publisher": "FASB", "Topic": "321", "URI": "https://asc.fasb.org//321/tableOfContent", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r687": { "Name": "Accounting Standards Codification", "Publisher": "FASB", "Topic": "325", "URI": "https://asc.fasb.org//325/tableOfContent", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r688": { "Name": "Regulation S-K (SK)", "Number": "229", "Paragraph": "(a)", "Publisher": "SEC", "Section": "1402", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r689": { "Name": "Regulation S-K (SK)", "Number": "229", "Paragraph": "(b)", "Publisher": "SEC", "Section": "1402", "Subparagraph": "(1)", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r69": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(6)(a))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r690": { "Name": "Regulation S-K (SK)", "Number": "229", "Paragraph": "(b)", "Publisher": "SEC", "Section": "1402", "Subparagraph": "(2)", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r691": { "Name": "Regulation S-K (SK)", "Number": "229", "Paragraph": "(b)", "Publisher": "SEC", "Section": "1402", "Subparagraph": "(3)", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r692": { "Name": "Regulation S-K (SK)", "Number": "229", "Paragraph": "(c)", "Publisher": "SEC", "Section": "1402", "Subparagraph": "(2)(i)", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r693": { "Name": "Regulation S-K (SK)", "Number": "229", "Paragraph": "(c)", "Publisher": "SEC", "Section": "1402", "Subparagraph": "(2)(ii)", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r694": { "Name": "Regulation S-K (SK)", "Number": "229", "Paragraph": "(c)", "Publisher": "SEC", "Section": "1402", "Subparagraph": "(2)(iii)", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r695": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(2))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r696": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(3)(a)(4))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r697": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(6))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r698": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(9))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r699": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-4", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r7": { "Name": "Accounting Standards Codification", "Paragraph": "28", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r70": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(6)(b))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r700": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-5", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r701": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-6", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r702": { "Name": "Accounting Standards Codification", "Paragraph": "28", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r703": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.4-08(g)(1)(ii))", "Topic": "235", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r704": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.4-08(h)(1)(Note 1))", "Topic": "235", "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r705": { "Name": "Accounting Standards Codification", "Paragraph": "23", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-23", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r706": { "Name": "Accounting Standards Codification", "Paragraph": "24", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-24", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r707": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "250", "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-5", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r708": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "260", "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r709": { "Name": "Accounting Standards Codification", "Publisher": "FASB", "Topic": "320", "URI": "https://asc.fasb.org//320/tableOfContent", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r71": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-02(6)(c))", "Topic": "210", "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r710": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481830/320-10-45-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r711": { "Name": "Accounting Standards Codification", "Paragraph": "11", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481830/320-10-45-11", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r712": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r713": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(aa)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r714": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(aaa)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r715": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r716": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r717": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r718": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r719": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r72": { "Name": "Accounting Standards Codification", "Publisher": "FASB", "Topic": "220", "URI": "https://asc.fasb.org//220/tableOfContent", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r720": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r721": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r722": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r723": { "Name": "Accounting Standards Codification", "Paragraph": "9", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "320", "URI": "https://asc.fasb.org//1943274/2147481800/320-10-50-9", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r724": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "321", "URI": "https://asc.fasb.org//1943274/2147479536/321-10-50-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r725": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "321", "URI": "https://asc.fasb.org//1943274/2147479536/321-10-50-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r726": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "321", "URI": "https://asc.fasb.org//1943274/2147479536/321-10-50-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r727": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "323", "URI": "https://asc.fasb.org//1943274/2147481687/323-10-50-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r728": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(a)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r729": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(h)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r73": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r730": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(a)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r731": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(a)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r732": { "Name": "Accounting Standards Codification", "Paragraph": "10", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(c)", "Topic": "410", "URI": "https://asc.fasb.org//1943274/2147481931/410-30-50-10", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r733": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)(2)", "Topic": "420", "URI": "https://asc.fasb.org//1943274/2147482017/420-10-50-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r734": { "Name": "Accounting Standards Codification", "Paragraph": "9", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(b)", "Topic": "450", "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-9", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r735": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "20", "Subparagraph": "(SAB Topic 5.Y.Q2)", "Topic": "450", "URI": "https://asc.fasb.org//1943274/2147480102/450-20-S99-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r736": { "Name": "Accounting Standards Codification", "Paragraph": "1A", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-01(a)(4)(ii))", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r737": { "Name": "Accounting Standards Codification", "Paragraph": "1A", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.13-01(a)(4)(iii))", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r738": { "Name": "Accounting Standards Codification", "Paragraph": "1B", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(d)", "Topic": "470", "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r739": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Topic": "606", "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-5", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r74": { "Name": "Accounting Standards Codification", "Paragraph": "11", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-11", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r740": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(d)(ii)", "Topic": "715", "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r741": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)(1)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r742": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)(2)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r743": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)(3)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r744": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(i)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r745": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(ii)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r746": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(iii)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r747": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(iv)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r748": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(iv)(01)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r749": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(iv)(02)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r75": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-03(10))", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r750": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(iv)(03)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r751": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(1)(iv)(04)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r752": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(2)(i)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r753": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(2)(ii)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r754": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(2)(iii)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r755": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(2)(iii)(01)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r756": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(2)(iii)(02)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r757": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)(2)(iii)(03)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r758": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)(1)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r759": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(d)(2)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r76": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-03(20))", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r760": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(e)(1)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r761": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(e)(2)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r762": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(2)(i)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r763": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(2)(ii)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r764": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(2)(iii)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r765": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(2)(iv)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r766": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(2)(v)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r767": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "65", "SubTopic": "40", "Subparagraph": "(e)(3)", "Topic": "815", "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r768": { "Name": "Accounting Standards Codification", "Paragraph": "28", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)", "Topic": "825", "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-28", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r769": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "45", "SubTopic": "230", "Topic": "830", "URI": "https://asc.fasb.org//1943274/2147481877/830-230-45-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r77": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-03.1,2)", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r770": { "Name": "Accounting Standards Codification", "Paragraph": "7", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(a)", "Topic": "852", "URI": "https://asc.fasb.org//1943274/2147481404/852-10-50-7", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r771": { "Name": "Accounting Standards Codification", "Paragraph": "7", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "852", "URI": "https://asc.fasb.org//1943274/2147481404/852-10-50-7", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r772": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(c)(1)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r773": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(c)(2)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r774": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(c)(3)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r775": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(b)(1)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r776": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(b)(2)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r777": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "50", "SubTopic": "20", "Subparagraph": "(b)(3)", "Topic": "860", "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r778": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "25", "SubTopic": "730", "Topic": "912", "URI": "https://asc.fasb.org//1943274/2147482517/912-730-25-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r779": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "320", "Subparagraph": "(b)", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147480832/942-320-50-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r78": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-03.2(a),(d))", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r780": { "Name": "Accounting Standards Codification", "Paragraph": "2B", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(a)", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147479432/944-30-50-2B", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r781": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "50", "SubTopic": "80", "Subparagraph": "(e)", "Topic": "944", "URI": "https://asc.fasb.org//1943274/2147480109/944-80-50-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r782": { "Name": "Accounting Standards Codification", "Paragraph": "4", "Publisher": "FASB", "Section": "45", "SubTopic": "205", "Subparagraph": "(a)", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480767/946-205-45-4", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r783": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-09(4)(b))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r784": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "S99", "SubTopic": "220", "Subparagraph": "(SX 210.6-09(7))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r785": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2)(ii))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-1", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r786": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-2", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r787": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 1)(b))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r788": { "Name": "Accounting Standards Codification", "Paragraph": "6", "Publisher": "FASB", "Section": "S99", "SubTopic": "320", "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))", "Topic": "946", "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-6", "role": "http://www.xbrl.org/2009/role/commonPracticeRef" }, "r79": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-03.4)", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r8": { "Name": "Accounting Standards Codification", "Paragraph": "28", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r80": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.5-03.9)", "Topic": "220", "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r81": { "Name": "Accounting Standards Codification", "Paragraph": "12", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-12", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r82": { "Name": "Accounting Standards Codification", "Paragraph": "13", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-13", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r83": { "Name": "Accounting Standards Codification", "Paragraph": "24", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-24", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r84": { "Name": "Accounting Standards Codification", "Paragraph": "25", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-25", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r85": { "Name": "Accounting Standards Codification", "Paragraph": "28", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "230", "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r86": { "Name": "Accounting Standards Codification", "Publisher": "FASB", "Topic": "235", "URI": "https://asc.fasb.org//235/tableOfContent", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r87": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SAB Topic 4.E)", "Topic": "310", "URI": "https://asc.fasb.org//1943274/2147480418/310-10-S99-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r88": { "Name": "Accounting Standards Codification", "Publisher": "FASB", "Topic": "350", "URI": "https://asc.fasb.org//350/tableOfContent", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r89": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(a)(1)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r9": { "Name": "Accounting Standards Codification", "Paragraph": "5", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "360", "URI": "https://asc.fasb.org//1943274/2147482130/360-10-45-5", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r90": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "30", "Subparagraph": "(a)(3)", "Topic": "350", "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r91": { "Name": "Accounting Standards Codification", "Paragraph": "3", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(c)", "Topic": "360", "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-3", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r92": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SX 210.3-04)", "Topic": "505", "URI": "https://asc.fasb.org//1943274/2147480008/505-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r93": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(f)(2)", "Topic": "718", "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r94": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "10", "Subparagraph": "(SAB Topic 6.I.7)", "Topic": "740", "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r95": { "Name": "Accounting Standards Codification", "Publisher": "FASB", "Topic": "810", "URI": "https://asc.fasb.org//810/tableOfContent", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r96": { "Name": "Accounting Standards Codification", "Paragraph": "19", "Publisher": "FASB", "Section": "45", "SubTopic": "10", "Topic": "810", "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-19", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r97": { "Name": "Accounting Standards Codification", "Paragraph": "2", "Publisher": "FASB", "Section": "50", "SubTopic": "10", "Subparagraph": "(b)", "Topic": "820", "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r98": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.9-03(11))", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" }, "r99": { "Name": "Accounting Standards Codification", "Paragraph": "1", "Publisher": "FASB", "Section": "S99", "SubTopic": "210", "Subparagraph": "(SX 210.9-03(15)(1))", "Topic": "942", "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1", "role": "http://fasb.org/us-gaap/role/ref/legacyRef" } }, "version": "2.2" } ZIP 65 0001628280-23-027513-xbrl.zip IDEA: XBRL DOCUMENT begin 644 0001628280-23-027513-xbrl.zip M4$L#!!0 ( )%Z!%>^PJ)=(?4 %3]$ 1 <')L8BTR,#(S,#8S,"YH M=&WLO6MWVSBR+OQ]_PJ^ZCE[TFO1"N\7)ZVS',?I\>PD]MC.S)[WRRR(A"Q. M:%)-4K[,KS\HD+I3$BE2$DAAKSUIVY1 H.JI0E6A4/7Q_[X^^<(SCF(O#'[K MR%VI(_S?WL?_[^SL?S_=?14^A\[X"0>)/&2H9 ,L?"/,/KI/2/A MUD?)((R>SL[HMR[#T5OD/0X309$4=?*I[&%T;F-+T_JR8)*/S]^]? M7EZZ\)=N&#V^5R1)?>\%<8("!W>RSWNOZSXLPX=]+\! I,G'1Y'?7_C"* J3 MT$?]N.N$3^^!'I*A2K/1D[,8.PO?(+]W'\/GN<'?)Q$*8B P2@B'X-WZF62= MJ?)D'/+)GQL6!8_[*)XN"CON]-/TDY-WD@=TCI,/NMC+_R!YL/#!UWB1J"_J MY.WR^__]]O7>&>(G=+9*W"1_UIO6KDAGDG(F*]D@>:^5;=M^_PI.SQX1&JU^,'NP^/(5 "Q0 I[2CY[[*'C\K8.#LQ_W'2(7&+F]CT\X00)\ M]0S_,?:>?^MQ;BY,W'OW5<+Q[YZ.T\" -,)N"]GL,'<93^ MZ+DN#NB/Y/EWHG0BSTG?_YK>,0#Y 3S 2]LZO O*ZMTLRNPCYUX&+ M7_\'OW4$CZ![<*;HG9Y$\*=IJF'8']\OC%KB)9?C*")O^.+%#O+_B5%T%;B? MB1[L""DJ?^L0&)^[Y"]G3V24X9F+9G,P.CVBZ%1Y]]=/M._L_5_(7^+I&\Q. M#ZA?UPMNR<=#=_$55J?W-V7W%UR0T5WZ!A\]+E)MX+T2#3U /NBF[&UVIT?_ M4.Z%DC5Y928?Y_=#%.%/1.NYE^'3" 1#^J1_FT8P>(6!*S[&KMDB/>+8Z3OG[TTFT,?T_B]*U_.7>Y$^+HX\H/2>_ MD=T@2D"6*(3/))G\_^1[LV?3:;IS'S7.0-LL/IG\/GG)^X5UYY-!88 ,Z;:8 M9"NSYH@P>5)L9>/ 2Y<5 Z[CZ,(K'$>YEA*4/)T-,GDU^AS'R*:4R1ZEY M#.Q(J3$5IT529); ^8_[S^6II+%%)3"4Z/93E4I$$5)M.5T>V=3)M.8_2I4A M2L)H1X*N?!_^^!D'X9,7Y U;%,X+0[Q?G/U6?NH,\'-936J'5Y,&:V10BI-! MJ8\,)H-D*+IIUD@&:]]DR%:#'\$H2W]UR1[[G>,DW_-0GKW ]\C0-64QM MOH0L";YS13P9XAD0PX\X&D$27[QZ9#^>\^6EMV"1:8Q8*KR (=]NYB-7YK98%+>_< V[@/L\"XO?NL3=ZT M%P.*:EV&4M,=Y&-X:W72O^G>\D&]M1H)KS3=33ZVMU8G+U@XX=O3TK@CRO9Q M@<(=T08Q:^^.:.-W2Q:XU'0WF0D'[!B,:[KG?$ ';/>,CB6:-]WI/9(#5AO] MF^X ']H!JXWP3?=\&7# ZN*%VG1G^%"*7Z[OB%)M_''Q$11_G?1ONF=^4,5? M)^$;[W$?6?'7R0L63G;WM+2F>Z&'B[R52\VLZ[A/;;JW>9S(VY&8U?!\XMKH MP-W%)G")^Y;-9)S&'=&BN;*U'5%JW!$]+OVY(WHDPG-'E!U>,.:(UKDT[HB6 M,#J.<%52XXYH@YC5]//2PSM@Q^!2T]UD)ARP8S"NZ9[S 1VPNDY?]:8[O4=R MP&JC?],=X$,[8+41ONF>+P,.6&V\8*QH4IU+8S9K^(*,X'K^."%PNC36_X *4BA&MOYU=/(#]\PIAOB MS8C6E0M2L+8RA55GUMG^X@5>@K\21I$=DF#YT>O[^"*.<1)_>ON&_AU&ESZ* MEQ3,-Q3]Q%#=[PY3+;/\S:8DF.G,NMC-8TN-93)T9IWIG=CR/80M=X03?/$8 M8;I_-T="F/68F\&*.J6"61_X4*S8.J$X2L[OH#IM^BKX]1N9V]/XJ2GR9C#K M=#/-9/3:*"8SZ]GOQ.34&2#&?SA(7HC]O_3-QG"%6;>_<5RI<=9BPP 6Z?'SK_C\#%"HZ'G('_&]:MQ%(ZVG2@79OJG<>P%F'#5^6/L MQ32!8\Y\IW^-L*NZ?QGW]YVD!C=-SA2ER%GATD?+G15.V\3@<;2VF<[5C[O) MUXLWTS&9BVELP5/6&/#\QSU'T@Y(6N(^"\D3NU_?6K"0*M&!W?@%\J*_(W\, M.1.PK^7M9R@>UK:ASE[W+=4A,-\O$?YCC /G;?'%TP_/?32^@VR.R L>]S"E MZ8]_(31%D3-\^XJ?L;]F5M?!:)S$]!-R8[9W=H,X'(@U %%I#!#9#68=#8@[ MY[[(;^6%1Z==)>78C*XPK_3J9 MP&X0@RFE7R/)98G9\,"MCP*H7S)WI?-K&#PF.'JZ#AP8_QF*_ 2*)._!Y5Z^ MU:B<*>ITG,T]$:PSQ9Z]8O=;C;+$K(/.$&_4XC=.:ZSW+$O,NL@7+RAR']Y& M\\RYNK^];0D?IG?I@S%,?.4Z?38&^7$R0/';]++$K->]Q-7)GW/JK+>$S\N< M8=8KKXTS6]]XR"(W3/"\P<8P])\%ND1YH?*M;YC=SH8^C;77ED-10?LO,AEV.Q94]Q;=D M9F,H#!!:KI/030F(G):>:5I X[!<.9(I+3/!V'#E#%--#:QZ[*LEUYESL_<>N:L134[G.K+]_$K)^+ W/ M7#SAI&3]6%QG-E[!$&^.I8>9#7$PQ)MCR0VS49%IAY:K/\9D7M!+-@S(KTO% M9RX<9_PT]LEGW8<(!7':<>G"_?LJS[3M.?@011K[W'^A$^(Q3QOV.O.!K&!\@7GT, M=:DR%[9I*@./I#A59B,P36/@D>Q,E;E@2E,9>*P]D-FXR)2!DQZ9]^D0\9PS M_@.:[[KIS?GL<1WAT,LPB$/?'!3'-RJ8"W5R4!S?IF NQLFBP7>LO9VY(".+S#G6'LM.Y'I2"^ZGR4>3\(G\ MW,X8M,%*;!G,1D"W\N?Q^^0TY M0R\@O/GB17'BC%N:W6LP%[-@CS7'VG68C#*PQ9IC;3A,!@;88LV1]AJ325]^ M VL>AA'&GV\C+T@H4D*/L M(4WS]F^2(8ZRYRV]&V VS6DSWO)^^] MU_,(Q^$X?L.S)"\Z&V'L<)N>:/DH^O'AN,CR7)>G_=.CG>A_C$0HF MGW9"/XS.?R'\E :##P,RR;,!>O+\M_,_/Q &Q<)W_"+>T!]'POA0+@$S@9)_/$](NP XDZXLLH;%#T2]B3A MB,Z5+#ZAHV2/^V%$IG)&Z."C48S/)S]\<+UXY*.W#SGC=E5)^)P15B3L9/WO)^[J,]OJVM+ZQU)7GCY[3\>.)A_( M**RFJW(%,G<@Q6\=M;.TO'Z8).$3?%)PPS$L'UC^881<.%P]EP29CC%[R7NZ MWLWD)*.EC$V)X1"&X*BS%NOD?;O@RUK"EYF#KT[OQ_?KAZO/POW#Q12JGN= MGL[5Q)L_JHQ>X/3Q8)6,X>CPLB9K9.'OOJ'HIW 3X%^G@%J_B1D;-K$= MB+.ZHVVG_3X(^@\R, P>5R-E>3'_VYA8T<3&>KO#HS!*.@)MJYT0$_UNJ!1@%S1F)2*?_MQW-W8-P M^^/N_L?%]P?AX48@>_(#V7@%615N[@19?^?^*MQ\$1[^ MR[:JY:'[6'*^R=G8*VV_A)% ?$;ACPGNA-09$XB/AMT=]JE;^O6KU,-;A*]+ M_G+V1(88PM?.7/1V]H91=(:#"9S53N^OXP +JB0*X,IOWN'*F;U@ V2\.0-& M$ (H79UR\QB&6!CQ[?IHVW6KM@S:D\\#_WS]GC% ?CS=-#2"OC;O%P]W%]_O MK^FNT-H-XYA[13(%W&2S&$3ADS#GDPE)N/#K*N76:FQ6'.7+\.G)BR'H*GSQ MB/8E@M+'T7F)'?&*!E+AR^EW)^*G0TQ8/E-U3=5W=.&8<6;+4N,./WHQX">! MQMD3BAB='KTH('Q%_5@4K@.G6Y@PK$0HWEV](B>A"X9(9S1=J(!B(1YA!P+^ MKN %@I?$@C.DYM:O+;0!M.)QT3T-N[L1D"*('8U;5KR(Y&3UC8C>HK>:+\-Q MD$1OEZ&[:(R3&3EP9)/@410^PS@S*]SL]+YY08#C,$'UV@E-I^\#>KW.#N\< M2N-%S6YU>II\1DP%VU"LC91K(D371(LHS 1B&H1P]BC\>QQYL>O12V"@"+UY M2-*/18\H\/Y#?_^UJ7!:0XOK[EWWOBMP6R2F)BL-"ZJQ M9;[M)-D7KAOA.,[^\Y6,)T^DVN[T=%V3A%O"0DR8>AEA_%/X''G/N$!\@K.F M)M9AH2 _O_OC5*K)".> F*FZO:I[)L9,6"/'$4$9]X(^0)^ MQ-DCFJ*X^*3TCIQRZ4B; M\H.7I.F9&#E#P2$2&A>P.DZ!,!&B6\S]VU,_]-\5,L:VDR5*W]!.DGW/XM\4 M2O@UU?T"T9$O0X_\9:9(RYCUB]FP^93;,PZ/9S(7-P>S#>M-5OI4I*?FH)X> M9Q$NW">A\U,4;E$D_!WY8RS\"38$6;@E^_;]D)A2.\1[.7<*<2=3)JDNF;(& MCK[NOGXZ/-GWK86:P)*)P%QE>BH]DUR.]H 66PKTF$31D9Z 420SQ7S:%;P=>!"^!H+_3=BR6.RU"=(#WT98AKN!XMW[JSSG?RK M,$0Q\0%\8BLCW\],?3"A_QA[8$ 3N[F/LP^0,:AXIW\'GZ4?(EF$4V#JVF2B=! M)PFNCRT)+GJ+N].CJ.(D#'-;0(%FJ!D'$]% MT>KT_HGC9;$[$G7#8Q+V>U@J -(TU0(B1Z3MR4L2(I_8)U(7A0'L./Z;@,GN M\R9V1CSKOS=F'Q2DW10+G?X<>RG)W;W9P_[5C/I M?*;: \>_A< M?.JV,#BIV%U%4FN/(LK["4Z:>\F2WR<-B@U[Q.3[(SF0LQ3?Z)((\&,8O>7X MC_1#5+2=[$,S5U*1.KVO^"^U@:EA3D@9; MW/J>9Q^TD6'[R31LQDW?6A%SO\YL:P=JRFZ,E!R3GEI;KZ4I/4=R4+32]_Y]SS(^XOO,M_@Y>_>.35Y+5"0-86@M9[]F*Z3P8H<#SD@TT+ M]T_@P]#ERT61&PN0..NYZU)IU'?HUURW]=AAFZ8 I'S@)!YBWY]@2'A'D$'# M%^EMMHXRRZ] P-K"VM,=5LU$1ZZ+".!("QIOBJ(3@SI M%;$0CA.J"D$G3O)D,L'RXGB,HVG2*TW$PC1^Z*39&W&:O8'BR3=\Z%6>$(T* M,7":12I D8WI+>4O] 'YYCCP4I2DL^@L(4?I$)%W/&*NQ;]UKK]_R3F%HS.@ M9]TT3R2^F:UC$5ADQ6=N2,L&PH#$,"'6!AE+FL),Z_040Y1L7=3@4OWB5'M3 M0D&YP/FDE1&*A.?YI)415-^$#XO""X[P FE1(ER,'\=Q\M^_R(;T04[KB12* M?:J\VF#5:H/S135'86I#G$<8#M6>\4J9S=DTZ/NEV5=0/P[]<;+^*^MRHWL? M^]'[Y3LW2X4FBQ4.A7+BZ7>&TO5U @Y?+F^\/5]X?U13QK+>AZV.,E>^=CH,W/ M-,FH_W#)[*K6;GGZAY^L?:2SI0.E2.??FH0.W$<-:QUU]9]Q[$3>"!3^Z1+A M%CWBO".3)?M)UK<;;1MR=>L-W#/^OEP%(>O'N#V/\=XBPZ7MM^/,I;C]!G?X M;R_N'H3K'*NME441UL3$\YBWQS>N,(^XX*7XIG9Z>\P4+A2;I)2AI[W"E?*N\2YCC.7H +G[G#\=A/Z$=N1CB=#-?JIZ75 M 4>RR=5ZD]2Z975Z*E?K;11'8.W?( ?&2^C9&-73Y _^Y'=0\WX8C^%$%/7# M<2) =Q:<"'=>_),U2'#=O7>P*%QW-TIWVW*GIW'=W49Q!-;"D7-$^$+U]FT4 M.M@%5JKOX8>\G;?&%-B%O]B.GUB?L9#Q!-UODQ@ANP./#":$YOL\9XKJ/WK*,-KJ.;IZ-M M?O;;6H&T::]'3&SK 28F]5R>#FL,Y[IY_U#@NKEANIFV&^6ZN94"";R]H=6N MKH.T,@V];,P6J[E6WC\(5(EKY69I9;W3,[A6;J= $MY>O0Z]OL>ODIXB[S7WQ M5;C^_N7F[MO%P_7-]]7Z7P41JW:873!4;!+DKI!?%6'']1H%ULOKTNTZ82)4 MM&(0;=SP"?D(>L_?#S'.XQAC%DL@'*\+''BT^8P?3ZMRJ/*6'LDLGHUK0 MV0B2O?L1H+'KD4WUUWJ!4Z_T]I'S\S$B>Z-[EA'&<3 F3L'Q&\ 4H_-%',]; M*AOHMFVE16A_\#%*LV] _X]!]N6W ,@:T0IH=S8NK7@G%NQ[C)JD4*#_E5CF M)XJ'U/1VX =HWOR,_ 7O;]$\*[1R23AJJ=IB*_]3I17.KRR"45E:VMH>&>/8 M76Z0H#C(G#A/UJD M388J=7J&(6JVNM(B(^UI484S$ZDKP:$Z-Q N)NT4$^T(8B)W>KHAZKK%D)C4 M9-^POS'>#\,H.2-.RA-M,X:SZ-)S[Y_!A\_M^L^GBN'D(NVR&0L1=C#950F712' "1PN(M\/7^CA!_3NA+9> MR6 \;](T3%;1D'KEFI96P1 ME[TN0R?Z6#0E(V<9E!\0HDU%2972MG4B7> D7)D]2UO:*2+A>CR"[JG/V'_; MDE2S24T6-;T;K2:WP7>%Q]]QLB.;C4[/U$4II\-AX]TWCJ>B>J1&/)D$3X:H M*)7-..[GE,?$=?!,6!9&ZSNPG[P%ND6U3BE()* L]"VR8VJB*LL,F9S<@SFL M*JV"'YO@A[@L9@M=EB:H3B=\PD*"7O&\A[*3(CT)FV*K(@5Z/@ Y9V;%*N@U MJ=.SJCOIW/AD%RA;-68N4$JI3@W*EXN2IC"$HY,Q.F\C/$*>*^#7$0[BK%A3 M2"\V.L42#$[>J-BB2S,*7Z4$O@A<>FTT3;[9S4W3%*)V15WBIFJ+4;5%\>X! M5=!M4Q%UVV0(5G5:L*K2U1G6Q ]A@OPZE&Y&@F+9H.T3G&WAURHBHA$1L711 MUNNR50JG[#;%&CY5U&T+TE9!'1SF6$8=QZ$'05W;$V]OHW!$IO)&367(TQS! M)3UZ&LJ-Y)V-Y)2FMSX*$F+-7$W(6CX2IT$9.\T2#;GRJ1BWC]D%U%;[N#Y M03<(W11-BZ7LIO;<3LG'PN]AZ+YXOL]CN#NJU D!RZ*=-H!41=NN'%[@<5UV MP;-%?>X*'IM%\+3=($WKT'E!@H)'#W*CT^ !MTBKJ$]*U.LI35,'KKSQH$/C M$DM4]#L%"+3X?Z)(:H:3X1M,:)VN'^R.Z+@"HHA:O+J30!NR.[-D!UAJ'<7/ H^ M1C'FF0<53=@).;\"->_@)3>#'W%J?Y25!XW8'J)D\9AJB_&TS8RM$T]0K56T MJF_8W)0M#(6TM"2NKEQ/PMK8HEPS8M8A"@8U7FU^BZO-<-JB6VN$DTG@9(JZ MVL)\6F95:QJ"]:>Q FZY5@^^9F&RG3TX"]+*396E"SG<8CU"X+4JCFR*([-R M(( ]2[4Y:;'Y^G2/R8B-+_Y5<.VMT02%TGY+BKXA=7JF:8J*7/G$I4GYOERL MN%B5RFLN*U9RIV=)BB@W*Z%Y,HN,EOJFLO?[+),[MUB5K CJ+?FX?"E[EJ;8 MGLA;?JGMKQ[J>SX]D:)9X[2SQC#T"9'B/],<\F1]U0]>B)L5YFXNQ.W/F%Q' M->XFN&KYVOK0VJ;A%#N9*AW3&H(C])97GJ-R@+CQUF4[;!JGZ:BG0QI\&-6+'B\88%OD$=1JR)O'\ M4&BG?>+J:>2';QC?06->[,[Y5#N*AD8+7FA69='@)T3L@FJ+DJT=5#H%E:FQ M=-_CE#P,JF_]I7@++6C%4YUV-]"!JG.R,:DW-/>GLG)BT(X1LLY2J6&>]'1P M"[=^8,%M?454JVO*F2JET_HF$O.UHIT"]Z]Q&%]SV M;0V@2N7S5P44%, 6=8.EHI0G8_=.U.Y@(<._JM(]"1.E1)I_10DQ)1JBUC66 MKA1RD_=X>?Y5\21GB?Z5"[9R2[=BRX$U!YK<$BD789BK)C\5B174*YV>JO&D M_A:#I5C4( \L\_ISX+UB]^P_. IS0*1V>F<,0>CD\OF=$CE3O.KPKFJU\FF& MJ='^\(I25SFW1N2_<^15UM'5D:=W>J8LZE8SD-?V'-=9%2P>V3U89'?G*XLF M'*Z)ELK2&32WDID([NZ.*9-VQJY^7LN>V=P K&X'0Z-JR+!YBPS(7H+3=@:U"FGS."3F-R M<_Y?^3K'%M3,ED339JG.,;=?#ZML:X:43,NYJDKEHECZHE&\;.TLL*A M=7JV)NI*7:$S-@[1:C1T3Q5RQ0_1RD(.;J%)@+FZ7"CV*RPUH10.+Z>S78#N MZZJ-M'W=S"D/7D^'G7HZQ03$]9XG V??/X,/G\L6)?\1*'(;3:*;<1(Z/T7A M3YNVI%L<48';: U=?_^RVE\W>\L]O.0613?1?0(WJ/^._#&>C9KM3-)T9S(V M;Y'KYJ/M:SYFIR=U)6DUS63E#\((1<(S#"<*:)P,PX@PQ176KH86>8NK$9;. M.KZ8OJV8'3!;G;6!VOGS*T?HJO.#2T.22.0!_E> !>F',,];WJW>YS$ M"?D!4E(.P(N;V>M6UV-+!Z'WYCG(!YG#->5 SNN5TJ_?A0UK7Z\2>=X.I,)0 M$U LA ,!(V<(__WK.,#IEJ-*HJ!(BBI2$'[&#G[JXRA[)M-GRG1;(KL$#T^5 M=KD7^4X5>?$S5ENK(<6;QS;9!<\6Y[D:>'2VP'-0GX\]D_8R?'H*@TKV[+8M M+GU%2>/1WM&8W;;A[3:90UNR)4A:T4RTRYNQ)4A<=7)@P^KL&K$K*YV83J56 M*4OE3=O2,UNP:TM.+SW@EVQ=U'(:J:TR :B^;\#O2.GR%G3IF56A=-H9U[(L M40GR>3K5 MKH4'IB2])12]#BY3>LZ)0.*N'>: MJ8JFQA*N:BWWPK+NO<,)(G]T!8RB@,R5.*'F5$?+"<<9/8UI]^3,> M>(Y7-OE0EBQBD6C009M?&&@QKK:HW#W@RB:XTBU1J9XDS64)F2F^>"7\T1.;]]\)93^CI.; MP0-Z+2M$,ESFLG-+R/S*+>$V &U%+Q\):#(4AA/5G H%1P':R=T_*-74DF>% M[VH_4^\Q(_,5)7)I25$Z/<-21,/B-Q(X]LK8V#5@3R78LTW1J*V$)V.%O9I> MF7&Y=4X1K;['(GF-;UUX:@WCBU^CNPC<&O2)UNF9IBDJ)2FB;%3>P0]9FK/,W<)T/NDPZZ94Y(+5IG'F%JV2)VXX M[ONXWE<<:ZJ4XN\3J(@_2=:9RRE]0M&C%Z3<7BKP[V""ZZANB:-O*6#^#+& M' @QHN -\O"", $;*")_#@2/S.PQHB?O40*)3,D0QQ@DD1**!BG3(GT>N,*0 ML/E$5A-W%Y.6YNB0O5P#DW 4QO2X\#R"-I3>,_[PXKG)D$R=*H.Y;V4([\%_06=]XO H^@;I[HR_1:2Y7! M8&^P2]%/E&T8T>; YT0[X@@^1>:$F)F+,(Q@K_EE.W],(D@@^" BE[!-$1GX M^![U\GC/E%(PUURF#)-0^$ID3!2N V>]-+,RX7<=$%4;CLD8+N$!?G4P;$[#5"V[P@A'D]^>:+?T7]E?TH\ C5V/,&C]7)?D M 4P5*E6+VS69L8]&,3Z?_/#!]>*1C][.O8"^EW[I0S98MG6 ZEL..0!ETL/N_31DH&7/M.TKJIK:Q]+77GMLTW#RDI7LM9_==.PFY]I MDL$GVZS)ZH6&S3?\[>V&_P9'I+@IW99!&CGIDH-L"?)N?;&]\M&"A*D*GC*H M;0;MX%9/D1HVAY'TQM!,J4/>6DD9CJ:J:,JWA61E@S'4=D.C/>]K;AWIHIOQ M0APCZVP3!O'Y3I72FE#DCX_1EJ*'!4\?[O S#L8K'83+K._(I[D%%UK\.#=O MB4#F.R?)P=!TX_AC(+CA<#!#R9O![&+HT!Q5'SYZ#X_O0+U@<;28)B@3W1T198ZG5T(G?*3V\ MD5\CGF2*)\UBJ:H*Q].!;=\:\:00WU"31:5ZMR<.*(8!M<4FK!%0*@&4:HJ6 M5MEG8N]R.[NFW^]1&,?"* H'7M+^2^R'MP@I?6\I>4M+A-;IZ:HH0UI VX0 M\]OKS)B-54"G$]"9HE9; VD.NK: ;HMM605T<$(G&:)EVQQU''5E#- JJ(/C M+5DE+DQ=9>\:4:*#75LT2W@*'@7\.L)!O*&_<[5ELR<1%1IB[B$EB9.L'6.T MH&IQ03!\0]%/3%4'K>5#-'UK"A]Q[X/YWB!.R7K5:J02V^QMGB:]>%)E3H]31-E:[5H+\=3>_"TQ8>L M$4\RP9,L&AI+>&I!(?7"EPMBC")G2(U %S]C/QS!=1J>T+)[>GY*42(;GV?T MW%4ZE$[/%JWJ:?C\Q)AA1&W-6Z\342H@2N,MJ%J-J*T)W74B"CI#2J+.\^Y: M#:FMJX,5)1(M/\@CASEDM M*4V)>%PL4'17"8'S7UVT:DLZX&XXBZ#:EK52,ZC@>-<0=0ZJ5H-J6U9*S:"R M.CU5$0T>@&XUJ+8EG=0,*IN 2A45NZY$3QXU+'7[S0_C<40K.?\5P?O[XYA\ MJ#U-%P]G'XXBOW^>T?-F0*GY*2-F#NXUJ=.SZVJNP/UL%G&RQN3;B)-RRE.3 M.SU=E&V6;HUP'!W(RBNI;^#.FL&!TF:@K+'K";+QEK:O"\L MGBG,<^MWCO)-\[$SOZ:\J&B=GF:*NLS[KW+HE8H%5H<>W&-3G#F(4FBK#9CQVW]E;:T^Y@PB,*GB=$: M!I4"BRT6MU0K8LP%[BE397.78 M:QGVBIJKNV-/AW,84=7KRD_CV&L+]HK:JQ6P)T/9+U&RFZ'X6E\/["89XDAX MYQ-6_BIXE*VB$.!*M<$:*"3O*EFF,9D_^6E%7("VW\,@7!2;';-&=*734T75 M6+56?^5)2*SBJDZCMWQ^/S4O:,M$$% M8T*.65_'3Y01Z><>@ U7KTF$"#F] $5OUPE^BHDPP4NCD)8HN(8.K#@N7>I. M-T!#*UI=]V2YA]\6#&\Q,EG"L)E&2.NZF,LQW!8,;XF0LH1AJ],S1<6L7.:6 M8[AE&-X2:64)PS9TA11-NQF*N/41V]LH?/9BP!?A8W6COKD>;>VF.Q&CS'/] MA .\0X5I0P*SVZBM@0./CK"(I4(F='4LR11+&K]XW&8L%3)EJV-) 5=*DKA> M:C.6"IF4U;&47H>J'EKB@=SB,/B.D\4S^OW8W&UKWUQN\6QK@KUD*!!B&LW\)=$IN8G",:BHGU8&)A?YJ5^WQQ\>+BQ]!=&X-ORMK8VQ6* D*&>#(,A*Y!' ).)@$R+5(@"EQ"> 25+KL2>Y4'&A8FK9^W?1-@B5QH6*"Q47JAV\ MO@U"I=?C]QU&J'B: 9]B(Z;8^C0#JE9B81QC5TA"LL:G$=$P4-209Q^<^A@G MGGU08LBR9-S5@WD)ANB(DNBEE-!KPZ.U;$CM9'KQA&Y;A*NFZ*N2J*IKKJ)G.O[ MX[I\1*Y;5-8U61,U8_6N#^?Z_KAN'I'K=BKKLB[J.7)-7D@C)\9\PJJ8WO2FJ7 M:+JH*379)9SO^[-+:N.[FLJ[HHF2O,4+82V>S<=HT!@MBC&;N5)_&3Z-(CS$ M0>P]8R&KL_[N*XTNOX-(#!_1:MMB !26H1,MFJ=X+1G#VD:!.V.@7% MI'N(8:U*RC$[M"T%H>Q-,:@T&RX=9ETYJ2+>WZ9Q:LH*;,Y4V9H-DX2C4'V? M(/(I\E_7>^Y])/],7O6$HDDA#AJPX!K8E1^MK1M\:V*8E(20[.L+8_9>B M="9?&D8SF7S$9_T(HY]G:$ 6>([\%_06=]XO H^@;I[HR_1:2Y7!8&^P2]%/ M=J$P[65T3C8/',&GR)P0,W,1AA%LQ+]LYP_9-1] \$%$H%<3R,#']ZB7QWNF ME$)^//+1V[D7T G1+WW(!LL4,"B0Y3@TD"Q]/-,M72G5+UD\/'MS]KA+ M'RU9D>DS5>O*AKGVL=25US[;-*S5M-NOF9:NM\KGRNM<]5EKJ6I#5D MLD#88G/-=^;T[<[*9_@00H M3K(TLA8NB]8.&96U;AJ-(%N:XUHD;>XP.VTCB'9!8P(U"=[A/UK>,3BT1<;? MQ]]WU$SG8VJ73\A'@8,%E B?L8/A2H*@RJ*@2(K2_.M\RS2HY9:'-7]T?_W] M2\Z1/?%3J)M2_5)'>LG8LBQ14U:[A>\U WU3T^4<+A^[Z7)%7N?D:%B;',P M,:B5M+TK);73,VQ3-+2Z:H'6F)M:]<8?&Y[?VJM^<)R2^CB"%\=C[ KD#_@5 M1XX7TWRG< 1\B 7BO @AA(9%(;O_FGWMQ4N&0^R[P'2X$RN$?;(PFFQ5*,[' M=O6BO;B/LK+%?Z0R=4WY\7D<$2KN4;=)G1:]T\ <_\\:?\^DW?PI9SNI96RG52G]._+'F#Z[277G5:9.W;R] M3R>>7QPF]\?,0SM(=(=/Q.LAR M'*E/W%_VB>_P'V,O]A)\CZ-GS\'IGG"'G? QH*/0[:%TN,J$BC6&O1KOY*!D M&I1<:7#^#:4C]V MG^!2.CU;U,PJV4@<6VP[?IP_+,M^D7RQ/."(!_8X?SA_CAMXW6)Z$X6=UA"&6@ZE-UA(&A4-?=5QXPAB&D%$ M+V%$?@T$9QQ%.'#>A"0B@_EI?B2:'IYSIYN;%-SDX_SA_.'\.3'^E'*95OKU M+;I,U,;.Z;,$'E2V$U]F&_$#[,/I*R\"]V&V*\\RVF;=F5;=*Z/3TWDQH%9C M;8M[?CBLF:QA[01**L!YV#B(,)G)?[ K/"(OB-/NR3C^%6HK>,$SSA)?R<]" MC(F%[R5>L9JH;4ANW,V4/^GS=YX?P?G#^@9)CF\QLC'*I0;($ M5Z1UI:X2Y(6;\_!8X];&'=]0Y PG73O4*A&VG5HF-4>$UER@-@_7T$.195IY ME3!*-(%7!ZB^6@_3<[4G:X;ZG\IZ0@77WDRXY^T89O6>)HJL (9K\D7WNQ%P M$>(B5+<([= 6J*2MI79ZFJ&+LE6Y( T7,BYDK"RZE)#MNZN2(L-M)ET6M>HN M#174OAH%*;(.!QBB9J^>892^G<\%C0O:T1==2LY6&G+5 M+EY&IV=8JBBKE5/^#B)D)W")A\W^2JOA5Y6PT W'?1^W/M*G'+_UDB*;G9YL MV**BK-ZR9>@<91,JFG&0LN,5CN*2T92,^U9QM=2V6Z3*8;6V(8IL=7JVH=1_ M*L;!QQ[XN$KA7.5<;097RVP410J65MTG[ ;M$ZU*GSA@^ZGM9&!.3/B%+'ZA MI&7\J=-%8*Q3B:+0-#PCI\ U!R73H.1*@_.'\X<)X<.QQ3*VCM?+B,\X?SAS6[>\TUC:7F+ZM;J='IJ=;JK7/> M')55G' Y9IL_U6SH7<789$B,6U8'C@YXM/Y,C-:'XV/P,0J/<0(.\C[[,W'_ M^13L!F[70+[@@9L[-3")D/=IY3D2G#^37AB(.M-6!C M"&LR8UBK*8#/RHG>83H[%76Q^1A\C'V/42",3"68MP[M F MJZ1YJ$./'TVT]9H[*G+QY>)[\N*[]Q9=JD$V7LT0;96++Q=?+KXU7WA;Z?ZU MM[Y$JDD$&;HQR-6OEW,1YB+<8A$N(\%%JA!5DUL+&AXIHE&]1R8#TDO#K^\3 M1%Y'_NMZS[V/Y)_)E)]0].@%Z;LE*J[TD],5I5,CJ_'1*,;GDQ\^N%X\\M'; MN1=09M(O?<@&RY:ICU9F1F>>/O[PXKG)D+Q4ZI*5 @2R$''VYNQQESY:HG/Z M3-6ZLF&N?2QUY;7/-@UK=2US_=--HVY^IMHZGRN?:^USE:6N)6D-F2P0MMA< MLU.CR0>RW4*Q4AV5:Y%L/;RT5SZ:8RTXF&PV$4NG2UFW-[JQ%3AV*'(.'(4O MR^>YC2+)K+3NQW[TO@?U=<^N _IS5F67$RJK1)L@\D>7DN8*10&9>9&D\5.@ MS87CC)_&/DJP*]"DK!0_\^?T]"]?B]6K.@62/83+HI6OIV6EBIZ>9F MCVSI8721(^.MZST=HET\$4^JR$7W$J0YX$?S!4,_E%S4NT+^OI-ZWVFE;'W& M#G[JXTA099JV)9_*I;J2Z5>J=,CT*QL*\8N:H8NVMAJ'X]P<2I,R;AFCFI/)R(#$-I%+' M^^K*Z>#>CO>.(YH"I%):*]"2I!B&MT[,42]3LU8JK_)+F@2YI MTM9LU%T1/-J(6Z"MFM-^V]"^+4Q;<,\ZMXE"@!-XDGWMQ4N&0^R[P'TA0:]" MV"<+HR5Y3J;105E?4B_2Y&VU,7KJ5])_/RVW4"SK8FHZ=3%->?66 Z\ZR:OF MM8L_Y:RHE0M$FZRH52FES7CHLYM4=UYEZM3-VP0-\/&J=';C6.*RSOG#^=,4 M_I33Q2OWQ?:IBTV&=''+VC]LA 1ET!GM"BXXXO^P1\^>@]/- MX0X[X6- 1]FI@:9&*U>K]FH(E(.2:5!RI<'YP_ES(*6^I>(#].'\X?SA_.'\X?SA_.&!XOE60?5U 6X$ ML'A(F$CK4H&8H%,,1Q"6\\?RI,WY; M3<)E]B2\9<%6.N Y1-$]IP T:"D0FH0QZ][C%RL!TOS^+GP,/L:>J@&DZL ^ MNCK8*/Q9JV7!R7HM"\FLO;* I@=UW/?FE@6W_#A_.'\X?TZ,/^62UXM66U_7 M%!5BERD8 MP:/*%!YKC0LP[@C .=MXVI%9>$1>$ OO( Z XU_AAK@7/.,L:X_\+,33%LT\ M1XN?D;-W1L[YP_G#^B>C^'+6_27T;G9Z:4[YOUPZ/^^P"5SUTPX8^WUK1_1N*G.&D MG+M2)4ZQ4R\-Y@2E9'$^[9"%WG4S+?1NJZ)AK'9*W4>0J1ZFMZS7:+FU-Q/N M.=N"5D>I>]VJH]1]695S3*>2BQ 7H:D([;T-@ X5"4Q%U*S*=9*YD'$A8V71 MI81L[RT2#(EX,I8L6HK-A8P+65N$K%200#M<^PA#)C:C(JK2ZLV/TJ%?+FA< MT(Z^Z%)RMO?6&H;2Z5FJ(DIJY9M5!Q&R$SMY8;#IQFH<5B7T=,-QW\?M#_DQ MT(_#@(9*9$LT<[;$8]]#*8B*9IR;[)AB7UPRFI+MW"JNEMI_M]09WJ&6?,GM M62.R+LIZ76T=.3:9QB;7.)RKG*O-X&J9?>3HVXC>J&VD984U#M_19'M6"G/B MQ*_)\#3_EO&G3D^#M>+W!G0C%"5U-1.)@Y)I4'*EP?G#^<.$V<^<3C?9T^FG M=-Y3=T.3!A;26I^%4.4\9D98]R(@8I)X4=[Q3.F#&(MXU;(J$F-H>V["H6,M MS=.LO*(1V_PIER%4).2U52YWV\9L"';9*B/58#BV:L?6ED+#>\26"-N*22N0*^IJUG?SBXPQ[AA5;.;#3T,8':.5 2(> MP&.;/W5:FI5:6IA*IZ>(NEZY?S!'$)=PSI^]A.BK";C*GH"W+)Y.!SQ2SYJF M53WB8_ QELC+=(\0$V[2 MJ:(NUU!'@@.214"NN/)LXU%G"X^GU+WRP$UK&IB'QQM:\C0#SA_.'\X?SI^C M. =[Z"!B0@GZG**-/'.O%9"K:O[O W$F0X@[I82QFGK6-"V?BH_1WC$*Q'=. MMF=-4=6_L65-R? -O?LE*E:5FP"E^';DP X;ZGYK2YN_C@,LJ%*%CC:+)6[2 M9:U4N3G-?C?V ?O=F#;M=Z-+JBA+TD$*71X"$BVKRUPG99HI*GG.[TK'UAUZ MY5A2';URZE5FQ_1TN7!RX:Q#./4=&EF5,PTM&;KPZ**IK6Y;7'RY^'+QK2*^ M>V^B92EI?Q_)K-S?AXLO%]_VBV^I4(V^TI]K;YV#+)4(LB'*6@T!>"["7(1; M+,*E)'BE]U?M@JMU>I8BB8;=!O^7QE_?)XB\COS7]9Y['\D_DRD_H>C1"])W M+QVJ.9B0/:H;$/0MVQ'Q,,0"" F$($S(Z"@B?X;\N 0_1L@71BBB MS8:2(8XQ (42#R78%09>@ +'(Q^*$_('FDS7G3)NF0[9RS6=S&X4QK2(X7F$ M(=OR&7]X\=QD2*9.L3KWK8RATNPKJ$]F,$[6?X4! LLZF9.V2(KY?V&V( H> MTI A*XZ!;B=R9>&T60%(_2(S_H11C_/T( L M\!SY+^@M[KQ?!!Y!W3S1E^FUEBJ#P=Y@EZ*?*(8PHEFVYT22<02?(G-"S,Q% M&$:@"G_9SA^3"!((/HC()6A1(@,?WZ->'N\W*(5,#9W!3GJN=HVY/U$%E/WM M\-#./XZYC<(D%+X2412%Z\!9+_0-6]?EO'J[GRHUREP4#X4O?O@2MV6Q[ZX# MHM7#,1G#C7]MS:I^!&CL>H2!ZY>T)'UDIG3SGNTYU%H@,_;1*,;GDQ\^N%X\ M\M';N1?0]](O?<@&RS8J4+1+Q@*E3/IXIH.[4JJ'LV/;[,W9XRY]M&3ZI,], MN6NKZQ]+77GMLTW#RDI7LM9_==.PFY]IDK&?R:J%ALV.QI=L$#OE>;[7M=54 M+)($TM1!MJ02;'VQO?+1''K$HKJT)KD:$J'[?RE@@R_&6'P M,HB;#6&.Y]JNFO&:(X?C;-G2E666>^2X:L&UEF[GSD* M.#:RD1(MQQ15JHI M9NE04TPQ5SL.-+ZV A>(M@K$/JMH6D:G9XJ&OEKMOR5%]EC?X>:Z& E)*$28 M\-[Q?"P$TZT/_@Z_.1 E&T7ALT><**'_)H0Y=L]Y\^_8%Z1X:2]CB4BFK<>J!D2YV>)6JU7;QBJ' #TRKV,Q[@ M*"+Z-4&O&T+?[;0[2B50KVC4-?G3$XJFD94']'J5;E:?<( '7E):,&CW*T-B MI%HA-VAK!]:*?CT0L!0*+'W576IR&4RFE>TU''CC.(%*EVF6+A9\3+9.(>R3 MV=&-NQ,[XE!\" 4'#^,QQ&] M",7:SQ,60B@Z( MT$WPC\A+\.?P)2@C0"9;%@VWA@]]7E8+Q@H8 5"V433MRME"W'PN!15@&YC/ M;L9GT,^C"-)_DC>:T(#_&'NCC>WWVFG;5(O]+@K17,%J ON;P6U&X%L?!GEG'CRTRRQN:M2]16%3=#=7)8F;PX?& ZUJSVW<754G)=_T%L[% M-!D5[G7#M>[I;>\\N,N=GI+3QHN;K^V!SQ856@D^4&^NA?8H?;=B,:XW+X,2TR]M<,GHW4U@. M$6PQ5/:"+ TR>$RM2OR /?.%:;5['3P38S*,-I4):&?]K@G+-Q&>(0\=W)K)_7O0AXWVY/) MFI%[DBZD_O?V(P7O,R94K+5=PGU,6+<.LMTD\+TP:%)-2 MW9V_]]F:L%S_FWTF_-73 X2A&;8KJ)3?N@+.P&/>NJ(]#N_M.'*&",['Y^[H MB;,+>C/OEUA5(R]!?I8OS9WAG:VD6_1&;[(_A!<.H7.$%^Y@$6]DS36L CN2 MV>D9HL6]W=9":XNQLT=H60 M2>4G. =,80K)I-U8&$3ADQ 3AAQ&2S.6RN?;)/R_?B&7D^D/=+&(&TW$^)_!GWRU0A4&2VJA!P MT_?HIF\9;&VW?Q6XN V=7E8O;W,#^+ &<'U*^30LEM*6;GU:667+?N'6\-&M MX9JUL@9YI80<#('L)(SD!!>TFX$F\2N-+"IA-ATT1)J2QMW-!F&'HE5/KAH$?[_JHV2^6\>5K5 MNS$TR?."7\G_2IP+\V26NA.LIL?RNR>S*"9(F"57O@O&\ZL: ,F]W'#8(SBM M3D\U1%U>U?^EKT+P)"N>9,7*7IN?9/6%=NGB258M]9;Q*XX<+SM@BJ';L!". M=N_"=AI.20E_^#J.Q]#E[F9 N\3&/P*B8*[)'P)Z!ANX^HK9KMJJ#3N8S\[B,^U9PU%\X0.:MLI(T9I6:\X]I\B&PJ3>-8D*+#W9/JANUH>-9/&>0E/I;ZLB:A!W7/15EFJA,H#]4?;.A@'*QRVRJ)2 M*>+)P_^E-HO+=3N"*/3QHQ<$$,.">D>4^=Q1V6$#T?:X@90VW$I*I-KIZ8:H MZZM!97XAY;11K389UEJG9^BBG5.BD458GX+3LF$?PE!6;]T.M,?X-',AQC_M M:?$M4DH-UDDZT4F&J%5OM-JDHR8NOEQ\9^*K-UE^#6(J:[FGQ"S*[PY79-/Y MI,-4N4A#AJPX!K8E1^MK1M\:V*8E(20[.L+8_1?/^A4)I1C_Q"[)7;B"C/(*&_W@RFY)Q1$PP:/XS'$7X@ MK_CDTT3\B9EBID87M78NP+K1+=U451?)IHPU&\NV(B/=L'2EK^.^H1+\8F+L MC$ 71F,B69]0[-$,\?EY3&R>;'E+B"7/LG?2#Z?,W?K>31@_XC8W#A Q(Q.: MYTEDRWO:#N^46B&1A*]DPQ$%8HIVA7?T+S[] ]D/A4<4AX]Z-[WQ5^O[BX_95>CITLT%J&0,G M(6)#WP]C>@$QO<=.6GV0+/8+^9@@2V=_HQ^[ &N4Z#99@M?=X<>QGXYQ?_:_ M$[CLB:=TQ'/HR. Y!;C^^GC<.I$S2)Z S]\B=/;UF3X-)873UZ-W:YP]0H %5"< MMM!X\8B!Z*:*C."4_ 5[@9@9CO-+ B/2BZE5&0 L?9B*,XXB( [!^%/<%:9M MYJ:SG$?V9#)@K!*S=4HDPEOR&9<(!1B5\(+)MY,A2@A7WMB"K7!,V/:Q@%]' MV*&F?,;E@0=>LO"&401\1<++,/3Q>J.>'1V?:MH%BJ>D%"4!R/)U5;*;90FDP*[R4S"2.@*GJB M?@UZ8E C6%6*!T?=JV-:X0Q MW#$5I]E\Z#Y#Y:8K7#C)F%X?2X6#[$,^+3Q+'M.MQ_7(:J*T[$XJO]/5=V&/ M$ ;CB';-F=M88#GP)4(OJO&R'7?[3@NSS>Q.T!GD^QZ-^\QVOF75=A$$,/T[ MNBY(TYUL6_\S!3)%, Y@D,]$.3SU<93&=%19%!1)443 ]\#S\=QN.*NS22G=_=?DK?27N1V-0RTHZH,J69FF"R"YLB@LX^81\:B?=#S%. M-YC!&C8*+^0I<=N(NG>G>"T!OOX8XD!D7;"-9+BC>_"\W&5J@=;NG"F+;#\> MDP\3V5[<9.<"(L+#D!C??R-8(>)%9&L5M7\3XB&5P#[(*G(S'?7O<9#&7Z?X M7):#,K*U1J;^O%F:J'RPC_:C[J,H3C4?)H@E.K\?/B]OF.^7O*E2_K+&N+^L M[.@OWWN/@3<@IEJ07$P]H5L"9X?HWQPOV%KV@E55-ZV^)DL2MC1M8-O$7^HC M695=2 MQ1=1TH#/Z89@T0=OB][I/)E2VJ[$8* .=RW3R9'570-=)N."J^XHN%EE7'Z4XO2E![3$89O8M.&\#GH()EGZ3ZHL7:E[- MPG)SPU%--@HA<#_Q?($C&&/)U85,0?'3MX4IN^=J5EG]OIH M6G5ESEP=+=0Y];*JAQ,7+W=RZ5NZPNWZA\NEF*;F[4+MU+D6J/3O9RF#T N* MR(0>(P2Q'H$>C2Q\P)DKT26,H.(B'2E[-;S72S+M3,S:V:+3D6!=^&GDAV]X M,I_)1^A@9&$XHJXE$"+] *0AQ)GJSVS9*04=Y#N3X"19]I024]HM<1/V%G\2 MUYJ^ATAX"I]X#BNPQ'C@0<#K@GSK;#KVA( ON/"4P-G,("],(+^*\#1$"Z.N MS<1(O[22C#&?BR$MZVV8_63R,T_W*ILXU-N\I$*:G5(LJ_D+&LPHEF,A3;<" M78+V;Y)H::OYR'2=)9=H,+A$N=-3%$DTS=4\DFD\(AE&!.D$@VW>F]\JAIB[W6#8A FXD#/:Z8@Z$[AF..PG'SJC;$^]89G MT30\BR;?>]ONC94+3CE#8M]#W\5E14 =+)J"2NTY.NU5#UC7ECU:]@)($ A* M.POVL1^^0!";GK)FP69GI@Z!+7WJ6-*3I>T>WWD);SQK;KB0ODE(X*-1C,\G M/WQPO9CX!6_G7D 70K_T(1LL4U0@G4L)M!2;Z>.9X':E5'BSZSG9F[/'7?IH M*>$W?:9I7452USZ6NO+:9YN&E96N9*W_ZJ9A-S_3=;,YD]4D@T_6T@L-FY\( M+NN[-$LJV$9((/^J7<-DM*$2'[T!4SQ6)ZN\^TR;\6Q7NJB96KZL7-64-;K5 M0_3A6^ID7(&3\;$?O>]-'(V=FF05K?71.F+>$W^M&"G;=0MXU=4":KRC^03A MF(SATD0FFA.8QOW!6IR= F394"MU0>K5%6)\C>$[\MA@?U4YF#^ CDE1O$+Y.46S^P%\M0F*'6#O'A1YC05!-)" M8&-*@Q;"AYQ(6J[$)61(6-S$88ET2E7)4&'%A6BKIN-*+S$ MQ8N+5^WBM:6>;#7Q@E85HI*3.\+%BXO728C7EIY*U<3+ZO1,T="51HA7G2<[ M=3CB?(P&C7$*P84TO?UL-7%\-8OV?*>0X'::-$C7[I(E_(^,LA*]<-"9HK]<5U)9EW51SPG& MGMSQ^*S'W.QVUC3[?#<3I0FV*!_CN+;Y7,;M0EE2V3I&NG$J"8O7_5:N'^[E M>HW1U0M,+N=2!#CX9VHW)Z<8KC^FJ?;R4GHZWX76^QG7W[\L[T.T+1'K$[W8$NDB3R^F.:X?T03G+NL9MUT;Z((JC)DS74GM^/!O,XG6N.896U8\]-)(-^L/OQX[ MA[;QF-AF(>T;$U86G#5$2]D2L.&88,1:VC_V^PZV?[$>1>G=1:$.)Z/*&,>8; VCG0B-:_)8TBP[ MFW%YI*=555J.MRV;,&^);&^(&Z^-3.JO;'2IE+6W1W++N.1M 2-)0$WAA&;X,5F\IL*]E'5>8ALEN^3JV1;Z0_H_& MV0,JQY7FW$7DDM50R=J_2[5!GHQZ3$HN5%RHF%KV_KVT#4)E;C5=T$5W8J0_-!F!@D M-Q*F:-/A*EP7._S%*V@>4O'BU8%WZ+0WUI>"+;W$TNW;-/8Z&)DV(;>6>UUF MS:56VM<(;[GLE[:WF^NY/>U+7:9/GCO&DW;ST(P$LK$*-UQ;;M$\%:_W](Y! M;ZYU\T*7T0JMG#6ITV.Z(ZRV8T?8W\/0??%\_R)PKP/"G$>/4/ BAH8RGZ=M MU%>;Y%@K355ES50&EJS+KJIJ>E^U9*Q9LHLD65%, UI +S;5F;R8 NN& FLV M 2&=P>9&L;G=A+9/8W':?4=1#17)?<=2-;./+;T_,/J*YB+3D"65U>X_$9Z( MH> ,X?I,/!%"!T71&TA86K,=)/UQ0FJ7R#EY,I,QVO8SKX=9ZC:L$;@=VS%] M\8@.Q5^)REF!VII63);,?BNF.= BNI9,2R:$+3/*HR2'K)3\G[&#(=TW>R33 M1TK*700ZT??#E[B579ED<^29-T_P$_(@I$Z?K*%XOFY5M"JZ M]:CI&LO$*] %LJX.CU+7U!>VLYS4 ;8Q]7L4QO$AJ%&3]=!LBD/W[ O'&3^- M?91D?5DOGD(RM__0X#YGQ &A_QTG#-4):3X]N2KAJN0$&<&(*MEG4>*+;B1A0F*+:U4 M8^^5SMZ+25T;4KFHL]-9[>9H*9V>K:X6[.;5.;@,'"[6>2 AF/,_YUW//+%0 M.STKI\4IKUG&$&Q:+!$'$HCO.,D#O];IY10SYUL"%P V!<"HWRS2N5G$9:!1 M9M'N0E#"+(+&+M)J6Q=N%C$$FQ9+Q($$8HU99'9ZLK)Z:[/Q>T)-&33'/.;: M")?\*W%@-A=%1)JT!#E+"[=]R;2<DN2<.R#GXFF. MV?S6=DMVY #-M*.!B;>1EHWMS%&/']S @DW\:X00+Z#'"M"W<6D!ORF/, M67ONIMKLK<>LW2&Q)6)YJ:L!J=T*"3%4@JO=J"EGPN\.F^(FO"UW>KJF5Z]% MRC'4+LV3;_3:2J>G6*L=R[C>:0]FK/IW*S@^J:WL'4<-D[O5[K IL5MIG9Z6 MHW[X;L4JA@X$H36[%70@UU8+K;='[^S1KYRK7K,2&V Q"F#O)WYC&\3B60W? M"&>;2W@9*]7E:IJ.2>SU#=&D6:TUMJ#6M)B2>;"8D@T!PKIC2MN#?*S%E.[# M0?*"(BPDV!D&Y)V/;SM%E(H>TS1ZIS3DJC9ZD2*5[T#%$V*GL '%(, M0THYZ%ZH20K?"YN)JG)[X>ZPJFLO5$%[J9;*]\+&0.Q "-ME+]0 39:VFJW7 M'JUU4FDOQDH1[UHB3)JD\X0E=CA7+;BD24:GIW7U4T]8F@:71F17!IKQ9*6U MNY)Z8'/:[/040U0TGE30,%25,Z=WAU5=YK35Z>FB+J_>XN&GQZQ"[$ (V\6< MMHG:DD13Y6JKS9C2#KL9RA+=#"6]\K42CBJ6-\/=85739BC+Q"\0U1SMQ3=# M5B%V((3ML!G*D!4LBZ;W-J,K7G.*.5J"EG*!^@N)S2!KC]XYK7-B M^,R@E:@J9Q3OH8A12:!I!&BR*%NK]S7X62>K&#L0Q'8XZU0@/5J4JA?^Y)!B M&%*5:R"5!)5!-T/9;O,!>BM156XSW$.-I)) @Z+%DBC952Y8P@^1 FR!>\Y8[#9<\'RC3%;F?OC%(4:(W1<> K@ZK2Z>FJ M:$EUG6N5;.;.J*O$%=%'+R7(IG9S !9(+)(,">1AY MW,$/5S5(8155G>^(7 "Y %(!//#5756G1JENU=4IEXL@%T$&1;"447KT>\XJ MW.U01%6MH: L%T@ND P*Y&'D<1>CU.ST5%E4:KOVT" !;,T865A\\N4,>3;] MP)KQ4RZE9#V7%[A4:IZ;QIF#@DJ>N.$8HM;+0*CZ%CY;/EL^VZ;,MA'C4'WZ M/D&$D-.CY*53R;FL@"<4/7H!90"<*=9M8-!SRHT6AB(1"^-Z^5Q00+X?.F"; M"TDH)$/R=^>/L1>1W_\R[L<"#A(O\<@$B/41>S%\+ARL'B_"'__[%TLUM ]K MC1@\CI:-&'.QA\":FQ5^OE>13E,N9LL8,UL&FO3(W=5KOP*AMP\S]@+A:AR% M([*XP!7^5,8J,Y4C+ @ZNAA;%@2<_0'O=H7[A+";,)XR#?[NDM\G/U/NQQY\ MORL\D#\ )H*B\<:L,H( ,%5O-X9Q2@ M(O37<8!3+TB51$&1%)62YC-V\%,?1]DCF3Y21,#X").!GK'_UA7F(R)$&D9D MN1BFF8++;L@3530BO')O.@DX,Z0-W5%C]K@@[K>!5[ MKT4XM22*2TF!Y(U "2\8HW0.<[9<9E)I.K&Y1F&Z6YZGEQ.?\8<7STV&Q" # M>VO^6YEI*[.(TL.2"]4"9?3XFL(G@4V1. MB)FY"$0'$:'\Q4,:,F3%,; M.5I?,_K6P#8M"2'9T1'&[K_,3N\!_!*0B$N0 MYP R -%RXBO]=PGH5!:]OJ.HAHKDOF.IFMG'EMX?&'U%&V!W[.!QL"$Q^&2?C",^KE*MT0Z1K>2##?R*^RL^9NB": Q,E,@))B<:X MPZ##=14G1-E1L_CQ,<*/Z8]YFWX?Q>!O9]X'". M.4[TVQK[VJ-F_R D/M]+?+Z(AHVDHU[NDJM,2.BC48S/)S]\<+UXY*.W?&G0B6Y >*T>R92[IE2&' MTK6-\J=]QR#)@?)Y5VVA%)N$HC?$E (/ZI_T>DRY\UP-.O6(EKUZ\[T]%7\+ M,E*A]__K4?1S\#W>1536 ?R=C/OP@OUG_(WZZ*6Q"_4715/+"Q.G:!^&.,(T#L_5[4[('45^?P-L :G.4DK[ M!9![9^PJM)Z/G5.!Y>04;EK$ ,]BYSD!\PIAF37ASM,+R&P@! _%5,Z:U]6U M5SGS)+K&$X/JV9 [O6!]DNG.&93YY_#TC'+K*2AD?6P\W%*6BKM QI W>#M2 M$/Y[F&!!AS1*198_;"Z8M-IV'GG1W^&,\+,7.WX8CR,,X#5/Z>'RI@I+ MN4?,6]_,X&GNA>,0F: )BO=$/;@HYXU/_F!ML=6O/5 /7K.#ANN1=>!M[AQ0XET_?KK&VFD M*2]E$,43>""6)KA+'N$F,4\>S>/6] M)?AY3CR>QHQI@!,*'TJ^1\:>[R5/TC5!T\%+^)(O\Z18^"UPO#F8&[# +(P3 MB;@/!(3_/0W36 *Z^PZ+XYM8Y#U_U6)=S%0-)";Y_"Q#-5-$8YH\4AKD:\P) MZDQX58#YTOSMLP4/L33<@91!1P(-%:(%!,+1BZ>8KUL&T]2C$8F#LNVP3,_+4+>(_-"]N?#G0:1KSY.$,R260-DF]Z 8L/R+* M3PI0M5O$Q=2T]NJ4$/GO-,3+$9-G,9-#+)%&@O9Y=%X M( BQ,=@U08@K6_A<428A*[< M1!('&%J3J9QZDQ1R_^]1+Q(JK$'6R-1/:&^ M6OF"%Q1DSI0/*J=NX24(DU/B)!,&KQ".'!ME78W@*ID \(Q#T&"!VT$4A6/, M/058CY_*#V5F#)@IA.,K'8-Y M*%^&CX@#4S27U?2F@T*Q(5A5#QD[,S&!]QB\%RP Z-T'[!J! MU76\+K1T^^@X=V\\-]8T8FD9"9[^*RZG3)?.L(!#=K%B9ORXN*ZY>&:7.UIX MP6,9.%BY"%?4-&+W*+B">:BN'#]U0;R2>,H3M/$'7!R^A X4]D>.$IYJC0MP M@$JE+3/&&[Z*^?>SFEQV$QN3X#M6>,IQGZ&9'9E]/(D:@Y6\Q,JX]",>12X$Z(GX8QLNU MQRK;9Z6UL]-J+P<5A]\>KDON:,_\5.[GX,^Q5\LX5#U5*V538A&QR#DOLB6/:.N+5;/R;#^*W9:Z >R0 M''>^D,CM22DW)9LDFO4DGXP=M'E=YTXY4MW'<'8;;>7$K8B@/H%-$V#;!VRM MR-1S!8Y@1<&*IV+%(V6. ^Q.=.CWA3>-NQ)O=Z&:_=.DVQC^^)PUQ [%#GNX MPX./YSR!/*J_=KPA\;1I9_Q>%:.P4S8>V-"%@0P[GJU1J\0M(QF0&EX'+O[G MW2(J6Y.XW[C.Q+JZ,RUY:+4UKZA#TQ<$NYPMNY@'89>)]X.Z-_^A45C'*<.K MNQO!)())>L,DU@F89"281#!)GYAD>"K#"_OZC.215>V1(MA%L$M7V65T?)UB M*4*G"";I$Y/8)V 2M5M,TE*\H >.ND]KDN"?TV9E*^_WFT%&RHF,+DN[NK/E MH5:=YM*04S90ZZ'4R:Y.=T%>(_4$\E=O0?X*JNHR56DGH"I#4-694]66KF*' M4X7FU9TZE"V[.OM1T-<9T==A HN;I98EI-:94]4)XF]6&_&W%JGJ'O]0#P?P?D^C+X"E7\M@/J6CI/%;XU5^NCJSI0-LSIU MMO?.4D%="^K:$K$Z&'5AP$J11_H9!JP$>2W(:TN$9S_RVJC9A^<9X!%$M2"J M+1&10\FLH8K^WM&H.N])4-?Y4)>])9QP,.K2KNX,15:59[M0!'EUF;RVA!,. MH1';B"9T+YK;W2LN&QIRH5-!&N9N-#O\^8B!K;=Z/H?^^9[YH7%U-U1EVU1: M\G;M7)=Z2N^J8#;!; V<'*TQF]F65T,PFV"V[IRZ59?/;LRVV:)M,28H6$RP M6 =.W:H#K#5]-KRZLRS9T*N3( 6S"6:["&;;Z@]LC=E&;3D !;,)9NO.J5OU MCK9A/-I],1XO=ARK.)PXG#B<.-SIYSLOBUX#YT>P22?PP&U$?<(FFQ5C(U#; ME;Z5[5U9?(6,X1!ILOXKE5Z.QU?:J@E[&BU/YRC_VV#LM765?VE::+$YN:\)?XC>8JO?EF> >(%-V6@K\)K+50FDX.9,EQ[@WF"8WH0FT"T M-,*G8$^D,WN1IA$:4S]MQP_<[K_QJ7L3Z0W:86Q^-KFKP_WZN>4'I] -0\JM M/8>4?R@F1%6'^6 ]Z?)H2VM3BIGX>VQT"H MVSV(?BLXSF56E&$,='.WR3--EE6U@3+:=\#.L8?OB,T>=+.FF&LD%NG%#!]- M[>GDFO4S?,34FOX/+W@3QDDKQ[V@@0]_!7"Y]YD5_AOQ@O6UG0)^V^#W,8SC M#<6Q H"U &3CCEE\Z%R'CJP91+]NI+-(1194[MV ZP70] M8+I#\EQ;A?C[S;ECJ%=?<:^Z8(_ZX$?463L/6\LZ7QY\'O<-;5 MG2$KSR\R%KTKSI?*VK^EG.<0M3.GN&:&^(%(;JLA/KJZ>Y8=+LCJC 19:Z8F M=CV4[4[UU+R,L,A]"/L),.$SRSA\KEUY&:V9[2T-OP]M5]K*U9VFR,/1LSE& M= _7S)KW;"TVYA_)2BNTX;E@4ANFV%I:U=WEEX59XT]O(*NSD&2M659@D6+ MBE)MK/9J27B.G^^9-2^^6@*OV3_**Z9^7@@DMMJ/EI7=\(MV2.J.B11K3<>JW0S M1#78I=;R9^]W9%W ZVMI14*V2(19+P9.',NW1Z!BAK*NMC776N2B"1;LP*F/ MQX+M7RAZT[).<*/@QO9O6\=) FFD)DU%N;I3946KVM0B65NP9!]9\H -HMEVVCKP\:O307[ MB9FR.31ZX2,4[GG!@UWCP;8#V*8B^HD)=CPO=FR6+GP@?MR2+FPJQM6=H;90 M;2:83C!=!TY]2)YK+49M,OM3?7Z7!]%/3/03.Q'O#$]\A[.N[FRXPHTZ5+ @ MZETZ1F7MWU)$/[$>4EPS0_Q )+?5$!]A?7ZUHD)4[G66K@Y)5JW9FC;J27U8 M+0D5A7V'C8N(AF+[,DAQ MS2S+ Y'<-LM2U:[NAC5MGT1#L<[2U2')JBW+4L6&8H9L:EU2E.?OJQ0-Q9[' M+?:A&XJ9JH&=P45#,4%&1S0?14.Q'E)<,_/Q0"2WU7RTP'P4;LG^4-4AB6KW MAF*F.D0UJ'5(*)V]WU$T%!.9,'N)@=,.<3#5T=6=JR(93;!@QUBP M_0N%:"@FN/&\N+'1;>LXPS^:J4F--133AU77DLC6%BS91Y8\($>V%>;0U*L[ MPY;MU@:,B89BHBV5.-RE'*ZFH1B*$11M7I 2)DL*%!C.)2 M2J840+BF2D(B$97F$52.#RKR=@DL5I]+330=(8$ M_ -T0 M\RTVLM!H3"VMY<[2839)W',08O$F_]6+,\RG\S!@N,R^]O2/GT::.GP5PY()^X/D(D$1AB)\D/W* M?XZI-/$"$C@>8C^!#Q#7\0KXN$K^(YW!89T5BT%=M1$^! \T3M@R^2FI^^O3 M&_@6ZO24^)^R?;V%UWW#$W^#Y7[U0^?[PB#0KB0*9L(<%DZBE%YU$(?? )2_ MIP'E%HJNL&91.F#%!W@R )/<7+H!>KV)@; K;#U^8O#,(+- &: WGH:/@>1Q MY$Y"WP\?D4$XC9!$FA3\/)!>+WT=%YZ1IQR)!P(.6_'62\!"M-)B!5)E$XJX,WPP1U2 K\@-#VXCBE4<$P)7P)L)9?/B4/'&#,:):2$.0S MG9,G*1R#VMAD+,D^8KID3@/B(SR;R.G>M $=F8.A.CI,_T?MC/H_ M7G(KO7[UWD(U)X&&^^!ZFU+4PR$ X8F"Q0FFF$]C$>X5KK1# M]>;_5-@E_P+MZ06? _K_@/+P"L=:X#5VL.E7=ZHMVT8_IDF=?88Q2A0R 3&_ M$"K)%$YT/X7[V /_B\@P/CASO484 &]]X[!_#Z!'-HOWYS,#^,R2=>/97>]$ M2I9(R1(ZNLMBY!GA+E/,S^EQ7&'A"UT79T \>\0@EJHY%K45QQ@;UG@TL8 MG,2ER$LXD2+RB!Y0. 0(0%EZG'K.E,5G(NH@J[CH9D;WGA\^HJDZ@75B'MX) M:"+Q?!NF<)D;.HO@,(]I @^1R.5?F-%D&KK%"^;S*/SAS5C4:.)%<7+C!7+V M$SH*K]]_>/_Y)?OJ0$(O^YMP!EAZDN:PT]!%.07[C^B#1Q]CR8-3><5!66 ( MMGLS"Q]@,[+DDAFYQY/ IET@QQR$\#TZB]F?83L/GHO1%O2QH_,^1E=F1-W4 M@:.DL&?^,#P4)"R>@9_#.;V(@0JD)W?*ST BL>A)12JL(\B,+@ST2;+@&3Q] M&U$?OO9 %Z[(%\L!D$R\*8NOD#'(N319_Y6*@^GXM*_B\!I[&13E?Z>%BID# MRF[&0%_?;]@MZ9;XC^0IOOIEF9F!D\OP6SWZV@-.)@=C;JY:7>0?AOE;4%$T MPJ=@3Z0S>Y&F$=)(=[>\)CHNECBL!^QQ$S*%>%;;U5Z8YA_LA(-7([JXI=<%H]W;\\Q MLC)4![:^_N/+&0.FGU$8J#N+B(#4>02D]IQ8UE=@E >6Y0!I-+3L7#R A<84 M7C_A]=O;ZU>8E:RLI+%O;W1UIQKRR.Q'I$U4D0@&.W85R3,9S 8&TV7;Z@># MG7TH^W7N-&.^MQ#]4'#;IO"'"XM?-RI]W%4'812:.5/^I+"MA]HF(+IR=6?6 M1)Q%^YCSH)5=Q>E.M*)>W>DU978GH96SOY84J)%9P 1+ G)I*:XHPH)ZOGKX M@R9-[2==8Q<4755[83^)"XI@KY-=4/9A+YU=3UH8FB1R>T1!=#<3ETRMXXE+ MHST3EQ;Y2I\G&(ZE09P9U*S/#/9>B[].241_Q=+;+[R:+:Z&G'5C-5F'ZA-G M0K2Q:A/3&*FFK8TU1]-'ZI"8)AU6REV_)K#>#7N-5-[)YDRGV@#\]E>O;M6R MAW2BJ9KN&!/5&ID3HIA#8VR.-$-7E"[&S__"S 86!E^-HFN*JDD?P^#^YAN- M9M*' ,XF&+_Q2>!C/%SH( OL3IH2E_U.QIZ/];E)*-U' M) N141)X9S5.LK9KYCB!!J"(X%)X5BZ_OKZSQA6C6B< .8PFL\>KOZ%J2Y8 M*X071OQ/-[S6FSR2R.5)2PZ)IY)7G";[)"\B>$_'44JB)TG365ER$0[J1M'J MX,#;V5PQ^SF0?D_])VG41=#()RWH11(?AYBXA^T!V<%*]KC6,&Z'C5/E9!RII84%4I@067)>I^%X4C ^>KY?&)]H4HTQW7K\;] Z M68*UA-V!BA3' K*R-$X3R<._AG%A_,!78_IW"D(%E#O],0?U);-T=A A$^JQ M_,D(#"?03[[/?\%/8YHD^*L7,*.*VWU<+B[OIO0JMO,Q=<(9771Y80&P[($R M.62J;R#]5?WCJI49]\#*'$BOUQY28BU!B#0C/[Q9.F/X0_1MOH-'N$^'=-@H3HLD'@TR,MNEZ]87%F4&RT._QEYB4)I8+'BY>+ACGEEV>E)D!-664-]LIBYFPDY:RPG7$(G$2/1[/M(L/$D,P:S%RY* M8S!ZZ#E8!@3&6L1;@C%QD*RE>+[1HIL;&/F4RQ6LGBEVPH3#F *G$6?J43#] M.1?!MF^8Q 6Q32/'BREO],8.5Q9];!7T:OZ^R6K,T M2 J7#+!W%#(><5.'$S.\(9WC?M9>S_BFJM--XGQAQ? MD T_9P?$AGW%Q>M&6ZC/X=6=6DW'0G@XF8CBQ7(%-LI"1"X+MSFBT/= J/#N M85P^($H797IH9FVQ)PJ0S"-_?)O3"R.7G%J06/*#-3$51E=WL??C!F@@F59, MA152X,W/4*[ W^#8!=UEE$+YW>$32"G59++MC_"!YW*K)C/90+*CY>4_@='% M-09\!P%:1WERB@N'W,M0(;G,[>,.;B>.+$4TMO]M7= M:"N]+:I6UPK\K?R=27U6FRHE$6'H4*[N]$$U:TL"D/FX8Q0=C8YAG>08V.9]4!V27!PC;TL,.A.T.Q.QL<2C M,WG%#V^RBN=%>V]91LK-X:">! XX+'I03=C<'YW#DQQ#!S&\Z1@Y.D%?[H+, M%5FXL87WQ=7-JXHHG._ 7HY8.+\U#K\2MW\QJUA9<\K6D78!C]:!>PVA$\ M3F?8V>4_Z+4NN4PDDAU7@LM,T9YEHT 6K0-$ZP#1.N @K0/.KO:\7H!?8!'^ MO]@OU+UA%?BOL274/64_O\M=VLS'<8JZ_)/F96>TL10L)XE4;EH@51H6-(3' MSCG2/4UAK\_2,0Z5HY.A[/,"8W]D7L%=+HB+C!S#O+K3+%VV[>J$\N>@6Q1Y MB"*/JD_D"XT8.6]DD_9B)54FR55 )OQSN<_$?AUW6%=W0WN@]&KFX:'KV$]* M7;_QF/)>HFG[<7O$36NR0@^L;Y8S/QLTARCQ%$8B1Y8\4JINR3;0>F%EZON( M6_5YXC9N1"1-1>[HZD[7![IU>=WY3TI'.5[V$ZW;#]PCSME3M.(U^P-.I7/? MIHN,!<8I<=FY64"Z0>(\]B&_.8J!?GGH/IV@S"EA1UFY,[68RE9JN01;\7V> M4WXQUN+ZGC6G,10Y)M!EAN3TKH?D3!P] M9]NR9E1]8(>P>)]MY7:.<78/O-4=L:?4OD'#Z!T-KYD6*!9[8#][QF+[=OM* M5I6J-6JWUJ*/[5!-TP[@!FR2;746"CJC;SY8KD7%+-3O<^Y$!4[V5+\8G]1, M63&K[@2A?H7Z[9KZ+1%\4_4[NKJSE<'HV5V&#ZY^=TAJ?G[;SR.T+CW&5O?M M-MK)"HKRU3?O+[%H'9$ULMFQ@4VEA_!Q&]B8]H8&-@/I?1@M2L/EQ6&S'AI9 M(R-:LCA@!_#?)PEGVRXU*LDKS7D7/Z\,,5)40>\)KGT$%?OG?_CF.,#4G2!F M*5=W$^SR40LR&6 "5!HPTBC7@!/X&X DQK9QY38@K#&(O-JF)8=YJ;B<56SA MLGF3E>S1K R]._7@Z_GF,4]U)UP5E"# R^R+^OJ4CL0^R6\1[ @6,YZC2DI8(M:-4E(PU:KH0K;[^<+%(,#'D=Q^F,_VU- M59Q5Z5#<3=I@BUGD(%YB%+O49 M+9.\35).S[M3;U[;+&KJ1$V=J*D[;DV=W=-2LJ\@4CYQD?)N2:0T2;)J%2W] M@-NNGK'CD')O8':24<$G];/\Z<7?;R;88L9#A,#E >\[Z^<5'JH"<2-@NM6# M9+-_:EW3L*72*Z,U$[RPJDMV*^+T/:#T0X;1/]?TJK-T;*5D5]VO+Z2;YEW1 MS X>T, F2S7CAU^L=!XY44"G?Y*S)6:P.D@K)EQ!!W:U5NK%Q>5S8P\LUAS; M]R94NF9>H59R@,]'[J]SYM73\CZ^SSI:SA&#LT7J77N(JP5)6V#4P(6VTIKS M9IM/LM(U[:3'&%[=60/-K'C2]Y?AN^:F/X^VNRNIU^'=ZA3>1UOP?BDV>B&/ M'T)LZH?C$ Z4"MY3:=Q)*SS'VO\42%MK>MA@IMH#O+'WS!#?_8Q#A>4VUW0_ MZ8@MWDLYWDF+NP%18!-<((I-%[2+,[J!"SP7.YL_>=0_5$GE.9"T?GR2?IOA M9BU!:U=W->Z4@]9/"D(X@6S;2@CZ=D+H: I6+];I8Y[5:S;E! -8/.TO#XRS MN6?1'OWW565+K_-BV ?/KZGGA#_" !.:*$\?BK^%"?'+G^.DYS_"Y/]1>*T3 MW@=PXAVK'Q?MT8=8V3:HVK=%>W0<_Q)$Q?KU PHB/GH:TX32;,_2RC2X(A6+ MYNJ4C](K+4+4S^UT30%N=)9B/#(RR&3,W^5#%TBS!? ARZ!A.2S/RS)D M8_F6CH^$<>/]N)EZ+NBI6Z0*'.R'PR0R@):&+:VC=/ODJ8G#X1%3$_]KEZ1$ MED!:/QM:7L;K D\(8B*UC'5;& M0(Q=FYKJQ!J.)K YVQAIVGAD&X8U,C1W,IYL\X=O22BM^,47NH"IKM=P/UC^ MRU\X9W;+T(7AJ)_II:6A"Y7YNF+P@D@2%4FB74\2[>N\@86094,&F*05\Q?J MYB^P8@P)JS'8K^CADIB+B_T*AKG$%-LI(JQ Y)VYP8F1#&WT<5650Y6@O_L[ M!6/B0P!X2UEKIL_H0?LV)4%6S5,X6_8K31]B0'8XDDV[I\MAB'@VE@^USS]]4+GOEG]_X M]<(]\@<;DWQHC_P(:T!'NJSIU?D9I_#(7X#?_>R]ZV8OO>LC5C(UJK+!R>\& M3?(TMHS*>'Y%P5XO.%0/^$X<3M11K*VC6-:+':ZC&-E7=UJKA12PR$U62K&: MM7>4:@JU(GB[5DUA*UA-8:^IINA.>4)]+A #ID4F',4T> M*0T:E]6K2U6&2DZU\\@?W\*>,0T,Z/[SY!O;!+=RWY Y2M;/DU\I2-YW) J M8(.\#N)C^$BCC][,2[:.G"U5%MKJU9V"[(5OK,H!K"XY_='^FL^+H]4<0<-F M>]7 4WXJ7@@!][UEA#K\E?CI&%\J4?96=N2\6 :_A!4=@6W11?VIO#/8,H M;Q#E#0L,PU(2?U-8$M#"7VQ+0QZ:75@6T MUH* %B;TLV>^X^J][ E,G;)K5T(HM?9/'W/ &_$UG\=D^3UK^"3/G$9P]8^Y A;'>/1A6AP^<9*+\Z81A,4[>]R94NF;-2EII=-DK4F[6]Z$RSZ]*JY5+ M^*8AX=]H--O>8,9268.9465>KY@:WR+&ZT?9G@KC*L/X<"/&S]Y>*T340X@^ M8.S?<:"DE^Z2:R.JD#5WKRJ'^H(L5SH.<3B+>W&6[64K-Q==>68+MTLZS3@FTK M(9C;":&C.0>]6$"Y.V,XJ!EEVW';O,$1+6#DX6!D=-4\OV2F.*(1WH!BAHPI ME)JX8K?M\ 9''+'T*&,WIK@<4UPD2>U(U4;W_^EA/B@V+#8L-BPV+#8L--]^PZ#/6H,^8OG)]+/V+VV6M MJ;8VOS)'5W>B.=EY-">KS[O43I<"_$>84,F6V(1U]=66=.S5^\Q;+W;\,$XC M^GGR)W5\$L?>!.YN[%8S@]M?4DWCD6/9QGBRFNC[VG'26399G3598V/B(SJ%"Q4($NE#X(0S*EU_#&,, M(*X)6*SO%;=U/QU,->9P<);@X&5P\!$.F*?//O;8[/H)1GQ@@4!RTBBB@?,D M)7 +C7T.!^+^.XT3UI24I1 '-&&5 R!3,:W_GGA!S!>FL#0"CB7<\R]X<'H* MRX*PIO% >KM(5DZFF/*$"]:F+2\7;$B/2Z4$I&'5AE:IVHCAN/#3*A&O$N[[ M*)R]#AWO#0-,PNL"_J#)Y\DW\N-UDD3>.&4Z\%OXA> 33!!4@[3 M2/J=(->-TQA8(P:J:Z5\84FN<+&"0F5-28)NG$%) I\]Q)B8E.1LN%6^C(F/ MQ4%+[1J;\7M1JW".I0J&,C"837CII0J]V:PQ4,Q>;=8012!B$5$8<\#+TC>F MSW8KC;DPT+1>,]2'41G7K)MUF,(:[FZYJN=3L2.JG)Y;Y21JY@0UM5XSMV+7 MJ=H&P^[85H9XWX$,KOYG5O_*O0H LAG&2-0IXS.._NFS@[EQ/#;_2UOD[6/&0:^L!&,9^DM9OS4E_XZ\RK.UV7#;N:]EFQY1HR MVE[3L5I*MA;,<;;,8>C'8PX+; Q-UFO2O@5S=(F !',4S<*.QQQ#T!R&K)N" M.01S]((Y]"-JCM'5G6K)HYK"_9,P1TOE.IS>E1-?HMB*MUX"KW)VH)'W.R9Y M=*4J1*QQX#7.WI&P/1%J3#$'!5.+EG)EUO. U@P\M9JQ>^KC.1E(^JK6^.QX MOS*PKF8@Q9NSC:K*PT;+ZMDSJ[MG6YTY-36SU+71CM;(OG35S&(Q%$S5EDWU MO,SY,R>YYV2#'DZ &>K5W6A8)20AP+I-30T%F-TM ::! !O)QN@,KUS:J,OF M)J]RB$O6)'5Y!O.V[%DT1O>Z;)>=JD]Q*W8=*[;-ENXOV@[LU_:!36D9QQ=7QK*A!S-OL21JS6N@TICVW^9,VL)D/MY[K8.=&V+TZ-LZ+40_EKCTRSH_8< MMX)>NTRO[3I[CTRE./!#'H[4=6ETD(XEDI#W,.[U2(G2@6+ZI@JJK-C<2H?QN M$U,S.TO?M6R@/;+2KNYTK4I7(M>HLR35C**T8\DG#$2;NA!0/:.FA@)JU]*- M]NC*N+H;&1U)AA2Y1"*7Z- 6XS%#FZ;9K="FB*2W3VX5D_*$Y-:Q2+H@MZ/; MFTD)R&W6+W$2>D,@3.KJ[\[GQORI7V2WZ/3L5K18QZ2/Y M2ENG24MIR6DJZ+'+]-BNH[5]*E3;]+AVBA1%(L_)_;?MDZO6DB.W%XDZW366 M2]U-<9IV\[ZF.^=7G&-KKF:'/R/1L7,*X/.;=EGZU9UFRYI635+=75@T0M2) M/3J"U02KE5C-K)B2AV,U VQ(2U:-YUQF!*L)5NO.J3NKUV4H=I-1]>@?[?2DILVHYF1H&N;JQ.!L=CF\!RNQ&H\NW_ZZY>T-J:U.QJHU M4@W3H,0B9#)VW/'(U0'/ECV\ZN@(8_22DN )AYK'Z?C?U$FD),R#S0GY@25M ML]1/O#EPP[_3R(M=CZD,$]%:"$X\Q\Q(T7$1=7,RE"8UF M\';V]#P*'[PX&V!=>A$..'\/?UE,.ZY,.98J XYE]GA^!IQQ'N'#)"B?8/%& MV&6CT>?FZK3P-93\[L>_6V-P+8>5'L"%9.^\;2-]ET9V'Z8 M?=N;]RT#0N(Y4)3W0/VG!79K)U@?';?J46 T5*[NS('2(FXK$^P/LV\5]UV] M[*W#+8J26K2 +!B3&+.M^;#Y7$H@(D'@^A*=3/@R[(L1?,0$ S[[1$DDD?G< M][@@F4FQ!J@[K@ _?PP&*+#.(9-*UXX\7&/4X$,;Q4RG.=)IE:\ !?B/%5O!8(!01'E-'2^*D=A,TC?]S@S!^R M#;REV7]!'0;WL%N>B5<+$N/JSK(&U3AW 9+=R71*@R7,KT(2@,OE)L 2# RP M%R0WI?F3C''@RZ#@,Y!/-HVTP#0S7C+!7I..XX0 1(!A<0L^90]E/)U9<;AN MF$;2[P1MF7$:@\J/XUW9=(M6V(-)U=9(?1?964:Z"4@?#:IM'=I@X.')3F5= MW1G*0.L@=]=CNFWN;@HOL/FUT:":,U!A_6VDWU/&7[YE=?+VLZOU@%9:+99X MNE*!*M>#!:,2_/X:?!U($^H"D?EP0)*D21@]\5< U)ZCQ;3=>/]/,)P#Q_,] MPM-=WO/-?,WWLO1P+1V/-B23[<"/1]LG7D?4&EM[/0-F7/( /!.F@#7X/(QB M&8G!3]'E(X5>,UVZTOP-YB^6 M)O:"4_)-3XG+VN$XX7W &N+@.,V.D25KN+KQ'R1_ C^[*3]]IDDRJF".P.&KN$:O6ALNGM,QK]2[:Y;"%80*7S,/8PP=N(XJ*\H&^>O3<9 HLQ))M M2]_*W,O*XBMD#-M-D_5?*0574"Z!0#TZHZLF[$DU5J!3^G=:1'/FY)[>C,%& M^GY#)K#96^(_DJ?XZI=ET05RJPS U;.O/>%DR*=V8L$-@?(D9^V1PG Q/R&$0CD1[1I^01"'QLZIE7K'^W9'.HKC.0V( MSP0$XT=N%Y=L.!"C"1IBWI*WD'*?&!/H$9V'$:JLDGAZPN>S6BPI+(NDLI]: MFI,G!G00760^CT(PNU'2586)5%7L.T9_C*Y'?]0]HS]?Z3VVRON301^$^:8@ MT$A;C;)02]$-H J%JM0P 'Z6HHXL8BOCD3$A$VTU")2]32I>MTC.9*3:CJYJ[GAB=CP25.ARSB",T&,.1JZ[E]RY3*T" M*V9/HW9.LSM\G7WP9NK1B?3N!W529B5\GDP\AT8R6,+ X_B-XONP^W&8)MR<\('0 M2&[)@%T UU>'%M9#- _9#>VO('N0N:O=[(*+O]_C+8Y?$P +0% W->"244(\ M4M_'_\)+*(G@"H +N12LKG#.:!-_OP<3$&^(^#-Q075Z<1(Q,P.(*\:5F'U6 MOCVX(7MQDI\%#NJ!O9/ Y1]%85*&2[ZAKE\T/B U988>=TJ0[$:U\&QP><_% M/7L:>0\.A]!#TQ.E.()Q2@!X8TH#B?H>0+1 (M(P_<$PYRXNZAQ]^ CO'<-) M@=_G*=+3F":/N%JF"=@7P\)YQ%9>CD]D.\5+4<7CGWVAX'Y$Y;.8UNM"8:5(CUO55,=T]2LS.F4&Z%N/CIQH1 MN:??*(]Y@K2(F%TQ"0&'C_%M X;-]K&4Z@+@\LD\IK?Y#Z]<+Y[[Y.G6"]BA MV9=>98ME-Q>TUE<+?M!6Y1\O#/F!PHWYK-XH>W/V\8!]M)*-QC\SE('!KAOU M'RL#=>UGFY95M8$R6O_53Z_A;XC>FW3UROO4.]]L]Q],M='KG:H??YV8+F M*RC\W0"S(_'TH5+@VD4+(\H<0.N[C#([42.:G1\E?@H9<, M7K0:Q: 8$D< M36LY1\;5G6W)>DU!=>][O K..5_.,4_/.>;5G:HHLF564VL%ZPC6Z2SK;)FE M>@S6L; =K2$K5K4V0;".8)W.LLZ6 >_'8)TALHXEJV:7#+;S\G#44\J[- KG M5(QQW, >E:'RQVD%HG2^F+3=GED5JN#!:6=$Z4=.NZW M69090I2=.X&=/CQF8_,AV3:J?0%Z[Z;<>?+X20GF&_; D"*.Z<.,!SJW\$6S MPY^3O#A]3-#&F*"FR9KU['!Z%X>Q-8X6"D:\2$8\?8016UNH&JANY=FJ6S"B M8,3NG+H9(YX^EFEC+-,8R:K65C!3,*)@Q Z)[G#V[9ZP4MC5LYZ\.=R62=#H_/V=CM9*>N-:P#-&\MY MM55-?:>:H:)4.M6(+BM]:ES2J\V*+BO+;-6_9B!B$=%E1719$5U6#G:#NQ;= M5;H@FWH#,]%=15"3Z*ZR_Z&S(:+7'\,X?LD[@"XND:+GBMAANSN\A'QKT7.E MP1'/*)ZPK>?*Y[Q;.9>Y*'$;Q@N&B@IJ2I,5LSINL?=9EH(SSIY4$G2;RBVQX4]+:5W>J+BLU=9*[\T;WG 2"GLKT M=$11JRI 3R-YJ#Y'U@IZZC8]57HG'9">,/HUE'6UZLD4]'0N]%1IE71 >M+ M%%1E:U@M1SX)/5U@$Y$/I#I3P[FBSJHP6; M=>?4K78,:8/-#&0S36FKT;5@,\%F'3AUJ_U VF S\^K.EO76FGP+-A-LUH%3 MM]KMHPTVL[C_M+6Y#:*9AVCF<<8=,GJTU>5F'BMM/'ASCYWZ=>32YF,8W'_T M'JB+S8.22K>.>$V[#G58:=>QL8?(Z1P[/ASPQL<32H0=42*)A,7+7!+JBBQA MC2*+ KZE#IV-:91]I+*/-.F11A2^#$+8]\/'4C$: _?&<_>FA\E0'=CZ^H\O MHRT(;E87G39.UU6B#R9NX\8 _2H^+OHZ8).'':NW&]!-OX"1*P0)=$$.D,LK MS5ZC2$51MB@H%@7%EU "8VXI*/Z"5111\O3%)T'R.G#?_9UZ\QF(\S]HTMAW M,>*#LZUSG! D>.1\>61+:7&K/(+=>A5='JE=XI'S,H5$P=B>?+ E)Z)-/M!P M:*PNVV9;V1$=BAH)FBK1U)8$@%9I2F4T-=+;FM$CBC/$=-AVN&!+?'YW+M@T M.W&HB3&P9T])6T+0FRFI2C$ZAIN[U-7C A.8/R[<KY M#FA3&7S,DU53,-/%A!21^"4X[@ <5ZEX/"#'F3C/:2@/1_T8-=IB"EB+B5"' M2N0ZQ1;K(:R:(F5A_[%)^#LRN1>DK%YL*1DH@["!F3OS,/;P@=N(^O#D UTD M[+Q83IW*TGV4Q5?(&'::)NN_4@FA'U\8LNE'JKF<&%7^=UH0WIS_+&=2><%-&8"K9U][PLGD8.*>BS20N2&O#KP%IJ01/@5[ M(IW9BS2-4.'\Y!*KF6-16'&-L6./1Q!Z.%$)4QR24NO\[A+L#RT\+)Q(. M%@3B@5L#N:M#XPJE,SWC3=S)4'$TUQF.87W+(A/=F8Q4V]%5S1U/S*N&R8AO MO9C1\"'4YE(RI? _G#J# MN8>Q]T.:A6S("L4A*^MR%"\F(U%,5>O;9L54M;[;/&*1T^:_GMWH,#%5;2UH M+G.JFHL61A1+8KI:%V14;V FIJL):NKY=#4 W(E.G%U"1;Z^V&$O:QZ.P3GU MYLJ'X-^41W8^A3YN610]7$Q"MU5I*+GLK,RDZOLHG*'S%-?\EY=,WZ0Q')!& M'P+'3Q$PF(T!_^]^(S\:1_&&;"[(2*UVL.]]/I;@G//EG$KKS.-SSHAE\>KF ML\/?@G,$YQR/<[84VAV#<[#WNJ+(0^O93;H$ZPC6.1[K;*F_.P+KZ-AF7K'D M8:>FXIZ1>V/-5(\_WDB?B#/U@IH+FBBC*K'(EM*\8["(RFXTFMU6!\@.I?L* M4BN1VI:*O6.0FL9)3:LVU1>D=DZDMJ4L[ABDIE_=V99LM-8^6I!:-TEM2]W< M,4C- %(S9%VKSD@]^_+DTYF8^EOI2^1A^NM^!N:%U)4.M]24'8,_L/!%E17E M#!U_@M1*I+:EF.H8I(9=MFW9KAD(*TCMG$CM](% '0.!FJSKS];Z@M0Z36JG MCYSI.);8EJWG][\1/LS=J>3KE-)$^D03X@L/Y@;^.'U\3+?9V&[]V2D9XJK? M:4H[?3C)P.YV,M"4H+2SIK331V4,]>IN)*LC$90Y;TH[?5#&T' W,CH$J6= MO??R$8$/!A@LV[(#7#R=M:99L/_\"(=A0 ML&%W3MW()#X]&]J\.;JJB>;H@@TOE U/'YDP%>R8KLK*L*UX:V\ZIF<;S?JZ MMMF:9I<7'+C7^EDWAE=WHO_[ M>?1_/V%G]?JF=A\2.I.T@?2)!$!1.";E'S^--'7X*I;>>K&3QC':'-@Q_75 M_*?8B_&8[[V !(Y'?#RPR[B2/?,GC5,_88]\GE,.TW@9#J> %OQUDM )#B[ M>(&G-&L)#R)0YG/'@C"! !#YG-* M(MP[]6/Z.,4N]ZQ1+.SZOU,2@;CPGP!7\S!*)'CM>[#P)%6Y^6^V%K[_=0#R MVZ]YY/\6+?>?X!59B_VWU*&S,8TD764=]K5!%>6[B;JAP#"%WN1)6K\;G".1+#'Y(YA"\6U^CAEYDO,=9W]Z]'Q_ M]6\.\G+EP;H_41=K[J3>13^NV:#\Q!5'$BA*CR8X5=9/@SN0P!R_M=,@ 1L M/LD#4YOP>TPEH+M9C!^'+-/*"6=S$C'-BI]X ?#+_9,L$1];7M]/&642W]^$ MZ(S@LQ;3"CC'_@6:]\-WP!2B-B5 M&X_OS>: /L:C<>I,2SL=2&_X/A9 PQT6^RAVQMG2I;$3>6.^%-/TZNM!CI4_ M\8OO^1<+U$RX5"@T@HSC41XI !G^B\>:A3%*"S2K-VD)'*KB^?!BIM(0W26^ MQEV^^^' Z>\I&!"SF#B2>9Y=C(,0?,P)EM%"!E(_T+)$2 -W8-.!%ZB=.496?*!B7RF MP]&%\> E0'Z@S)E+!$@"-X<=<^"I##VO'3 E48[Z3UPB90H?7P,L#%\!"S/% M-_@>7R&GS?5$/&#FEH\K/A:4P@@I=GSBS0">3Q*3&@ECGK&?2TV@O72.I@-[ M9 .;P(-@[?H +J"X<4S_3G$Q]!8EC"$=+W+2&7P!MASOK]WU[FKWST S#QY] M[+@N!Z)%Q@Z#7&RB3//=PF;W89<@Y1F+34B,SX#.#(H(P)^Q. [SM-4/&&*/[P7/+$ MA$T)_ N0\P5A'Z" TAFM@)R9VPO8LJ/")9Z"*)B&C!38C15>Z\"%(L;S,?& M+RD0 4#RV$7%BZ>T0&L9+0P-4:Z0\&E\)TW8=8;M/DW@N/]!F.>MG&>\E;/, M'DWQZP'W O&K4!*%OG3]YH\W+^$E65ELWR;:*EQBHR_@R$(0/3)F&$F0!D).V:J/0+!Z8&J MPNTC =(5\J-E/BJVSRZ..-(L@"L5K((F#=\*X&&< E(!H5R1 K6&#Y3;3Q_0 ML170A*$G0;Y/\L,6Z&5V-FR8W3UAS7QXFHMZ#:^EG.5I **-XF](56C!L(%J M-RY (HC9Z0HLWQ /[WQ@6GCWH+(!H6]>OWT)EO@D>22,(,!R8GN(4D\[G "2P'CSVB@F- M^0[A0;F@&1LR,1" 1!S#'W8NXK_\#2E"Z1C7/KLIP2/R+#%MT M!B^E:_SE);(Z7'95ME<\.;=4F3!Y !@MTRB\P4$TPN=$NO?#,8 4D <,_9TC MALZ\=+8BJG#+08X68&M<-0/F'V!R3:77G.%DZ5V*4V^YGR;V"&=*GT&-W;%2 M%!$W."F&+K^#44]V7>"NAYAA!HPH5/;N$K\$>,0XDYF,QR3$M#>!/2!Z\#L) MN4=%DBPD"$,BR.M,X( E4H(*;!@5R90],T,&13F&OA#*S;HQ=?"21\ 6(^R" MR@C HU%9@S&NVE-UKXU('*VN)) ^P=5!&W+G"1=9XQ!,-3RB"P(E,WCG2%F M$H)J*2@\,8X?,GF?R;YE$H*?0' G:"!*OQ,\-G=B!6'*T(L79F8Z9E+7 >C3 MLLJX#4SJN&+H/C]\(G2>+$RWI'9W8 )2B"HB)FXB^M2 G_(F(P MUW)[,KL\H1Z ]$?#D7Q&J(:R>1I9@7_BQF_:*/B/AE])W0) @PL)1<#^J@& M4L=-NL],9G/:7V'_TJC+./>Z^(A*C-.B!E@9JR!+2TT\F;K]4E:WI?IX?@'* M0C6HO%!Z,HONQQP?94C/Y32>AS/K/05N3/@04L3 #Z2M3'%R"?O([E5PE.^T MN/W%7([C#1>D*'L).CG8MQX(JF:V2'Z%BU=%*O(\"#QN?\'OA8\G5Q@5&[%X M'3[^./7@&IUMC##]@9Q2$FUXH\9@&+^NHP@0RZO'* 4HLF&2*"I^N4U3+2*,!W\.J?,S/GZLG%.%+ M&BI_#6F@F !N%,@MESU+%+NO0#Z&XW]-,&3MG)+NBH[*GI9D) MBGO%#:Z,MQ1<QW@"+)_\KLA0# E>1_6?/%,"A=YM"H?B">S\0)ZI0Y\A\W MP[? #_D@!I$ UP-V[ZBY',MXS7+OD:-"GXG=N>>'"9PLX >89/$=X/'\XL/@W7F)0Q4 M>'TH72,=N-GP.]-V(?4KY?[+1]3WS,TX#UDJ4"9MV'6"(WXA-M V14&(KBY M"YRZ_'JX%E"&"K#DB,,4S!>$P7JM?'E9 D,Q\+T#>SF[@'^]SO@(?)&Y"[?) M/A0:)0/K[Q0#3NC!9R&4)\D%PRPLF6>9W"MQ?UGLH)^/24?0&3[-W!N9R&0/ M3F&7-U4_F(?B-[.^0+935\8[(>%>"M@%DST+N;QLJ*"O'3T27ARE\_*%QEN] M*&4&X]+BWF+WV54DYH*6:2(6_,B \H1WE^JVT+\13FY\;[)TI Q>F56H#IE5 MZ!-0$U-^)5MWG(KW+?>%(D:\N/",9MXZKOG!1F>0+YO@XS1!P'(MPG7V)/4G M>('CL;G,L"V)>9:;$-RP4%[Y,.S9_MEZ]>,.NLFS:"@L[;?&QEMC[2R,/5KR MVC"?8'8G1#.#F2/LT>P##]UUM0S"K^M."D9%V:SC+MPQW-N_(XOAFP(6'YN% MJRZX,6%Q3GY%YV8I/.527TKG?DC0ALOB\SGU\;UE&^5[B],QRU_V'NBF?8*I MP?R[)-L@@"V3/P3/D'!W8>CCHKGQ"C>><"F>",=#[WI"60*.GSMQ_QNMM!O< ME;1L4J_8C"6;3V;9U-PH]$HB\=_>?68J>C_0PJ[8C7C9!H &F2F'<@4E#=YE M,Y=Y#UGP0^ "@AF,RXZ*TY]CATM7[O(^IXS*"/R-QSR]2Y/AB5YTPLO"H90V2>!=0-A+V( MA\QYQ-Q)@4/AE2[>)7P9$!7!90,?A?>X\.&8N28'Z\#I94P4ITSC(N'77*40 M%IDO*M-G^;WF''BDKJ-E=_FBM-LUS/#W0F@R)-UD>HO>\.B"F^N*:Z0,E;,DDHXM<:,S(3V-^;6+!,^77Y5ICV\(B:8Y'Z-1_1PH/R6F? N2VCN MK,0L&73EAA&CZL\59WR^.%?8V1F65&"\5@@1F"I4.4-$0EH,S< M_\#"L['O/2>7P^IN+L?_!?-[D:'\B9*X4*G?0 *Y'4C8;"@%5CM2G!KNZR5 MR6V-/,'2.3QF[TUX4!DC"/= OJ"]\H?9->8^3\5C5/]7P$0^2UV-E\*;+-0$ MS-6GH%F&/G[CBCSS7F,W@QST>/"49Q%^&! MY5ME%I2M=:L.5JXA&U>'1V^RJX>['*E=.M+&-?2W-RQ?9+&!\NDW?K40ELM9 M)LL;09(M)35I%%EV#2U>F$6F01]P2D.:2*1[PJ&"B4_+(>Z8 M\FM5%G,I;N2%<,<[$4K\4AX/SXLH$F6R%;(\1 ^YPLOK-6]W%0QY7=<-UO;> MZE9>\.L%&%"[O5%')Q,>+ 75*JI#C[^%9=BHQL!$6/# 6IZNAOY7-S-@8R<+ MLBTEW8QY3!+QAQ??1>!T$=O,B*#(47HEL'.;#*-#@F_-,Y\-K4) M'[Q:)2L4>:3C&PRK8JI0V07#61%5HL#@H3"XUE&RB"L]*QUU6T)2EAG; 6_; M1NR]38LZ!'XUG<%7IG%6U?I["G)*5]C]4E\D)+L2_*8/A]B'Y>^T<+!L3JF> MIY$SY6&/I0SM$AR17WADI+@4L,PP #^5,7>:9G<0 +(V&+U8)(+'!#U= (+0 MS2"O#:32V6+OQXXGTTUY:.BG/)D^4+><3.2-%'DC(Y$WTH&]G$_>2-,(>E8S MDWFW9+320*5\B<+&\]K(((X^_.8!A1 $V,D+'2^YT)QZ9G,]>BQB'Y(#,I$A:1A[_.):"AO& '3 G"^EPLRD'R#@#,PS60/O.LQ;R\%;?BK*!C MY?6YC);?.4 MA*_L+GR]M=_+;>GJ!G+;&SF!]X!9_B8/<0;WP']8$L5S@^6E0W(7MO.$U32\ MRC[".$H'N*2ABOEL0I,VH'0W>806+%AFFTXUR2\OF7)I8_,(&-='R61 MDV5%<%N[J':\!Y4198$)XLZPA#>)>-N,_ 4#Z6)>'<8[D63=-Q;%@V' W$\L[ZTH?"A2 M#\H5\@B21;*"7+HZKX;&Y*5(EUR.6:V6.%?JF&NR;ZJY"RQ/M-"X6<,))ESN M0V:'8$U1T0NF.+S+>CDDA/5JP1XG( T70=9%V0>K9LA)2,Z:7_!LTT+INJ58 M;4'9F1KG33,Z0"X-VWQ]JG+CHECP%!1=LZ$Q:X@41A@$P1&UIQ>R-,-$,2-XV.E"NNXDG@QT_$):YP03\/'< M7#+EIFR>OU8D!F&0O;!N\6Q>P#O/LAA[J0@Y \C" B&S$%[^G^*+K+[$!Q-1 MT@;*HC =DUZ6[5T.81Z#4W*>M&Y76_BO$)N%\8>5E7D6 M/M?".>5G[1C*B\,*F"NPR*HL%99QESK<)8,I5DGGSY>3^?6WQ=EK*\4>2>=%'.G24N#Z0W1759^24EIHNP M?);X*NO;R3=5&X,13ZT;&Y( MR!_@5A7<>ZPC BNHT5Y)OX6ARZK@\7BLCY6<]>D@_LU? )BO&6!.2>QE$;C6 M^-Q5#A95XYQ,^96G2.I<.'I+(EQ>T,J"3K+.'BC)@;@7=AUOUL.O-V6K+BMX M[E71<3TZ?EMKXI]6)*[?UW.-DO5V2%E5%F)T@DTF2E*4.$Z8!KQP(B$_N-U, M[_/V3-VU-[9?YK:R6YD%F!V0=2?B6;V+6%X8W9,@VV/_6.+-(CF3IU_F\N"T M'+%V6PLBB247\SL#UN@,9).;%UO@I=0/,WN1?WM-SBG'*%8'E9[DCE),7J_X M%99XKW)+*[OJ"L8L>K, 5T1>0F]N/81R_E#$>?OJ#[#"1VLNV[1?;+M%$ M.35VU3U8X!435^/,_U#8H4Q)8_E-MC[SM<93N(?XI.B 4O(J<*?R[N]@Q/. M76]<"J3**#2=LR3DAZ(O*[<"_:>L1GBC=Y.]?W77B[

*.4-6O($ MXZ)2JMAS3[VT7S#=),[KO3,N^D9^=-Y;N[SQC&(2W#A*\J7:A0EU47?+O&NJ MG#6H*CO=^?>*XM9Y1&_0.N&KEH)8C\'6'-.GD/D) M\G;!O%Z@E*E>72'.B]US X+Q3\9L7E#L4R10% D4MDB@Z,!>SB>!8J.P66KH M5>JM3X$1/-;8&DN3R(_BHH12)+OKX(&Y%X45&V+G6J:7EMISLP MORS@,CYY ME+A^+/4G1V,MB_17)K'BQ2-^Q8& M.\-_7O7&;1=4!RXOCD[WV"ZZZ/>S)7LV!I>ZWZBEH8&2L_[1K>Q7T*N#:'[CV20Z8 M \,P#K%7T]SIFWO,F-TZ\W;WV9]B$;'()2W2RTV+1<0BI^603$GMS56:VFQX M=3:T_57%&;QV7OLIO$??6%WH)UX]^6ZI>G)UCOT^0+,KC_8#+&^87ZD-")PG MV7SU?@BB:9=H=I1/-:# TO@3 :+>O7N=5:WQ#)\PA;7<^.5:P-@-I'\_* 'C MG#O0P3.4W5G"3&M#>C0!;S\@\_-A2>G\ /:B72UT+F 14DE()2&5^B>5MEB& MU?F.CD/I9+()/)TS&5<; "^[G-<><3?:4*0^@*#"4"T=OGSH"-_7J5.KFB9K MEOF/GU1+>748".!'#2&Q21SMOYGU3H(V5E]+Z1U$.J:I'!WE&SE^'XROPZN0 M6N2*UK0[;T8<41VRMY):32*E+UP5%1*N21D$NQ?%#Q MLO+*O<1+?[%D6@/K0#AJSWZY;!0!(QFCIN:G8*1C,Y(Q& E&ZC2*KG5]M+O! M)#CHV.A1!F;[Z!',TY(/Q%!E36N:JB68Z/CVG"W44*=1I.I#>60T#7P)3CJ^ M02R'-THYNZK&KZ&01T M18!D!;.&/CA^>M'1HK87BU9S*!O:.63?"\RN,JPY.#Y>!<,>W+%GR)IMB^R# M\T+JL(FW5K!I]S&J*I8\LIOZ/ 2S]@"U8 DW]9,(CNT^6E55ES6M:?Z&X-@> MH!9,8<&QYX?6:TO6-5&$>69(-0='S:T6B;@-$?1Y=6YHO-;[W48<1ZPAUA!K MB#7$&N>ZQB$CR-SFL3NN4C^Q8<"H4G$J7TS\#3IU!WNPAU:?ILI#?<^JT)Y: M[3W$DCILG):_*XXZ>5ON(8J D11SSQZ0@I&.QDC-"\4$(QT71=90<%''4:3O MF^ @F.A8CG=#5ALG%0L^$F:=0-$*(ZFR90A&ZCB6A%G7>11ILFD(/T/'D63M M&Z[O9;2O'S[*/VE,2>1,F8O2I0_4#^L2&JY(Z,I%%C M^7'H*CF!H54V,DS1A:?C2!HVKO@2;'3L:Z'015U'D6"BCF-(4^!.*'HK=AQ+ MHT'3LG+!1T?G(T49"C[J-I9&C9NO"SXZ+H9,71AU'4>1-CB4G.MB&YY^."A_ MHP&-B,_\D\2=>8$7)UBH\+!?K_#^>L]54Q[MV])#Q#B.AB6M<4<\$2L\=CA7 M-@4C=1Y+^K[CA 0C'0E%UT-%:5S3*3CH:.@Q]IA](YCG6%FNFFR)C/ZN8TD5 MR.'O!-\_3F-X*-ZOQKN_3G/[4".]1%BC)0PI(F^RXQ@R9=46 MPVXZCB1#L%'',71MRHK=H,V<8*%C(\@>#50QO["KZ%$MH80ZCB)ARW4=0\*6 MZP&2-,%&'<<0VG)Z@_"R8*&CVW+6X "CPCN;*:D/.^Z0_!8FQ)?"W?LX7UH/ M@1#?] \S5>P:8H!8X5EQ=SP^MUYILVKJPA,\,J6*(8:==X!\")YQ1:1*%L]P1'@;/2L@] M*_HU94O9,UNW&X*IQ8C;62'6:-R@_/EH[62@^ZRP:LJ:LF>:@F#7+B-V[TQB MP:Y=QNJ^7?($LW89K(6)UP:YGB%55EQ5;V,)GB%FS M<2*(X-?N8_5:EX>ZT3@[6+!JIY&JC0;F,7':Q5SP3ON_/R=3&DG7?AC'+R6/ M.<-E*:#[3?/J<:L47=8MTZ0W"R8Z7AZ5,A2F7(<1I A3KL/8T6RA@3J, M'J5).R3!/$?&CBH/AX)]NHL@TS8[-R3DTG-OQW021C1S/DH)^;%G XIS=*!K MLF;L.:911$:ZC%A5)!V<(58Q__;XP6G!KB+_5F!U/U>1;368>"58M0](-:TF M8R\$GW8?I4-9&S8M>1:\V@/$-A]]*]BU^UA5-7EH"S/X##%K"C/X#+%Z;!=1Y)@HXYCZ%IKX!$6_".2!P5V2O%/11&67,>1I'4N TI@ MJ#(0KG'6CV CP48"0RO9N/I0F'+=18\V. !Z1!9N0S3\09/E^O_#^(QKB;)S MP/CY0(?O."?J(Q'^.;/PC])XK,>!0T"G@,*+"E6W051"()Z[0-1D4_1Z/$>Q MV/S2=HY240A%(13WRY8WFL]7%P*QTTA55;-)-Y-#(U7(0R$/>R(/-5D;'G^( MBI")!T>LTK6J!"$4A5#LB5 R16WVP!JZY'#CQUT'NK6TN>,Z)>3H\(D;IF.? MMOL*L56Q5;'5?;;:K=WT"'!BJV*K?=GJ>FOAEX3 @O!?UWNX^R?\DW]E1J)[ M+^ 6E<*^5#:%UAIBQ[*1OB:A\_UF3&**!Y[-:1"S&?,2_8$_L[Z7?NK"IUX@ M)5,*&R<)G=$@B:5P4II)+[DD(1(9AP^4%0SCL\DTHE0B =B=W@]I!IN9QM+O M:4#Y55U79$E3-)T] 3]HTB.-X/D8%O#]\#&^+0RX[5!E\%\A!0"B3^8QO.5Z\=PG3[=>P$#!OO0J6RPC''->L6*9ERFS_3K:'8;+\VN]NR>]]R M-MP.=Q?38I%S6&1+!OK6%]N51VN<*PYH&QJ=R+4PK%6;WYAF^\0UVKL ]2/J M-0E4VKY.AW, RU=0\]N!LB/1],%A?.VB91'%W#H*4UC+C7?*ZMW5T=9QC*/] MULIQ6Y%-O8&9UH:4.$O("&IZ+C5=0G,J=FV%VR>[>LI21.,D\IR$HKF+G^"- M$JZF=/P9;5 M=!2'H&!!P=TYM26;(T'!@H+[2\%#V1H:7:3@2^C_\&XV]\,GFIGPTCR-G"F) MJ33W2?"<.6P]3.DRE#V' MPAWT31@G6$(0T0<:I(TOFQ>@#'HD\@WK4'.#NF.8"(KKTMG,?4T,07&"XO8Z MFZTU;:L*1B9>07O"9%[ &]WG0HU1T>J++@ECC2&M1*J8R=AQ%JFP:_;]PG3^2S!,.9KP$>_%/ M&E,2.5.F3EWZ0/UPCMU0+BP5U3*:^OM$$MVQ7;)#@:*.HTB5M<:6CT#2\9TP MRIZ]I44ZZFX@_HT&-"(^TZG$G7F!%R?HE7FH1 7/WH ;JL+*[CB2-)#:32=P M""0=/Y-Y))P*'4>2(5N-ZZ7$??64E1[5?*8+RM%L=OANL]X^E1Z-SG_B2XF@ MX'.GX'TJ/00%"PKNSJGWJ?00%"PHN#NGWJ?2XR@4+";XB*V>PU8WSY;(R-K MD07S,/;P2G<;49^Y3A>3"K#C>^E;VGQYHYJLU^GR M1(CRO]."V^?DGMZ,(TJ^WY );/:6^(_D*;[Z97F$A!?O:U)YQ,#B91 MN91SJ1/RJ1JW(#=IA$_!GDAG]B)-(SKY_ZY^\HA!+%5S+&HKCC$VK/%H8@]' M"B&J8Q)*W?\=7MU]8X,YPHGT!EZ(^U^R:Z+(?EFJR3[7N774KC)RFB\S#* M1L#0>TS(8,#'(31,'J+?:TJ">QJO#*?)AM+0#=B[B*DTNC&P#S"5QAXHYK[C M439]9BB6V*O8Z\7OU123?L0B8I$3+?+:VNSV6>,(Z^! B@//1CK)H^W- MN3JCL2,''M5REC!K9?!/7\>#O6%7,#$+K#&/] .]E1C(Z=1T/P#V@GF16(;. MJL>E%55V+G 2A"4(2Q!6%P#VXHPGS=6?...?_;I"[-S5<*_>!KLF#XL=BAV> MYPXO(8/[K\##\-77A"35WAU-#GJFB50]2I>R+5G71%5NQZM2AJ/!:>8LG>*P M+_:R:YZ9^"FD4I?.IBJ*;#5NDB3$TK'%DCTX3:\ (9:$6#J%.]V0==VH^,^% M0.H.@@;ZL=%S>EET7CZO-3-7TRB<7UKO#+F1")/1")U_I@*"3BBY=U^7#Y+G;I+;6E)?#S.[#N]8*6NLB* MPXG#B<.)P[7=Z[D;+5<_IU'N!I5AB\UTL&W20/JUKLNK7.R&-=VATE*U[/(6]:4M MPN^M;_'/Q5YX"C7\5&Q 6X$1)L_ #K#+;.D,+.&CO&]M8*]\#>YE+_!12IRI MY,!3+9_BVW2!V\66\CT^$@!KY,$OV'+V;UL']6."-0 "V M0K'8FID@8%(_06H#J,)[ LE)HX@&SA,L_T!16,2R-(\\$*1P&+;8(R7?:8#[ M@*_A'WZ-O,2+I](7)#L&=>1C*6^IGV]B6X@"1S8IS%\(*'T@E>AT%U6 MX;B\G'$/$HB'@JK06[E,)W #)?>PT3G0"^ZTNIVEW0RDCK-#J7=\?A(&:-$U M?N'.V-Z"6K,'YD$Z6^_;B_X47;C%7L5>^[570W2-%XN(14ZTB.@:+[K&[[;\ M679 %UWCF\-,=(T77>.;\T@_T"MZ,#<$V%[-O04$!BXHIF\V*'884=W>*1^(L>0/O57C0_!OS%U( RD3Z&/6Q;=Y/O<(-48R2.U M:?\=4:)]9"SI=N,>2:+)@FC;W%NI9.JR+IK)=UTJ&5KCXCXAE814ZJU4NC9D M4Q>=;#J,H-' %,WD>^SPJC_NFS_>2)^(,_6"FNOF3B3=W^ZH<#_3[#T+1GM: M[MM#+,'];,_&/@)'Q^0D[31M_P66=N>DT;X-0P2.CH6CH9!U'<>0\'25%E1A%^NXUA2AXW97^#HV#BR9=LZ3>-L@:7=L60V M;M8D<'1L',F*(<1=QY%DGE(CG;V#].N4TD3Z1!/B7YA[5)=M_833H\1M="7AJ*&8OB<.)PXG#B<)W8@T<440DS*98_D8I%S5_-A_HA6^;$]"/Q/>?I' RB>%) M]EYEH+U8&A>U5/*_6(=(YNJ3I6*LE;VI>)CRHTL)"O(!IQ^NG=*4HWHS!CQ]OR$3V.PM\1_)4WSURS)C 5>5 ;AZ]K4GG$P.QFC< 3Z#_D, MREL0/33"IV!/I#-[D8"J)__?U4\>,8BE:HY%;<4QQH8U'DWLX4@A1'5,0JG[ MO\.KNV]L<%@XD=[ "W'BX3]_(7=U:%PO]'*Y><.,XMOA0#ND(&0KWN(@3<_9 M032^"6,VXK$0!+]%81R#% DG7L)D!__#)W:F#LR@>][Y%E/T3J&'\LW4S/M5 M5H;I*B"OVQVF6U8\.,*0SRYDD_EPDF'-MO!O3*4==AHN/N@L0::3HRX9.$Y) M/64:X>9#,7IU8;8 \%,'$#"EQ'4 6IR'!&)<1@$U,_&*V>S' %M,<"EDPB3?M8'HP539=1/H]-. M*D6;;\G@RXTRAIN(/$HS &T$9B&#=&ZWYI"NI<"3@QH@O1B"O$J6)P4W '@* MO].%O?\ QN(LXX2:J=. &,KF^KJ[C_=]GAW<5=6YT1(XK2+E.YGSK2VT*)O^ M^[,Y'!@%,6;Z90L&V2SUGTU]H#;\HC[(H#);MH\ZQ9T%@$[*B0PY1G9EW1DI MACXP=OV"WC\>^PQ"@K#K^CNN>6,YNYE??P2R>BE]"$"V@%D.XHGQ(+#C@Q?G MH^[YI](W\H/&O3L[")+OE)T=#_:5@%%Z6JFRO*$8-Y0;1'&AIIFM/ERRU76@ M:;EU?<'LY++'9K9I>^OLP27K8K,1AP=;:'%\8O%&$+7W$9EQ.WVQ)O^25GRI M"0P>I[##LU2E87ER"^\)*N1UL"+L7P&]B" .$'SP%Q MU#O2^XT&H% X=%Z[,R_PXB1B#M73$]]]:6]D:6\+\EORB Q7R.\ 4K9*?JM4 MLKARQTGH?)?&;'>X-.R8N18S XHW$:PT/QXB@G,6"1AH$ZN/4%E.+ -BF[0R[O$J5LZB/B 4VK M:%L@9T'SNY,T!GW*WKF?S=+JP"/V:*"^V,VZ>+OS6]%S2.%03G@? +R -;62 MRH==T-G<#Y]@B1@T2D0"!^S5G]72,SDC9/MYC+R$WKCA(_OVQ/L!'Y$8R!YD M.,#++J\](8[G>\G33<%,4Z!:RI^TRI"]#T/W$7Z5/#B]%S&UANRPQ,.( 69> M.QF-K2P[Z)^'.[LN^.RZX"VN"Z<5^/]:HA@.<]PBO\D@Z>JE6_JN#N8*_9<7 M*9,]?V$)&OCT?V@4[OHJX)#/E35V]H,OM(H3!C'H.83!!#8/&[;+IP:0P<;3 M***!\R2!.@QBGRL5!!:_,S,63L=Q0@)4$NR)]D?WV /R 394JE!(QG@$;; )HRG[+3UX"H',0HNU";[;]W/+[^ MUG]ZLXY.)I@5 59<0GX4L215':(JVIEC%O<.RQKHRSK,5 :CQ5([W97QP9J- M>7'5X,-'C\6)G'AA%T&(?DOT['L87V9G@TW.TV@.1@5@%2&;43/[H" E'I: M2?/M#&%DF9SE4#7&(GNC6?:&)K(W.K"78V=OG$ 'U$\Z?L.XU8NY#/CJ_9 ^ M<69_5\/LJ/*0?WNGZ59+E;N94)CMD@?QUXO?J[G3JGO4TK0RZ%PL(A8YYT6V-*?97N.HKKYY:_CN4.W< %='?/2Y>+8;$%@_<(QF\"[%Z_LSY5G"3&N# M!>S*H_TX_QMVR6HR"[9A$Z_3UF^[>&>+8N[;#%-8RXTK!=U[\4@_T%OIQ7 Z M)=T/@+U +]'&]F\"@H+D3D]R%P@G05A-">L4(]Y/>N*,?VYWH93]V[?LU41@ MUQ8[8H=BA^>YPR,-KSCIA>.OP,/0U=>$)*72DCU:,Y];J[>Z(W:[\Y5J&[)B MB=&='6_1-AR=:)K *0Z[7V_*+00BQ%*_Q)(EJV;3(6Y"+!U?+)T&1T(L";%T M"D^[)BLC8_=>J4(@'1M!ZJ#!3,ESD47GY?2J/_&[- KG^PU+[.\,3A,N9V;3 MRYF8E'ID+&GJ8'02')U>\@@"V6D<]5"VAX*-.XXEU3[1U'#!QOT@$ N,_SUG MQP@N/AH7:X,32MI+B/ZPNM4+FUI^(SR1W4;0/WX:::KV2C@C!8ULT-^V(69R M=QQ)6N.[M&#B2Z*/:\;%P@7?702Q4O"3(*@E/SA[MS;JN!G.94=PYOA8CBH5@W$:W!S_O_;N]KFMI$<_5=8V./D]O;3 M5HMJ69Q0I(848VM__0'H)MFD*%M49(NRNVIK-I:H)AH-H(%N $^O.4#?VB3N M)N&M[I'F4[2(KZKRX5(J-("[GIR>G)Z-U58/75D:+[#1>*)8M$FB5"+1V3.#GG!*1/JTB./7*K[?-/KQ?8--D MOQ--RA6J>V6V8DSV4S5$_"[F4 8$%@2E%&+?\AS/+%1!6"3[8^Z&,*4_$Q8M M>(1-2%+TP#)$BT1?"8,XYYR )<+U:R1X(S6>KP(JG2,N+U -3/D]&0D$N)=. MOP3A]M*V\F;Q^\5_K-?]&)4LGHL&_O[2-"ZP*TE BY??B="D W[-Q%,$_>(N M!%->.F:[#$SWX]**_9B91/@A?)HR^BD11>/RAOJ -0#!XL[%5L"%[F8Y00LA>A5\X71; M_8YC)('W)ZQL"GPL4>IX)' \> #3X_!7&0K&(;B)#*6ARLY( *?,SMSWBI2P MW#2R!;PUQ1-&0 G"4 ^+NQ.RHR5%!+D ;V(K@.<,D9*N@= Y%[AAJ]04B&D" M,-&F+='3F>!#NAGZRG?VT.P^2,/F;5NL[Z.YM*95TWI8M'9T,W0]B!YD3X/H M9NBZ&?HFPS_)QMZZ&7I]GNEFZ+H9>GT=.8SEU0V$:S),-T/7(G<((O<,^:0% MJZY@[:,O%'!M3]/5G= UA9K"AE+X2+TP'L/Z5(<:%\$?> 4=!L:'T$>2=2OT M0V[N:;7;K;YNA=[TC.=.V^SI#@&ZY_#S,4N]5K_K:+/4[&7JV&97FR5MEIZ+ M63KJMH:#&M5DVB ]^@*9C[X\^[=%3^C(JWJZYQ_/C0_,G7I!1<"YD4@?;F_/ M8:_5:>^G1^^^BE4/<)6<@3G4:]3L-1IV6HZM>QDW?)60%BVT=TL.-L3IVRW'J;J,Z$G[L$]3^GE * M]1IM;D.&K9ZSGP-4O4J;:U)W3]VY]1K5<$A[0ZU(#5^DWC[UZ,F?D5Y-.5\8 M'_B"^<_LA'30L@8::*[AB^28=6_S]1(]]OEH:]#1>M3P17+T/4/3E^C(:O5Z M-UN?)'XM^6F GJ/OJNYYF?--QZIIF'8(^\A*U]:%HTY>H M:^F#G(8O4;OVS:)>HL=V"^'CO>B M$0)W),_-6]K] &$UCP\:"4M;1@T1J"VCMHS:,FK+J#$"M4UG)Z5%-3L90A7!,]VS$'QV4*B0,NXF7KNE B:,]A"F>\OC7 RB6$\(LTV[9\R M(#_\?:$E0.EM/7R9^K!2K*7B_#T(>-]:&":Y0)TNK. \C#WDZVF*;9:#*"%P MBO(K*;/M_"=L!,*;+-;_9*5;Z^,+H=7%$P>GR OUO]/,$YFS:WX\@J7Z=LPF M0.PI\V_8,GYQ4E0KT"F5@>6YKYWA9/)@:B;:# 9]@=MQBRWRS@?_[O_XM"&"]OURPGZM6L;U)B^UFL?D$I_V3?LAS2"->(HXD)Z[@6$\#V-"*DQC#A6LSZKQ4LQ&2<9WV%)F8O J:%78BCD"6+9H M>R[LS<" Q 4F3#D;N^!["2U*>2I&I+!X)K9G%Q@:,71,&'A>!K^=\R 67_F" MES[BN"(CXS (N"_1>2588C;!;H[BFH*9/O0.WE2EO].&[=<$"$KF@K0<-I1@ M25]:EF/:V2*FV,5W+2!A&+^TV@H@\T:_)73&?Q_M5GR)!,1*46LQ8W4[M'.2:MM,>P:KOUBP6M[)B[%C8 MG>ZSW+:R->$3LVR28">N(S83FV0^)OZHK/]$Q@T+9.*>L4G#;)<&US?ZN!5=U?Q("$5\OH"6ALTPKITXZ ME(BZ7'5&4?!X<,/C<2R@V1$TVW.YP-(.R92&F9'-U:*=.S2')XZ_\0!F)!AZ M-H9HW8L7$9UL[%\@KQ7:6(&V7"1SAT!=!Q))RQP^O$@6I"=>A.XW8T3DX&A M(@7U!6'I%FSH?3:WG4ORX0G7N1_&242QTO\PI&B4Q/!0')O[%"T#90O63?@^ ML(8ND,DI?"I2B18Q\7$]8&UA)0HN;VX)_V?"=&%@C=+T;7@? *W(]\OD #7PV]\,EAV' \D>+?P%8O!IH+;";P:JF-/F.OYWF)YG,GW%"26BR=[*E>OPW!\ M W\:'LS=BVC[0<6 YYP"]\D:NU*^2L.:AW?\(QQUF$Y,_OE^;>\_"X(2%DF3 MGF!FE38\=$&1SWQ0L44/LB%42:]ZG;KX&[T.%*/$T4W/AG(#[X9!#!L."2?0>7VLJ1 M&#&B@EOJO)39*%O=-K,Y.)U?'W_OW_7BDPE>((*GM6"WV<%K;P!>_J::E <+ M]L#L%K>S3KMP7+O)^2L^6$&5%Z_Z9/CHXVHH4!&$>$Z&A[D>WL30W(#(>1+- MP;N )46V2E&F+[+5+SL &_*WX/E:U;;T[E?6M.'ZBE2Y(NWH*](&T/+85Z1[ MV#NJL43?>W\FWAA<:MH'S]G<$]5S,:B\>X 'N.XL/ ME%+812(5)S/<@/Z#AT]@<5VQIC?G+MZ?&E+*A7 24G\?\ M-/W'SV,OGOML>>H%-!OZT<]R,&F!T>J4"T%1Y\37N4$RV\(HR3I4^6;YM4E? ME3)VQ7=]RQPZZ[^&[6OM=W<-:]EF>[#^IW<->_=WG7;O88AU-AIVBY3?QX&5 M;N@@]]1&W_OBX.58H&M!.HP5ARW"HTR7YMG]CY0M_:J*1_Y0O@A%/.A;1@ME2-KAE$T MA%R*IZBKYIY)U9QCM0:U@:,/J71.B_ S$.%VIVF%TX_9)[)Y>\M1$M,]Z2MY M2'_W+K-1=>OAMHGJMP96W58VNI?78P<33J_5M?;3;>U9N:#2,A@3+V"!NP/# M<, -C.UAJ]>KW[*@0=[54U^A3FM@6T^YQ_1>V?N6;G IW^C6G;+@6E;UB']3 MM@#9#"HXP7_P/Q/O._/%=E^ M4S,OZ$KD,V' D*4\-3Q#Z'_I**+*?O.E215<0R""=-)5D\6!K%T M:D0B%Y64P%R3".A:3$$XKJ=Y7I%(7,USM'E/#9ZZFU1_09)@R( M'53)TP^*B?I#->\=7_R&NWPVXI'\H=5:D[&;Y4*56B.()-V-;B=%EP5+H4 V M30 [.)8IO,AH;&; 9_.3*IB4R5-3BE%+>(UX8T0UGLU!6E34@ MO?V^FI$1]SV.N=E3MJ#%Y[>>N A8+Y>+\)H3?VZ\A91P4?6W2$O\%0VAPJ 1 MYMM-)I[K(8-!D&;8NPI?APTOQ-LDJZL5"K@,!$1KD0G3XW5.H@R/CL"SDWI3 M*E(6BB$/W J5C,(XB98N'AMAS9Y7*'^F*8+2H3#"\R\[9K]&G?6$1U28@"4N MY58PIE%OU=NU5]VNL>I]=5X[7W5;K6>C_A";+/Q 77C\55XB&9>+,^\L6BF7 MWVVWK%]1I[=%@R)[94D=M;%')6^K@U"* WL5U9^'O"X_:$+>98DB MAV5"[DIT$<)F#Q6_:7O[4>/<@)IX= K&1GTTGC(\8L+H>\K]<5:VK/H&(%8A M;F) %D7I*(*+Y?H>&\^O&+BKBX$;0,O3*0:^T]20(\ZHNWMZCM@N[>M@#]AR MEA[\KO7Z[W<8[+O\%'[+(]=+#0FUO@K)8VG #K0+8]W9PM=;=0RZQ;91]YGJ MWD.8ZJ+(W+_HSA:+7N5W>.._O;A?&P?VBP:(2G7QV#FZ:>"0@R="/9*IO2HL M+C9Q;KI/\D]Y]<3&L$(@$=]9Y(4)"$D^E7GHXT%Z3,T5T6I$G&0S#CZ:EZ9QF]G9Y>OQ*V2("V+FN''"/V0D17G9,FS_1C4F^X& MV#=N\'2]6L8?R?B:Y_V#0%T2&62)_BPQ^!+>!&A _[J"3?BC;#@#N37V8FH? M1[/Z&"ZX8:=G!9LP$0\-X=M+MC N+EK&!7QC#-++L[,@2*BKPSR,Z/SF71C- M#*M]_/3,6-K@*!(S*FBN.J,6A*J\MEBS M^1S$$D<#0;Z$+<9(1=L2NN_%QC\2^!P/]#-QK*8XO>^MBBAE8-7NB M1 @N87NGD&15Y>E(&#\8S[(!UES:8W4&> M#P]", Y,>G2E"R./B[2D-)NC@/0%?@_0([%/\O[(=**YVE87!G^-+@H$;9>8 M)0>TO4VB4#Q/MS#H#OZ+-S[N_)2H#<3%XL1Y7HRX3436LO%W'L4<-D>\BG(I MG,.&^*M>\QMJB(([KKAHXO+&BGHDAI6+TQXH\M/"7=!46)ZUQ."3N'! M E[DXP(+88"])V!%DE)"4'3+*7(963(?B"[^Y)TG3 (HC),1XM]1FEE^'[ER MI5DH06K"N?E&X1PVFJ3#"YC/#8MR8)X86T=GDQN%441-RLC/GW((?&12UEQ< M8:Z*Q]*(P+"9QKNJCX'Q 29?H5F(8W%/)@.#-"20W*13CJKE _+RH"UUQ>2S M. 8=,#!CNISCO8:(2:SV3ZGH*>.GA)=6T%"RT.($D0S2W]R$B3]68E%DH@B. M\[!(R#4ZHF0M5RAM&:,$D9IPI+M_6SG]0J_N!;@&PA96QE'EG,QBZVZV07?3 M\MT\(5@%@42%I'A=Z7M*Z3"B\RD>6R71W1DDQ&B%H!5RE 0!]:IBI9/WN,R1 M#3KDM9"]<]$'UE_>2\HU\X*UE'2VR,E81\>7*:^R-D41I31=9@3\6IC%7&Y< M-:Q20<;*%XL;,PO6OW93619KK,QZ\5E_%_'9T-+QF8[/'C(^ZYA$>!3Z<0K^ MY?(QAF.-<7NJJ7_[G?E)=O2;AY&-G\[Z& &8>(8NB5V8LKWP*L8UYMG4\5M M]WSJ\8GQ]I:["6T7GS#QG4>BZ2]]EQ_ R>]:L,6 ;1=<0RNN]DU/,]7PPS'' MTVXUZ,K?.\[9[*ILGF=L-HX01XR#ER3"O\\):(?EL&.K>\1?&:1D])JK/-?E M;;H5GHD6 -;0Z1A'ZJ>O7LG"%*(Z&*?_E-N/BX"4PO6D0\2(C@Y-XS5E]B5S M:MD.X2G/9*8ECBSKLU%X>#!Y>4*/X[9J$?=G=L(IR&QMREF,MO).]_)+S$TS M,,*!* D-$5Y=$$J+F+%ZKBOO0&@#'ZDW%$!9$J>W+X(H&<_?X'4*FK<(O<*9 MMU 6L+!JQ'2\]N'CEJ 98X%6W@)Y+'&,<'#\PX75!SGT1:-JE';Y?L(5G40, M=0O=*&_BY5=#5V_/_^LO ]OJ_PSO2WQY#X%3E!>-[5:^,W=@+T1<[J>&EM!@%= M:1X 1NE,R>A18 D_F*$RK+& DU=K%.B5&FC<:=6$8A+9:92)2D1V 34.ZY8B MQ21 T.5]0TE^W?/Y#-OCS[_,6XN#"-3U]^ M?_O9N/CX[M/G#V=?+CY]W/82?MAO[B6\N$PS?K"[^>XVS;=\7]'<$/H M]."YBH> 6^!UH0E73JO3%!V?)C?/)R>\')]YL^P&QLMQD4+T-UB$AWA)%&>' M=EEM2I[99AIG/G9.OYY*)S [J,3KG>N\4D6^RV4!'I6.* =G[+E99IFL@\.4 M]-PI'DN[%@J5)#$TP6:7D/9:^!1S>!O1=W M8=I^\\L)^'V";Z%36B\ ,?#&BMK=-(6Z!"H&RC>.+G2@RP?\*9G MT%PV, L*'*Y"'-Q,U<"0-UW7SDRZ\#3>@1B%4=/UK)AO K1C(&&W?U:G0!]9 M/^\HSRI-X\(;5_3TDSA60FFZ.YF(]Z89605G="4M*P,F4W^*X;H;>2/A:^+ M&9%;YUI9;:?ALF>;QM< =!7K=-%%)F1WY.Q;D=AZ52RD^2ILG]P4FBZIGT#0 M^"A*T' /492LOO#31R%>Z\%$QA ]BM5G"5AM$5_+X%VF!BN9P5+@U)1B*4O* MKI/"VH5SD#Y1DB0M(P2VWT6D'O#K<"&RB+,,Y!9V20 >Y;8SHP!^Z!(=R1S? M\K*;W3J 2Q(8']C2L'HTOZ'8\P*183;..T54S1B#[>]TVZ6,N-)@1&&,F+'" MFA25GG(8;Q="?>GL :.W]/1&/I1V62FKMY-A_&7%O'0KLNYER $PZ@469&,. M:$AK_3)GDPY$:=6\"/01/2CA(J[KP=?M2U)MW/6 M_]BZ=VCFF8+VY079GN:]\G1YVNJ*I9D"((=V SC[RM<0E M)I@)*H<0]UZ)21G2DP/^W(HKABV,FG\"A#J;(B MW/]E)NNK*094\<)B"6T7/TD4ND[;M"S[<.#BAL/M(/,TL4^,V$X=U,##PGE; M7,&Q(!O 6$>;HR7 MS!OC38I@T7/FRWTR@_O[+Z/H1!R18)R/PS'L5GZ:>ZR9PF%MCG#P4IYO7 MBIK2+>R51NJZC[GN8[ZQ\#SA7OS:(FB+H"W"YK.V+*ME]7M-M C/ 6:+[EQ* M;A-^EMYI;*74FP(^_1@O&RC+@WZKW1L\!,_J\.FIF;NJ*39;$!S+[-=%'6XP M,)O64ZVG3U)/K7:W97?J.A\:HZ\6D^FNL^QC%"Y ]WTR'^%/5'3S%V$17L#MNP MC(Y09<:7CDB>>T3BV*93=U<_[),#K=]:OY^/?F_G#NSZQ&$5W7?3.J!> MP^N '--XPR>,:A6_8IN/*QYX8:34_S0\;_PCU7DM>$3=^-*6'#]0N35L^(IU M3.,#?&-%(1!5NJ?5Z*%F/M+/8O6].CJL6,+&]3(.KAB=YI?O-M3 M&/=C0E R;P<^J-O,;#EV!IJBA/))3MT$TDVD@D MFM=1?<-9"VC!5_:VQ:J/781VZ!G6GWG@8O8JDM'8&UW+:Z#^Y3+ MPGH]J52R'&?/!31[X\(;:EHR3UN+2J;4JG#9YJ1P;UQ8]>J0"XYI[58 =E;= M(UAR5\C$^.0Q87^$SYS:9\&'N'2R_\U% &3-P[QK[V44@GOUGHWB%GYI M8F%9^HCHR@ DOTVGXTPZZUMP':VW'Z_<[0ZK:M]L#NG(#6 M'EM";57=).4E70'-VID^"V (3.*WZ03 ZFZLXE9)Q?\[%BH\./Y[JL!9&W+L M(>+)!F:B=Y-MB=<]!WW>)&=1Z_,3TV?;;MO]3M\"??YWI].UG-Z]6_'KY?%[ M=A-7*:KH%#Y+FTZ)O-B\@597]@S<=GNNT-TP6!W_Z2NKU=ZU5[US;=WNB/_> MZ6]\VW"?MNZ%/D5;X^W4U8'-R&KC]OOOKFWWG+Y0UY4=D_3L?1A<'W_!OF_P M&4@P'C9B*P8Z#4S55.YTLKN=\VI#[401W$@]:?"!'/S):Z9C-5XS]3ZZ7C/G MD3\Z1DEM]YSV+;^]=2SIY)XCFQ$=70%B7PNF,4^B& %A44&N).R?;GV^Q*/\OSX#O=#QXI/2"_M>O5C%%=)ZL:(7MMXOGI1>V-OL%QA? MU=6;8;OWC/7&:EOFQ<>K!JC.'B9_07>OQO^]_OP>/'O$L07?_(V\%#:.4"16 M/QZ'\'Z$GF#S.3;TEUD A'3%!-S:&P@Z0/I\[,_OL@1;-R]B\9H%NY;@;!!J MC\>\ &>FTI/>3==JY798//VG1:'"G%X@_EFWG.3AO=GK[4T M5$C#>S;B_G,2A,O/;[4@5 C"9<1C6*UGMDUTGJ>S2L#U(;74=Q-7%;Q_/OGQ57)5F%D!<*B>@ @20X.5%%41Z#)K7WQ3+9":& M-70Z+?E#D=D9(+YX;(P3?VG06=>X"$ >(K17#.LC;K'Q(&S$I\R?"*AR+D"H MY -8:<>3 &MF<;PV]5,E]TI.@=41LKTKCF[[Z&X!HK(%NVM7 M?=!5 P>:GQIGR742+T3GC4ZI\61^Z7/X,GH2G\ P(Z#(>!V.PZU+BG:GX3NK M0MDK7YO%TX-2PBZ93AY[4K+KF7D1>XWISYJR2^JFTTM.77 MEO_1+/\;%GC@17XG6PJ?(+ M "X= $0 '!R;&(M,C R,S V,S N>'-D[5UM<]LV$OZ>7X'3ETMG2NO% MCF-Y8G=DV4Y]8T<:O[2]3QV(!"5>*$(%0+_ M6#">"-1I=?;39NE==MPE1P<'HW;'(;A[Z!QXGNMT#_8]YQ!WV_N>CX^\4?OG M\7&W_:EU0,@G9W1X1)R#[N>V,QIYQ.G@MDN._(/NT:$&?>;'W)V0*4;0M8@? M/_.3QD2(V7&S^?3TM/>TOT?9N-EIM=K-/VZN[U331M(V#*+O2ZV?1RQ,V^\W MY>T1YB1M/F/A:*GYC%%!0SSB>RZ=-F5_6X?[K;2Y! M*X(.("QRY\ MS AO%PO!_::\+Q6UG%;;Z;1SHF;)CM/:=_9!$@O!@E$LR"6P=TY\'(?BI!%' M?\4X#/R >! :(9'D+S7(W!:8C8GXAJ>$S[!+JKCF] -"DK)@.J-,H"@GZV,^ M4C9S)I18 VEZKZF+A8I:V9)#4]6]7/LF"067WQSY;>^9>XUF=:TQ=\88SZPT M9V6T]N2*C0696&UWN]WFLPR^8@L*@TFU=^1'!\;6?MM"[;JHK*X;OCFIW#9L M6 P\.QM2N5?:4#C0UL6"25)]YZ\U8SYJK0W!)5,$FHOXXQ6)(VR2E8'H3R=A-$2'B]Z$DJ*P/PI,&!@)!HW^QRQV>,V'8< M1#BLEHKH__O^NSBT[3^(N''X]^B^1WS;[H-($ 4;]%Y*W\-]%'@GC3Z%W7D# MR6L/MUGV4X(UG[UP?ZHI>7-O M<>KWZ10Z-B$1#Q[)503LD(<(QUX@9+:X 965P8W$'I01NU"#J(^6%"&M"7V< MZWHGFOIW$PC]"0T]POC%7W$@7EY-;P&DD=1/U4G-PO\3:07O1/I]S">7(7WB M6QRG>4@CD8<6HQ/@D<*OZ9@\PSP -P\SG:C,69&LD9S/D/&8$OB@4 MR446IT8,W!(7C.^YJK 11.,AHQ%\='605B;# &/DY6B5%PV(%HAH&;)&%'TC MXIIRKA=OR/M@39_22"T"E?DIPS"2TUTE!]#01XGW4[JE $BD,?7J5"-ZKL#R M:!R,0M+C'/;27RGUGH(0MM?> #;4U?-?(Y")J'9KE:@%)-*8/Z,4%0$L4K@U MXNH2!^PW',;DAF#I(@Y.6#BL^G1GPC$RU5YE2B(B!8E23,50!K5&/-U@]IT( M#'%[1]R8!;+459F<0F$C(YU51A8P:(%3(PZNHD(V[T_<&J[Q60HY!0%JI&5, ^,YY**XA>:PL* M-'*_4YF;JGA&LCZMDI5!ULOWFAJ/VI[5B$'=[WO\;+%29&6,3!SFIRSE:25> M(T??D;',P&Z)?/8,B5GU^6I5T.CR7+:>0* Y1HW\7I+"WLT*:VF<*LIGB5Q%>&,[.7VNOFD,)\ZUI&_U3Q/E9XL M22O#,#*5VR?G\T1=3:XA.45YGB4W)1!&:G+;Z,*$L8[$S',Y2S96Y8P4Y#;' MM#'1-,[ MJ/,E%XOJ%Z]HYK?3W"40M@& MV!NH-D96KH93J0H "TTFN/+WM9PT:('W'DQY1C=>CJR!C8&P63FH[JN2B8?+ M6( W>U.Y&?NOLO7B6>8_6R?+ZZ= M;[S1KPAG9"E?*5Q7E*_[EK[8XX.9_+/G@EL"83VJ;#"-5.:JAR54:A4HU?%. MZ-PYOQ-YI!-LA1\)PV.91<53Y2SK!7)3?!/1G5S5KX3H5!U*]*&,PG?6YYY2 M5[<[B@LAC=SFZFXEW*I;]1[#%1]P;KS,;HIOY#E75K-[E%KWQ;@B+_T)CL:$ M7T45V[]1>&QJAC&*2T) M6'T=XI9 1AF3TE@1I@R;NM,V^@PLIY_P:V ]6002Y5HKO,]!M;$@"SS7L/J MX^GG UOGORJ^D7OSKU'@FBI:*W7I\XYWWHMY!U?B\9B1L;*+^LE<^5JZ#;!& MEBN\5Z<:9)3(8G0ZT__-F?W27#[N4W]?.A)4'@B:G+6L>)=G$?[9_]:_P>X$ M=$;CRX!QX<;BADQ'\G@$H%,P[(J3AF Q::CC3$\:91*1?!H^DJ<8:@EU./4Q MS+0!]>[5X81>S)(?T_(8X ,1RV]?&8UG)PW=/!!DVD#Z+,/%:=7''IWB(+J" MFQ)I<>YIKDL%ZPH_6YE[ZN.0S_NZ"=1;^D"D:BJX(7T; M:*!/O9)'17I#_"(;]9XP\]0?B[>45$%#ER:Y?/"K+,P4K"IZ[(VU[HISAX3) M8W#P&#IZKP\HC^40Z..9-&_@GQ$8'A>81;"\1=YOA,L)ZF$&EEX'TT"L]=_K M@]^#)4]:T.WLOS6>ZNOI$*5 MEHC_$%>VO:&AIT_%$G0*G\L9-8KM!(]JXLV5Q'N,R7*3;'KVLFB2G9OU@857 M,#LP=8CO8II.9F@@4/XC'/)\4EV\6K\,_$@;WBB>N#205W#XI=RQ$95;K+P" M*-^Y<^6PS[R(U_,%8?\FF%W2F*UUX*LP+98 ?6ND#YT%1Y%14'5AT%>F-(*- M-7NIX*>>"^0RXNU[OP)^^5 K;KL3XVOM/%?>(Z/83G1.'3M\ XR&Y;W)M]L- M\ZDO8!HAZ;\79.C$FM8[T96+N^'0$%&9%KMA,FQ+85GDZ6]IU$]:>O/?VEP, M[WI)1]9VR0+AK:9](?T>B4O224_>[!8]HH%WZZ'U:>NS?+N:_KT-@E]%G@G$OH'N1W51W#S2MEO MB^"H?/XMY$!%YCMP:&M=#F$N$JM-&)(3_ MRRDKE]D)UN13'$AUIC!KPG687^4&NM-J=\I[9A3;B@17A\-_R'88 M !.XP %0 '!R;&(M,C R,S V,S!?8V%L+GAM;.5=67,;.9)^[U^A];XN MVKB/CNF>D.WVA#?<+8>/Z=DG1@)(6(RF2$V1E*W]]9L@==\245*I-\(A652I MZ@/RJT1F(C/QM[]_WYML'6 W'\^F/[\0/_(76SA-LSR>?OWYQ9?/;YE_\?=? M?OCA;__!V+]>?7R_]6:6EGLX76R][A 6F+>^C1>[6XM=W/ICUOTY/H"M#Q-8 ME%FWQ]@OJS][/=L_[,9?=Q=;DDMU?-GQ;[N? GJMHY ,(5BF(AD7KD>G@!(LQ(Y,@$OJB@[?KFT[&TS]_JE\BS'&+AC>= MKW[\^<7N8K'_T\N7W[Y]^_%[["8_SKJO+R7GZN7QU2^.+O]^Z?IO:G6U""&\ M7/WVY-+Y^*H+Z;;BY;]^>_\I[>(>L/%TOH!IJ@^8CW^:KSY\/TNP6,WZK;BV MKKVB_L2.+V/U(T8SJ<2/W^?YQ2\_;&VMIZ.;3? CEJWZ_N=_-%K,) MQ/F/:;;WLE[Q\O5L.I]-QKD*^!5,*O)/NXB+.>%?W6]QN(\_OYB/]_8G>/S9 M;H?EYQ?[W22R*FAN%:\H_O/ZF[T\!9A@DI:3U7R\IY^/;EG!-,**WQ ME..G3F;IW$63*I)9=_R7]""?L*\#^Z/T8XG@R7HQQ_GK9=?0BC(PQ M(5ICF"BZ,!T-9[%$9-F4DH+.0FHX/T=U0',:T4J4!>9Q)<^C1[RLD_<2)XOY M\2>KZ5Q-Y?4HUG/Y\'%MI]0M,9^Y\?8T[]!KW9WY:&2\XA)#85"X8UI$R8)3 MBAFP6F*!$'UN/-0[ 3L_^C-['U#:L:.M)R:Y30I4LD._^& M'5WQ?*BC0!:\F&VG"[F'^ 0X@2/L=B$68-3C(/RA$5:YAU*IDV.*H&U M3K96%EL%%Z)Y$I+RP!X$ 4U)KTDA,J!VV2;FUC M7NMV-'$FK9"(R V#J /3%BP+GJQYE;( W44=J( M'"VET,Y/FL]Q<6+EY!2R2 E8\B(SS1UY:24ZYKA-R4>#5C>/V9\%L.EH?H/N M3UQ4K^,3TAMWSH*3P595[)@1=>M0&T%O'KU^1>D2$P15M&X\MAO@#,EL?C@' M+E*\U?PWH_>[Z0$]>]8=UA=,"LX@<_)L$]"K%[3/T)K=9Y\_ M)"NYG<@?/,/-9/RAPWT8YU^_[^-TCL<[7N=':*4+(H?"4D%"%Q7I5AH:4[%$ MSKD#2*U?_CO &I*%W(X1K>71/";X$1..#ZJ6(LX>(Q)!1(P*6!'5P=?DSP'W MFL8N?# 7OC6#O5->(9D';>C1C,)-%P@3N+5IZ!&&4))(JN:9A291BU8Q$Q? M@C0J*P79N.8KQ15 AF0&MUPR-IWS9N)_#?-=TE#UVZ__7A*2"0UNOKUX#5UW M2'[)HV] MI5%0"%X9QP37CD97'/,VDJW##;?907+-U-,S"E(L$6'Q!)P6S5K9-%D MS5RVP1I;4A+-HW]7 1F> [21O#>?[&9R_\=LEK^-)Y,16A]C\#5Y2]484I+, M-G#\^9V4BZ#YK2AC[M;!^[Q>&'"4P7M!C6A7"_IM)7 M+SNH3(8REV0HY\*T0%KZ?,KT8Y2D8FA]E:&Y,WL]GN&Y*AL)OMG4-R/#55&U M,QHGA@7L^ M-&@U\3WM_E^$%,""U9B92LB9#C;4O"6"5)$&KT)[5_5&0'=A@W\^;&@W^5Z'"Y .,\[OI:]@?+V#R>K:W-YNN'C=*@:/F/C+0DN;;@&" 2=0?=4E& MDS?6VA*Z'=60HAP;.^4S?!_%#%EDR ?0LF162]^8C X=9%0J MMY;[%3"&%(QI+/I-)[V/*J/M:;YBE!ZD]]$+IAPO-;4A,&]T8$A^@(H!#9>M MO;#;,+6LK+(R@]8N,:X5Z5FAR'DRD68^^L!%3-+'UKDSPV_HL#D3;BA+NM>4 M]^E:FN*=B]DQ!SHRG5 S"+[ZTJX(G;/PO'5U[6U<'DS]47L&;"B "T3XV\N+ M\_6>?F[2".C3@K[639/YK%QAT'^9PI)<1[P0%[U_CZ [/Z=Y^Z"'C;!19Z%3 MM^@M$9!@+<;3)1G!1^$H@OD*RZS#,YE6OWY?=$#OPG@*W>$[@K[:PZ"_I)'1 M8[Z^FRZPP_EBY% Y%VQA: RO)4R>0;:669<-%\&@TJT+R7H<3I.-%KKU[#C0 MM\9PE-PZXM;+"$4QYT,BN5.3AN9 MMH_BGT[:R(>)KG;SV+!8>F$!;,OJL#;1.YK@"QI 6U\$R:D/IM4L$ MZNC1'[I9&2]&EKL8M*)CTEZ6H%I'-<\\?O.(VP%.EW@L MYP[2XH_Q8O?UYHHB?+VGBR[K30OUQ#@R((!QQ(>AACK853K!+S1BJM?6*83"")!7?JV>DE0NU^H=)56J+05.;V:)B MRI48/,]1R^99CK=Y1AN,[$AOS$=!%"-6-7 VT@1+)YC7=8,[20>A""EMZP26 M2R &I:0W%?ZUCMJ#IKP7-TUA%H:PLY1J^IDE,YA&08L&>,"<3%+0.MYVK9OV MM$JPM; ?.LOM5=<)V\A$UA@X9V0,U(B2RBS6)HC@E?5<%Z>:I^;>\H+??50U M$C]Z/9G-EQWNE/^&?9B^6L['4URM6"9F:Q.3R2")R0L6C9+;SWG@ZGB_J8 ].XN0F M)4FC K(!=6WV$FF8D6OF>#1&.B6X:5U6>@ND(66[M>5&2UDT3(J<(]VF%NN_ MP0.0M%:F" !&/DRMB'!D4QF,K$B-IMI<4%KGO-P(:$@Y<&W)T4X. M3Y0@ //=MY/9MWD_:0&7[]YO,L MHVF4 E ;Y]"3R+P]&-/=7AU^F=?6@K4= MU[PR:SN1?ECG"F&Q1H0:>,):EI0B,2"DPFQT9%7KHH)HW?CZ[N@:5$HGQ+R* M=GR""1E3VPSKGYR6K7Y!N-B%$,$'51D4!NS:AX=S88DKT]DFV81EI":D(;5B*]!;H(@KS7-%<%)5XR2D&:?MFV;7H[EEN\]*&;(+G,BVZ M=F'Z%3^2 _AK*9CH_2&#U-KL6;8":F?"S$!$H)FU(="+Q4UJ71+QN"/<^$R_ MU5UVRMD[[TPW&L,)VC?C^?YL#I-_=+/E?@V(C.=IO0>.^70+?"2LL$JO^E,& MSK0RY$>H$AE7QBF9 3FVWH=Y^E$/R:T<\#MYZ<3#)Q?C:,CONJM5CW0#G M_.HA4@&AK61)U=6CKB/!$TB5%4BAO=6J=3[&W=$-R?E]1K3O2?Q]T_,JXX9L MUH"$D45RH9B6)K!0N\V7(#5$3A:/;5V)_= Z-.ZQ,^?GIN*OV]ZGNS\G,$' MP13%369*.\J,LB")9J+$X; A=1^EN!&LGH*SXRG[ K/@F' 7'L"1 8V"9:%*1!+ :M:I[@^U#-[4*7@!5?H M^"S'.O0DA2BUF3TY)"0:0,- .L_ !;!!<@6NM=5_(Z#G8,1N2J$K:OD:2:CA M4=+[':;Q:I+H_Q-!7FLG$.@% MY[QYEX?71NZ/$QV5>>'SI*22E;&[00*LFT=O4T MGF 8!^6#*3;R/HK9'X#TGO;F7U1?-9=IC_R[?#CI""QHE,JSP+-F.GC.0E6V M* .84%QRIG^V7<;U'*S)_KFUH;Q:=IOO5GKUI(&8+$$*P0' !BZWC-10Q#ZOK[2 392 SMRBBOCBKR[+U2QK"<4=815A[SEM0H+&J1PR%)-P=0%'0OD)K-,M*WM M/W+[<\AO!36D(YR>?+EYB*#:GOMVQ5B/B\Y."M%&**PFPUXR0*\(7@HLU@.( M@$?K*@HBH:G67#H_&P\OP[A3$Y/]/.+>A]!J&--?!B>O:^(&5(B@:?,;" MR5#DG@Q%K.=/H0>?G#*J=23\%DAWHM$3%PBWCV2VDU)/#42E-5 <67Y#0U$KZ'%7RS _7 )M-,?9W/X?Y\MKLSAK_#^ >/I MSO2/CB;NS>S;=!11%YVD81!-H7&C8A&L9SPY,@(Q"EV:*Y8'8KT3M9XX?:*Y MQGD,N;9+(9MU-/?3UZM3R=/AYPZF_9 M,@A0T_>E5Q!3T-@Z'_X>\.[$M;]:>+LO\;7K!G8$8V=ZTDWAM,;SM, 3 (HQ M43,PHF;">6 QDK]@T- LN* =M+:_[X;L3JQZZLK:EXUTOZ M_NHPV)HL5".XG](NYN4$U\KA^V45S ?)ZB5?AWZRC5'Y@F#:@>::X:]:OZ8_5>8=X^((I_Q=^7>Q&[G7($99V4N+-< MS!>$CUZ 43UU/5LA&;IZC*<39,\'EYGE0D%(R2C?VCBZ)\1-->HUC[OTG)74 M1D)+D^N)QQ[I1=59"Q8])&:<\<[$D$OS?*Q[ 1Q2<7&?7+NH8ON38MOX657T M)T>SK\!M+Q;=.))RB!/\/#O=)3O*V]SNNEH/M4YP%S$*M3K%H&CZ8B/4;ENZ M'M1!$Y4+YZ677:F-4 \IW^LQ*?G(\N[7(JBGQ7P;3\A@68>EW]&PIE_'-(9U M]M#I4G?Q-ZO+/^_"]/@6&Y@"/:!H8@/T/3N-%O^WXRF]'N_'!]7(/8^#C) 1 MF;+TC[2B*W[5HC2P8,EU=MDIEY,P(?10X'0#H@;U7-?=?=64?I1M#O1Z)1KB MZMAK>K.C\)J%&#T*R8N.K9OCWH9I2 MX0[Y<4U*W4HW-&J41<$2>^28T'*VHH&:TM\68MB #)HD85LW4OCSN"&M,*V MXZ;;JG8W1U9)$&V@.="'W!\ QHPV6"$& :_[NW!'; MD)S:?DC4BY3Z74'7![94S*?P/NW28O\9NSWRS=[/IE_K?Z^Z;H-5L\5CFZR4 MS^'RQ6JE'P8484!N6.22F.4\L<)M8B4(H$QP6TSJ% MX[X86RO!"\\[M597[M"7:8&*O;KFF!R+%(GDK6 MOG72^[-GK8Q.S2R1+GQ]O8!+W_@WLS0C><@Y[,T&M58,9@ M2SV@UB7RG;10A4' PA <:L%M*;H,8OUJ/0>GLM4K.G=QF?FC=;,* =<0/*6-Z^IW@CQH((]??#O?NM\4P$_DF%YBGF[++ C MR)]WN]GRZ^[;\<$*_6GH8^1;[6T;W6&])HB$?)6,81D.Q<,G8A1,]0"2"2)=3- M3]4ZCV!(2]F#Y7PY2>K!D]PP,>\(0U4FJ]'7HWR[@^H,HS-!V4#JS9%ZLS:S M:!-I.S#9)VVE+.WK6*]#,ZA=_/8,V&SV[ZC6CSZO7R+,\9CPQ9<\G8TFX[__P/_*?GB1QW&2 M1N/]O__P^^>?P?WP[__XRU_^[7\!_-?KC[^^^'$23X[R>/[BS33C/*<7?X[F M!R_F!_G%?TZF?XR^X(L/AS@OD^D1P#\6_^S-Y/C;=+1_,'\AF)!G'SO[Z_1O M/CNE A>0T1M0*47P2B8PZ+E,!5T*_/_L_\USS53.&H)Q&92W'$)(&03RF%U1 MWIGE0P]'XS_^5K\$G.47Q-YXMOCQ[S\_]R\=?SC\Y&MWV0'LM?_M=OOWZ*!_D(832> MS7$<+UY KT_S\W]XF1K]W/F)^A.OCG-Y\^"E N>',X;4GSSV4WIG1SAJ*6 ;SRZ ;6+!\%1 M/@IYVI+4*\^]1.<9D=YCXX^EA@+KE,B/9@LH5GGZ)!<+*:#RJ MV\^O]./I*RJU?3&3O\[S..7TPXM1^OL/H^(X-RYRC$(KE;W+)3E#?"7-+'-Y M;X7W5*[.^#JSL-PL- M+K1W-Q5+;:W/U]MQI,-\EG_,R_^^'7^:3^(?5T3W<7)X^/-D^B=.TUY00AG" M/B23&3%-YW%PG(%6J+V,+BIN&C.](HE7)7*!X%?3,]F<[@AK;AEE.CEJBHWY M9#B5+&%!_/WP8C*EQ_W]![8I@MY,CHXF2Q(7JV[V_F1>+9YJ1NY)PU+01H(+ MSH+BA2RW(@IXQ[#$XA-:WA@N]]$S/#9Z5>:D)TW<1 G?%"4WN=[C21B?58*2 M> "E-!*KW@+9)T5*%1%[V#^O4_&T$;&AU&_B0#3!P=O9["2G'T^F!,P/>3J: MI"5>%U]?DTP20?F8#,"%Y[.',G*#C@-W40+MK :<3PYL*DIGYC-GK<^<-/@!1^GM M^ T>C^9XN%@>X?KR^)A)*<0<1/QNLFV^C$?GTSC0>7@U9A(G(^F MMQT,>VA+="F2"\25HB\L @IK(8K@%4>?0NIE1^U(W]-&8F^:NHDJ,PRJE@L@ M)*$Y$V172*-!$7W@50Y@C+3HK'1:A*V ZAGL;GWIZ2:D[*:0>I?G))G)4?YU M,IOMN:158-:#,]%5D!OPFELPF1S?('DTNC5HKA#PM&&QOJQO*MYMJOCW\X,\ MK0?K-!_4+,*7?$$;$?J^?,:O2YQ>%]&K,)M/,<[W?/ ^)]H(=>2<.. .,)$G MDP5G*$HTQL;&:-FA.7OD]/X[?,4R2B,"^V- MT^*GPX6->&%=GO&\YS QSQD=VM)'4)@S<:4B9.,Y,>5<8&) K*[/R?#X'1I3 M*T!Z($#T$.J]BZO?QR2YP]'_Y/0?M#^0K? +J:BR^G[\*4>R'N:C/'LU)0]H MO'_9F#CGRQNAR$3E8,.B#,0DSFD+(623;0:'DI:>(),W1*,@; >14@)B.,S3SHW#J:UST?VB2KI[@,4F4)A64Z?!@W M$ POX(+EF)*3RNF!LWH;5'M\QG"8]Z3T#%E"\$4&VG9XK&E3!2:AUFB9D4;V M5>FQH*#A:KY4K-=[)<,&8KS-+GFQ++WZ6SR;]^TPP)2V#5C6S"PN>(F?4E],$@H;;S'8,D-=(+\,$:G(&(-KI?BR2:)(K$ MPI5JW^TC815A]X" 2P;6;PL;>8^YC$E$#8D1+4K% E[3=S[KHE/ Z&-K1_4& M$<,[ V4@IP"!=A+O8>5_S'/B+Z>?<#HF;VIV2E5FV4F+!DQP!%(F"B"+%HPIBB')T6(_[;RVNR(D_YC[7O_+S+\QK^7))YO""^ M'G@U3%-O#Z:3PSPIE:.3^2+8_[Z\QMDHXCC].#H\(9;/\ZX?\G3QSWZLR^5P MMLX5H?Z(:7&C:"!17;N I)VU*M(>@T$J;;-SY-H2? 1W*0F7]OHC:\,-:CP? MI?H&6@47L?6?OL;#$^+N9UJ85X@ZVUW/B+B(_T01(\H8H>BZT0HA@&RL!%EQ MSCC'8&3S^L-&M&^\R6]&QZNCR[0YG.9U%( MO)8[;Y%)+5I7&+3E8*CX^4X@>(O*WY6H_8:,O_YV^P,6\:NL% ^!%.*P)D2L M4."83!!)2,))+BS:W=K/[V-G:QF#+8*T[8[?#"P]!"ANI^P='N53SZL+?3VE M+AZB;3M9C)T!0R>0;JC);2#.^!"X(0_?.A=!16_!>5? Z10+1L$QM[8EMH.T M!Y(DCQ9HJRBP(M2O^T;JJF?0FUSL=FK;!LU\FD_3GZ/ 03RE].Y[C M>']$YL"KV2S/9Q?QE^M_67S\\P&.SQZQ0=2L!RI:A,OZ%LZU.!EJC 0!+3AC M*K"(/&FCDC'H3%3*[O5 SZ81_/\^J=>6?J[R)<_K2T[7WWSACIGL?& >0:5: M4TC^%WA9,A1ODTDN>=IPFP?QN].WZ:%]SSM^F=8+/5QB$%()$-H&4"4@H)"U M"$Q:QFV1,K9.8CQ$TQ:VW[X0<_T(;JJ.'J)+]]!W*1OSZF@RG8_^9]D*PC,M M@W>,CB(C03DN !VY:\P+:8,WF1@9#D!W4/D\(=5"93TX$O=0_"[/]X06@1EA MH9"-"TI6AS^G J'0\2.1EZA;]X2YGZ+G"9Y55=%#*OYNZGZ?Y7)R^.NHY+VH MBBSU%D!PI5X<<1Z"L I8LB%C4"4V+\GH0M>S!,V::NFA0] ]0OB8JSC)X[Z\ M)RYO(_$]9-ZS@**6-FM01DA"/+/ Z\\N2JNQ]7V -4E]E@!KI[P>&@9="GP_ M**G7WW[#?TVF;PYQ-EO&N:TTWLC(($3K0:EBP1O:=A4#><^G8EEW:/2"\SN @\%IX3DFE(^SD3M>-' F3T'2TLD34QG9HWV5B! MO!W(=?6-F>Y[Y$:Z&];>OR#T4JRS"[D]9:Y6)'4[B:S>5-\=8LWTM@-P4T9) MCRJ B;5'%@8'* *""=H7;:S4JG45UT[ [($LUJZB;!5U]8"NWW#Z1YZ3 ?HQ M+P(K-VA>)E428\K)B!!--42D(<^99Q(0+>A5P5/>M=. M#U'6=Y-:%GR-E8:::&?:X?')_,\_30I\S]QFJ^)XI1(ARA1F "NSE52T7#:=$6"$APG MVH,PMG4[ADZ$/6W4M-=-P\#I(N-_1MG9Q*Y3DJQA2L;:,D59\H^+4'7FE@)K MO6:,O VMKH75[RB?N/WY3U/KK03:0X3S\Q13KNR=;5I$C=>!$4.Z%DJR9"$( MQT&GHI4M+ 6)C?>#ZS0\31 TD7@/\<8W)[/YY"A/%[9.;9U^,#H^(\W4X7M1 M)4=_FECU!Y:\OLSI4W;!'Y.YQ.L1;<]U@B?N,=0Q2 MW\_8M?+NR!%E-KD49(I+ZTU0G@7G,$HI-7^PO/O&VP8LWI9*<%]K9*,/ E3V M"=RB3;?TP3&-.70S;'>Z>/OP]M+.)1E\CZQ6*1G'.LZ%G-!:GH>(!G*@0U,P M[WGS'O%=Z-KQ\J15D'-[QJJA6GI(,;3M/_\ZETF]C_MUSSB7@T .(@?R9T/U MDRT6R+4SOD^&V!IR>L8&K#QA@.Z"\ONX@'JIY._]C'XPB'B[O>FO&4^ 2 M.+.+7ML>?!V])2QMMT98+[!3+< #?NB=!#S.,.Y*^I^TUD/CJ-*G);XNDW36 M%*(#40V#O'<2,GS(MY&B)GU)>3 (Q)IF%#%!B:Y&;I(#ITL=PF@)\=)[Y3LU M)=XMU=\3+!Y2\ZL(MZ'&8^TQ-_VV]_NGO6)SB$)&D!DU*"D+^&@\F.0+9D?_ MB_==")GE^-?]R9>7IT]<:OCTAPL%7[QOV AD(\%/-I):XRCR3R?3R?%96#5G M,G9M8E"LIK-(JU2SB4A6D$ 1(TL\=[I(]L#BO/S.QZS!C>37@Z_Y^F1&MNQL M&="9+<6XR%)QQ0SS$7*J\T^-)).6$VV6Z<2U=#IAZ_C'':0\'^NLI4YZ\#9O M(VLIF;/BDBX$]G2AY4'BMG.%I8DJ.\!CK>+BC=O>VIP\?IFRL@4E+\0W4X>QG'$W_B8Q7+]0$ ,9,=B8ZY(%2J#7#(/P@LFJ*R8-SNM29FPV3PV?-/,XWC].L(P^AP MT2GPC(SWX_-7TP?>3<;3*Y1%,\*SZB9+;^H"XV2',0LR")F],JATZX%& M31G8.)>TH.&7^!F<'Q'[]3YV%\P4/%_O%38+WM&+2QX @;>:@ MT!0BM'#0VKB4(@LV-;^YU96X+20MVRKV>G%^+UKI([O]A0Z)ZB/_/)E^(BHO MVL#^F,/\XJ<]F7C4RF=@UI,T4E& 62K@SL=4 IUGIK5ST)6VIP:>7G32Q\RR MNZ2PITI)4G$!1NEZ_T1I""7'.O(9K7-,&I^'.L6>'#J:2+V/YF<-#NW3<<]1 M6L-5!H><#NQH#?EAAH%A.DCB0EC=>@IV,^*'JHO8'1-I.WK?=A'%#>Y??UOP M?]&>Q*/-R@<-M$E[4,Y:<%HA^,"82R86S,T[BMY%S+;"]EO"QET(W4A'?30- MNBJ>6P2RD,#OXTF8Y>F7*HBWX^.3.?UY,HXDQD4IW&6N3B-97?CJJYE53SQM MJ>M5&^C!3+* DEX"H!$@=3&&8=)+-^P$^*CP_U%[K M<<%Y%77WT1&'W/?38+[0W-#)8X$775,#J,G52@5$*-8CERR:UA[-Q=NW'H#; MDD9O":JLH8X>@FZ_3<;YV[+KU\\GXW3>P"FAB<$8X"&0C>+)]PK91JAC\AY;@!91PL#[2#RK-6/8XP982 ['T%92=NH%QQRC-XGK4@<:0" R.<)D'6T MT*=E_/K;)3'\/,W_?5([$RS.6Z8,*P(E%&/4J8/(4H:2;/0V:RF;MYOH0-9W MOZNEWOI,@-]&X.FJZD+B@*[6-?*V[F"U46T'$[B%7@;RJ:Z3JJS1(DH'-G+: M0*7/$)314)P6AEM,*'K;G8:&3G?_:6O(644=0WGAYWOQZ9D;M"Z9" (6ZK7& M&C]U9*]#,*44;1S7K/6XZ2YT[88)M)%"NWC;FVACH(LARR!Y/:0OR@L_'4RF M\\]Y>H1TXD_&^_7;VSZWP660%J]M<0&D.?O7+GWPG .W7"#:HC (M)S)R(VM M7?M=3GLM"&C6O>C.\M-?+^K%0F3*TZ::N:R-=BIZT7,0G'94K>KDI=;M_U8B ML'59]-7"V],^5#F]F*IENJJ\>XE@/T'LQ0?V7Z60V^YV\*3RL#/Q"8K_HC*<\'1:6 MO#AI%*MEQ *"B B..,%$]'9))AW M$!S2&G,\ *HZKB\YGJ60PJO6CDH3PK_#LZ5F^[AXTO6"#$G%D]4N07JEB4YF M &O*PC.5&#+N&6]MINSNI:7M@:R)?GH(V%T#_S6JES%+PY+E&2-DZ>I0OJS! M([EMAA<,GJ/,KG7>N@-90]TR&0XSK76Q,_=#SF[NOQW/Z'WUD8NP%$KK8K2% M7'^'!'TC )VME6C!.J=8<:;Y5?C;2=E67J&YQF\V3-]8\CW85HMNUR5/:R+E M4YY^&<71>/]]N87:V6=ZY.SV/YW&JKKPTE,ZH24?6YMHOCE ;D[KVZYV=QVQ MF5P8S[D'JP2KTPN)G: 9^"Q"2M+E8%K[K+N/U(>'HN\V4%=1:@\ _?W3HD=K M9>7#I.:E(QY^.@EI]&54Y7M6]RV8+*AC@<2*A]J>"5P1%I!G6S#9Q%CK&%TW MRH;W!;:G_4GOJNNCRCR9$IU7;9:S^P0VQ(S* PI#1HI,EH@CFX7'8DTJ M49O4&E?W$O2,X=1.4;UL4[],ON3I>+%_[V=B_[I#?#;'NQAE2 H5[044-QD< M5PXX,F9=<-;8UCYG5]J>,;9Z45\?G6%Q_,=GLBU^S,>3V6A^1E4RR3B=-"BK M+8'?9O"&:Y"Z=CQ6VH;F]=.W4_*,(=1 -7>&P=H6!'R:3^(?KW%6V/')+=+ZZS!Q+7-?='#18D3CB^(\H@A:TXIF3*3:(WROXSLV3,X? MX#3?>,DK>L=X?Q&N>OWMXB,?\-MBB_H3I^DB-N=H\W&BD(<0Z\#-5(/WVC-P MT2%*%G4IK:\3;D[UQB.9UJ6@-FV;?[NT^!?#S3X?X/C]\6+8^B_TB/GL[?A# MGHXF:8\M)CXD!T;[3/8ID^2$H0(;E1$6@U3-!]\/Q=L6$A7#HOW&(*A=!$T/ M3LV"B? PG^$&GU^/1]/%AT\9X8G.*1,R&*/)KLY* SJ2-G,N%:90IM+: 6I& M_/.$]^!J[\&=6EN.M65>'=WR,ZEF65#W83J*^7TA$Y$,PQ_)?=P3R%3(/@ K MGDRR2*ZBCUZ#4TK+:&W]^ZYLZ!WX>9XHWP5P-'3P%JWF?R(;>_(MYX7=^>%D M&@^(@P^'=,:<4GBZ.*72B:?B0;-LR EEEIS0J,!K5%P6Q;CKUKR_XPN?#<)Z MTT(/!0YK[_7G+"VQ3__Z:#)>,INGD3ZUEQCFX!P'1$:<65%+-Y0DG]68DI.3 M,K:.4?7'S;,![XX!XR;DU<:U88>+S^1TNX3)B*%O\UXPQJ#+J38\)>$)7Y-H MQI,!HTU)B2F+K:-AW2A[=E#L06$W8:6W9FPNOOPSS^;GAP+?8K[ M>?'':B*?WX/;\^BSL;D ;?N9V T!4'@#GKQ$+X0UT;?>: =F\?MRV"$(W5PQ M=M,5S/'P\M_KS:-WD_G_RXN.A_OC6E._ MEY6N30\X\52GQB95 *6BG4&6A"9$KGSK($-OS#R[5; ;L+B)=[>S>%^N]Y\G MT]-?U<_Q/;2J9$]"-T(Z4*7&47@*H%R./#FF$VO=TGE8#K^OC-T!T,WEXC>* MQITZO71NO2^?<;J?Y^].JF[>X'&M7W]?7F#\FF%'1-^#-0=*[1V18X",&X"\&H&*\-[+XC3+JW"PX'^J/]']!EHS"]8BZ"TJ^HZXWO=V"NLU3 M;N?7P1X4X^PN.2XO]J!@FFOC((M:(Y?)'_;,(F3DP4:K3)*M6Z4W(WZPRW=; M=O.VHNQ=N;=7DSGO\"@O+EKHI-!XEX#YB+7F3T =L0>!1ZV1(^/- W:7W[^M M&WI;0L"DD29ZJ#DXH^6T%K0+-3U=O[M*R78NT*VOF3M4O(%8^U>V$$Y;Z2(D M*R4H8R1@B06L=4)D%WAI7I4_A)(?N'O6EXY7D69#W2[LL-I-:YZG1V_'U1P; M?5ED[LEP/^MA[+A*B7X&F1QYE+$8\#7^B%BLB*78Z+N9QP^\:'CK=Q,E3'J2 M8!_ME18G#WUXB5ICE%6VU,[Y$90GLH)5 9A,23O%(_)2P*'O2R MR[\59 764A<1$@B=Z;\V&76]!KE=:N\Z,<\8+VT5U<.I]C'/YM-1K#6 E;3S M23))%B$16$SDG#CI 7548+5'@A#\>HD0:[5STA4H"CTHXSTX M6P18:7W2=;"-ZM2^]B'E77[I(U3>VC*[<^4-T>;G6DG^J]GLY&A9NM^\[\_# MK^JO$="*;%[K#)0MXQ+)5496E# % P8N#&,L.JU+N*,ST,,OW7JKH.)3#"86 M\+G4O@ZF6OY:@R;P,^:5+KKUM+!'W"KH\GC,,U5^',W^^'F:\]OQ/)//,_]8 MNP8P)IA*QI/MS+&._2H0:EF_LBA=)-.Y_973WIG:00^W+;Z;W7WJ!2:[U!7H M-@;KY=T:-:JCRW@M1BRY& 4))9VBN7"2>Z#CT.NLI+.IA%[VE5ZX>9[(WSXP M=JF1T'V<_9-,D'D=DOQML:IC(LM=2#(9T?":&33@I"?W327/A#6%[\XUV.YL M/<]%L$-0V4:)S#HL_CCZ,DID/2\95#8R%1UPF40=L$I^D.&6G%CE4-I@7/-Z MK-Z9^KX2M@J3/GHG-0N:*RZSX2B!N5H:HI.I]R\\($J>B@Q%JDXARN]W7?I# M\U:4O>V[+E>#R\+:;)U B,PD4$IF6F]2@G&"OD\IN="I6N/Y9,-6TO6MV;!5 M9-YC$J4+&4\O&[:2\._(IJPCN1X5R4)!%6P 80R"$I$#%N\@!:93$E+$T,G- MV+8".V7#6NAO%8'UF@W+#)GSVH.1/"R;?OC@#626I2PF6VT[#FT]2?UI7A-:QA3;7Q6.Y(M2%I^]7 MA%:Z(K023(:X:[&.CA_+%:%L?'(EQ3I?4H-"G@%-">!$T:;PB%X.WK%T9W"[ MTA6AG8/M*JKM :YW7TJP05K)R9X7F!F9&2Z#]\5!24E&-"8;T3I=^-1OCZRD MZ\ZW1U915 \9Z[M*S(/)E0('S* "Y;V$H** Q)C6,D3+O/Y^#V @]+104H\M M/A9;LY,^<)X-1(^":!$6G,X9M&-&9^N44:USM$^KR\\F/L#:FN@A]7,-]UVH M>2Y=?E;2S/T=8-81:_]=?G(0S%4,>ZX2'6;&@6,Q011.Q$P48[2/4,FK=/EI MJ.-5I-G\_OE=,WK.+KUB2:$P#\)@!L54 *^E ):%Y"*8%,TUGV;5"4D[TN5G M)25TFG*TA@3O-/R&*&A?_/95G(^^C.;?FM>PW_KT_LK6'V;F6J4ZM[EPK7)B MTBDON8\!@PSD=EI"AKRK4OW6]VR].)T5] 2Y.@>@&%"!/(Y@2P;.E0\:1T]NC-V:0G\]D3*MG]]+DLFD!$)ABF3L M3 8RVPKD'%DA2QW)SM\5\:[*W ZZ86WQWJQ&JU?8]%6TO@ZC#X[L/6]3O^S4 MO!>\4!I#A,2K;508 Z3S%6()A1M>2"6MIQ4,QMPC6A_] G2P@=";H&N7"N%7 MG7SMG; B% 7%* TJ>@,AQP*:*T,FI=?<[TP%\-,=E_Y$%M$&V-JE\OD'^?SG M8JK;+>& M.3NQE.X-'.RD%AZ<,GMY\9"[H(W&#,R$>A]=%P@I(EBA!+/"1F2MT M]G8!_#NXD%="[J-:O:N.;B^%DRCJI7U>:B\+VIQ#[?&B+4<13;0R[DPKL=;, M?U_'N[F.^\3P(PXH/RP(S:7@G Y&82\UGMNX*\]\7 M\VXNYCXQ_(@CVP\+0B&IT'H!'B,)@CL$)X4BG;+H4Y"279]FN?W0]_=5VLLJ MW3DUK@3.QQAB/YGFV<-2D,BB%8D$8+(")34'-%Y!Y/5"A171AIVIQ6O*^?=E MO)N';6_H?9R1_8=ED)0+.:*$HAD)PBD%OM0?E4N!V80A/AZ+>=T(UAJZ:W8C M36 0@HL,6OEZ-55G<)D.$AZL-$P@V7S-(_G/L/7>1I'WK2A[VZWW;F\.P KM M[DP)T-HF4%9[\"Q'$,X%'WW,AK?N%/G$VM"LA(%[V]"LHHO'TL:C"T_?V]"L MU(9F)9@,T<]C'1T_%OP&YQ+W9$!E4>=?V^W_*T6\]L@IP62AIH'-NK M&$^.3@[)ETX+[[M*<)H/Z@[_);\=T^?RKY/9[!V2-.?TJPVNLJ_[JA;WVINP M>>V2NY9&%:FE-"(J'61(W-CL4S$I!&_4WKHOW="_Z_;6"U?:B5 L8PRXLQ:4 M5Q'0:PT\>X4%E3:\=1.B56G<_*R-ASB;C36)HSG>?)Q^P?F*/26M%X 5L<1(4UP9"G4T==#)1NU*X M:QU7VYCHX7?B7K%W\WP>4JD]G.4=I77:ZE/0KL0"/\V)M_J@92B^\C<95X-IX;%%6AJ:D7W"HR!3 MU^8$7FD.$AV68,A""LUS"?<1M*U887\PN.[F-E-''VU3K])T:B9W(:JG^-ZM M!&TG0-=0<==[H#:3^F"0\(+G9!6#J&OS+\MJ*041Y[.2G*4B2_,NJ -"X8&8 MU]!(6$78?S>97"6=LVDR3CA;9"I"\JV0#!H0(9 M,G9:I$V7#F\@-U'BWE=)*!P.USNMXL"YKN&9OQQT_WW^,8EV*!@QE M-!':M8A'RM%I9-D5%93(#C%)LFN<9:(@#[&KI;0N;0,'1DPQ*7K:J+.,!93A M!KPS'(PSCJ=4?&S>>6OHP,@BLGTP.:0U/EON3'M>I2R+#I!4;39@R8IU/DO: M)YA%X5#ZTGQVY TJ'D'H8A5TW#3T-Q)[#[&(]W'T.I?)-%^/JLSNCZ!@<$R9 M!(89#V3*,$!=*_!0)-H12M*J=<'H>I0^<4 -H+Y>4J";1O"T5MID%L"+K$%E M6C"NA-J#(EH7BW59M;[M]QS"LIM <5BE]G#][=Y1 M_MADW?2FH,>1_F"TN*0(!;*VM0*$OOC:?\T))33'%$IN[P@]]O3'2C!8*?VQ MBCH&BW5W(>JYIS]64ERGH/Z&PV*" 8G\$R851)1673 M>MMX+.F/]DA81=C]IC_NVAI/H^\FZA!=))^F]O%4R".XG#0$="S9XIWSK7/I MG8G;E23(2LIF8+BI26?(PA 31:^S$EZI924N?6] M@\>5,6L$EE8ZZ'=S(2_U]_$TX^'H?VKKD7HIMM+Y"PFBFEYGI>G&2\Z)P&3) M.U5:(00G-*124E8.E0L]%G)VHO&)H:>]7NZ,9S4>6K9TH#[FXQKW&.]_S%_R M^"2';[_DR?X4CP]&\17QM4DJ==57-!E?M@E;UY*=)@HN70ZY,*MD\6@TDB<= MT=3;QJCV5GW9AK[JM;>]'2^N&)P*Z=3;]TG'[)FK/9@U(:D2,J _F@K$#D4=7"7EF:;X9KD+F%RS*M<70S_M^OLOH8 MYG5Q&?QNZ;S^=OK'9: #2U2L% %##E!R582+1U*D&>BTL>R(\)@"[5[D[2$:6/3NEW!!0'U?D* MUT,SMS&[,KHOJIY"1]!3-P;::Z6/[MQ+6D[71!=B^NJO=)F0+2<>-U?4=0AL+.4^ M.AQ=(2JB%SFB@11,[8,7:PL\\IR3C,'%K+@KS4?:]J_RK@G&GC6^BG ;:GK1 M&/GW\6C1=(8X/6/O]+22/*FD4(-WM;I"2@^!H8?BT,H4"R_R6GSOCA;:=[YB M:P&I=>0^:2ZTAD?\@JJ?3J:3XWR5'LV-TX$S2+4P1GDK 54PH%E2HI22Y?59 M7WRBBSXBT@DNMM$HED_=3Z]8-*]+2FE:R]=7%6\C8U>S6"CBX M,XZPIK!W)'OE58Y9UK"'I+U>6;*),,9:IFMM$AES:C]O]+%GKS9 3=\JVN'L M511>J*0=8%F,/S(D,<$Y%!69MUYJY)VNJCSY[-5*^GXX>[6*W(=*8'2AZ3EE MKU;249=,QCH"'DKY)=K"/:$Z:^>)MMI0-16$G)(GTYE'*SMU-MXII:^>O6JN M\U7D.F#VBB?'3> !=+0U_IX]!,\0;-!113H]O6W=!6JWLU MO5**[*68,@CN:W,!;2O9J'6.@O59ZSUYU(>:Y9J]6 M4M2]N8QUI-Q[]LHRXWAD&3R/M'7Y1%L7;5H0+.:@C:Y3YQZ?RC?*7K73^"K" M'2Y[A9$XT(G(8 KKS0M/]"$'07N=$$:@#=T2'SN;O5I)[MVR5ZL(;8CLE4U: M6_2)3B8AB$4=B$6)(!Q&48>XJ*(>:_9J;?5M*JC6:_#-9$HF!H'I]S$>+CZ; MTZMQNBU;(V+,JC;%5BR!(L+ B\3!%V%4$D:'CLG(SJ]\M$KN1ZA;2H'].J'_ MC;X0![-9GL_Z3']U?54?J:^UV+R>]F).JJ@54\DKF1(&G1,/)2ADR>A\(WS< M]:4#I+RL=V1+D.. BU9:0C! SA5DI/W(Y)*2;EY!.$#*ZT/=;J?S;W5FSYS6 M8+WD>5S?^B[/Z<3DLKR'7 M;)A''ZTA/H54$F@/B^01!@>A3J JB3EL/KUKM[-A*^FI8S9L%2$/G@U#$9TC M2D"J.OJ%VP@N&%N1'J1VC+OV_0*>2C9L'6.@O59ZSX9U(>:Y9L-64M2]N9%U MI-Q[-@Q5RDJ6 "77[=LF&K"&V(;%CTG@FO,C"L!3C9 M:/!8-*!4S$MII-;=+N3M8#9L;?5M*J@![G))DV(-YX.6N4[;21Q"L@JBB1(C MY\RY;FFOW/>!=PV0I(JV!*52 :%LO>>)"@+G M$:P.P@GC,?#'F*1:IQ$>-]):2YMCX8L^)S9!$,J#C)$.N&2R4ZWC!$^G:^$J M.&K1M7 59>U(ILL4IE(*J583R=H[J4 P(I*-3<^WOEA>6N/KL6>Z-D%5WRK: MA4S7A^DDG<3Y^^FG//TRBGD9U[56AE3;+?@:L2G!@H_$2:%?RF"#*J+3EOY M>/NV=S^FP-9*NIXTE'GC-,]-OQ MOW*L0OQM"G'SO05NGE.)T9A;VD O6 MY47#)K(:Z6+2DR!;Q[K>O'OS&\8#$NEX_^?1=#:/)V,>C5VTC\;5>NI])'_G'#U,2TH*P<::/GOV68B;)A-7!#VZ2!GPM@<#\_N MAC(F(R?;-:?@00GR4P-##9FE%!-YK+&$3OJ\_N1'K\.-1-5PP.N"F,6TJC,F M3^D1B#PX)L&CUZ!BI.^X$I!TDL1&/7GN;"NRF M5&<>J%>&8Y M_G5_\N5ECNGEJS]QFC[36]Z/#[\]'("^8O%>?L[2X*U#?L]LW:M/7BGPO J5 MYQ'E#>-3!SC-KW&64YV^1,;S\/EG/N"W^KL%6>>T$6QJ MC?D[/,H_7K&Z6\6F^B!QHQSCIP\?3C&=M/),8P!>ZZK)4$#PJM;1FY"PE&1U M[K8)7#QS"W';'C%P->>XGN#NW PV"?O/YM-17"2P)_&/WZY(J%G,_K9W/$GM M=A+K337JC:\8Y>DB:C>.><'"K!=%WO66)ZW*!T1[4YGFW@/Z]-?U2R#B_O&7 M_P]02P,$% @ D7H$5]XGE#F/P@ ^54( !4 !P$KTE(HRR=*TSJ=?@&15L5XDP (I]J[#I[M'(H%?_D D$HE$YC_]SV^/ M2_#,\R+-5O_\%_OWEL\]O\KPF/$2*N!SE.0H@8HS!!/H,A3ER?"1PSXE[=_S5Q P=Q M'D 2QARB)'(A(8Q##[N4QP(E<5@WNDQ7?_Q5_4%PP8$4;U54__G/?WDHRZ>_ M_OSSGW_^^=,WDB]_RO+[GSW'\7_>//V7YO%O1\__Z5=/NTF2_%S]=OMHD9YZ M4#;K_OR_?OWTE3[P1PS355'B%54=%.E?B^J'GS**RXKU7ES@[!/JO^#F,:A^ M!"63OOO3MX+]Y5_^ 8":CCQ;\B]< /7W;U\^GNTR^5D]\?.*WZNQO>5YFK&O M)<[+3YCPI41?M5:^//%__DN1/CXM^>9G#SD7IYM=YOE>JPIEHE"ZH4+YW\YU M]O,%\"WA+8^Q6@!7B?O9%L8N3C];@WLG-00?'W"KFXLAUQ_4^Q6;ZMO==G4Q M]/$1V_HLLA(O)_@L=MVT("_5#S[)?S7=J(8ZE&G53Z.Z6U#YMY*O&*^UY5[3 M(&7__!?YK\6Z@/<8/RV^EAG]X_KI*>[ MX"OXV]=-5U5[AHW]Q4"L\LSTS'F1K7.Z6]@>EZ=6*[E0J:4M_GF%'WGQA)L7 M)&QE!=22_$L%&+01@QHR^$&"+G[\IY]WHMK@2K@W8B+/'@>*7V8#/ZMZ("2LOX L9SR7-O0) M$;>?/Z=L<8M?_E;()4,9RNV_XD7[JAL)OO MW/0ULZ]\,XMN\XQRSHH/$NY7O.0WXOH9I_*))?^0Y>HG7SE=YVF9\N(=)^6" M!UA$F$0P=#T'(I>Z,*;"@Y@Z/'+=V$^"T&21-04PMS5W@Q^H 0>%Q%N 3(!' MG/_!2R4%*+;XS=9?XZ'16X[')'QL%;7'M8*JJ%8@P0[S%=C* ^6\@>HQ>ZOU M4/8L+=[&W4^ZE@\EYW!I']R.F0XL\G+Q17Y?O#%GXR3TG,#!T$^P5&T)DJHM M%@D4,0JXH*XK59R.:CMH=VX:ZVLIS:6B3"E>@E\Y5JM)Y2[\_5WVB-/5^>6] MD[QNY7,!):-;_ /9T%8=9V3OT@CRE98VD/^UTP2'K4TRP<^(L)FWYWX]S"3Y MN'J6 Y#E+W_#RW5MV?."Y\^\D#.4N")R!8P9\Z3QP0F,A4NA2P,2$.K0,/86 M1XZJWB7Q?(]:'ZJ>'\[F1WN]7&9_5B:Z7.% 1@K9?T&Y_(&9B=%!M9XQ<2%S MTTSQ+4BP10DV,.U9!OU46+(!.CJ:=+7O%_AP7==X8YC*4,W(EQZN5^P=?^;+ M[$GI\/??GOBJX OB.)['70XQ)B%$E">0B)C#Q!5)Y 1Q1&E@LF7I[&UNJ_T& M+, K!M@.KIFBZ"983U=8HVUD=;''6 LI:*#:4QE:C%C2&MU]3:HXM,0^U!UZ M+YFICZ=\219?,U'^B7.^.11O[-G \TCDQPZ4?U.( D]N!@@*I Y),!&12$A M=91&1Q]S4Q4;E."I@:FG([I8[-8,EK@9>X>PH66#L/\00)L?UL1J5(OAV#SM M=3:FN56Y*RLSZXGGI=Q%I:M[4&:@./S ?KIH\.G2[17.Y[^7O>/WWQ]6-'#4Y?*O[M_@I+?'RFA1ECFFY\ A+ M2.ABB%U,($*^#Q.I)"%WU ;,EXHQ$B:&E'[7\;\!9/ M9,T9L[:ST^YXXIV>*2''.S_C%LQ/;7];L7SY@:=>/&&3A?'Z3)I()OV=OL46T7*]/T M.L_5Z"I[^,W+[I%;_*)^="W-+"8WEVE>/5Q'#RX08@R%G,(XX;YR/S-(0NI M$81"_BXB$<%& 6:VD,U-*U6Q.;""#; "? 5DMX_@![F&O\AMO'$HFK4AU+.9 M7F5@QM[&*L#P334F;:E 2RQ 7D#[N48T<%V/X4XZ4(MG,0K.-N.VHN6LX9HV MJLXVG4?1=]8[N$"YO^G 431 WAP"J?ZXD[U>KYC<4*\^R[E3G_DN>$)\-Z08 M.C26^USN$$A\@6%,"8Z)QVCH><9ZWC+(N:G\"BE04 T#"48=20-U_XKC,[+F M-QF:88I[).YLZG#;$*=7YR.1?%*SC]67^::^:O07V7GY#I?\ TYS=7BL%8?5 M\?KP8L[,O[Z%@T(;\ M7)N3[<1[A&IOP?L>'*0!3%?/!W<8+W<,K"% MWV2J'4HQWJQ[P^_3575Z1_"RBC=3._A"23QH"S_)EX"H3SE)!&0>@&7H1\G_C-E["Y#_H]?P>GK\_:_ ID#]_9)V#)['^-0?T.O$"5]* E M/JCD!Z4D #0,7($M!_*?%0L3[CEL#]Q4&Q%KN.>U.[$]',9;%NL AL29C0:R M=4&P/K+Z=ZZNPG)V_NTM#E/_+,1 N):"G!?;6N8VM8(M:UYKC:":IUEV7*)\T+% M4=5KKN:2.[MQT8H$G!'>_RN7[/;'NCG\WC %&JH,]^ S_RI-XB]GA'N&49]? M^)-LKOJT5*JQC8X#W3INJ]=4=)N;SG;?=%93:RW =(:#WQW6.B? $P;3SDGLDR&\?Y$$7J&)4%#,:(4!YS%_NA8Y:42:/7N5F!6]#* MM=^&_=\W2[-&'.L%@Z#I#[%-[=B&D0U6!^1K,F#)6LXFG3XGSMMD0,-Q[B:3 MEX=?(R_*2E6J'!'7JT:%[E)'& ?2ZS8XHSG2 GU59TI1UQ.:Z;%#/E(^C6T]#621Q9+6T00IJJ$!B!2VP5T#"M:>(-'FQI'WZ>IM4Y6B*?JAG=%\S MC^?Y=?64JC1V=^DC9Q^R7&V#Y&[DPQ+?Z\;T=#0Q-SWQZ^?;C^TTBA7D*FG+ MGB?/P(?6QV%_L(\E^D;6$";,@=\5>$MY*37H&10,U-7N9 %!&L*U@X)T'A^8 M=W+GK:C\'45S(=XC) @]%$!?Q E$L60Q#AB%E-,P25P>4SG:#!9)&U@;'_(R0B;F'!ELI',_T,FVFQFY1CQ(R]CP^T('( M[]5.Y@M_RG)U$]C4777F]1E]M@U$L,4XCD>JAPA;3JASW4SK=^H1]LC5U/?\ ML&_WFM)L+7?AM_A%I25]NY;6\JI<)''@$KB&'J5QLZ7)H.MPD&86Q/7","J&10 M8;LE:(L!MG)< 24)^$')\B.0>^]*',BD/!9==1P<3?V> MO@L9&EGS=),C=TH2KB6?7@<1@WQYI]J;S(?7(4S;=]?UV##;YVV6RTV4;$L= M/>Y.'#>I+$/$/>QZ,'"D;8,(CB%QX@12'S&!O)#$U&CKT]G;W";Z%BQ@ZHQ] M:,F7;H;U;!)KO(T\_7>4'11P&<&SI\6))=.ANZ])[0,ML0^- +V7AFF0]T*H M -]GOCU7_"([^L*5/.FR+N-V77[@LD6\5$%":Y4M?N_AA>NH)%P>AAZ6NRD4 M.@+&(@Y@Z'#E8HEB1VAE!["(:6[:J $+B@U:4,TS=:'DJ)\)FP)6*(&""=V].7W7>&CY^;2_NGQIN*XOIFIL M[W4O2U:C4KOY&.;$/MWD='[L3I'V7-G=3UYVZI3QXG-6?E'7R?-J;_7,\Y<[ M_JU\(X'^,>0PJKO%V4WWUC$,D]#!*BM!7H,'&_3#3JIZJ#4[P++'ZI3G6HI0 M=:3^Y8!0\+N"#BKL(QQRZ9%U\=E73S>O7$^O=K_N+B_M MECPO0E%ULX4SIKQ!+(9)A! ,0H<'#!'*O,BP@M[9SN8VY7>G&:;'XIV4ZGED M;!$UNO]Y>^+3NOMFUU8PH<1>8;OS74U=RJY7Z!/%Z_K?F=C?O$WB- MH^.)4[GQ?)<^IXRO6'7LRATWB?Q(0$+#&"(2>!#3,((.=E@8^I@*K&5=3(9X M;FIK@Q&P!B1X2?E2TP8_3F[ZANE65HR5T5PJJ_B8WHU?G\#%S7 MIL/TVJYL;;S?AVO;E'YKKF[CCH^#Z+ VJRSISO:FX+1 -O>/*7#E;UM+H=KD96QWOI73::6^%MP+A:-\ M7(Q%+D0(497EP86)B$//#QPI].FF# BXBCCA-G; M-K15G1$\P-)T<7P"'>11B+@G8.*Y&,:>[P2A@ZC43<-5TSQK%!SJH7]T?G(< M=Z>.K@!>EP]9GOY=/N,Z5XY3_:^)R?H?()5&ITKU+?=!V;HL2EP7#-H\T)2T MXY@^5/=YURO^__XW-W3^A^]< ?4M7U6OON.TNF/0_,ZM?N==HO-T*@]8&J>I MM=G?ZG'Y6#$_EO;JJX!WN:J:,#^XAHC=2N@[J8?7F_;[B[0K/F2Y:G411B[E MKBMML,0/(7)B!G'(! P#3I.0!#Y'9MFYYR7?W#3M!COLKJ:A89=\%U_7R#[) MU_]FYN_!-"_6IE?P99Q$5O/\$E[;23J2=-^'2W785X6 MURO6D'BA'/N^,I7PR#" M/(2$B1!BYN&(!P@YW,B[:PW9W%;XG8:\ EOTU?:FC1_\7H$WK/5A;SCU%N97 M&:21EU1+XV.\M%GGTM*B9 _7I,N)=3H/%P+['0S,F(!S57^[V'B\WJ7+M5P\ M%@[R<42\!#IAR"$B80)C$;C02USY8^H3QRR0[$P_ 8!@(CSI. N4++FZK7W=PF\@9P?431^)8JT[H";5 BN)_I M[MEMG[^QE^INZOHSH@WAT*#VL54N)RI(//1S-"L,K,U,9[7>_E:F*Z&K+=%> M75O]MR[+MR\W7#Q]KN[R\W*3*CZ,G3!&W)6;(>%!%,EM$79I"(6+'.)2CCS? M:#/4U=GE>> MDU33XA_=J\@)F\-ZLT/Z*]E[\53GJEIJ7A;6&EF]O9BM\1I9RV^'ZDMKJ+"0 M7PFXWANIMSEG:5FEVQZQ7$ 76Y:+!ISLZE5*!W0)?:Z 0.<[YMNX)GW5=9Z_ M>?FX8K5'5G,O=^K=N6FD3>ZTUJF)_(R).H2LKM"L\5)_6W>2K/Z]W:4\C:P) M-"BRYX+NXV/0GN]D@Y-M_+K$:>_^.I^[\$SMX^II71:?N%SQ_,:B%K'O8#=Q M88P3 9$7"!B'E$+,L4,#+H@?HT&G9,=]S6W25]B /_! ZP27AD=4ES$TX:%3 M#?0*-(2-D.Q:@Q/;ATGJ=XZ#S(I\]X.EXY75R2-[L0FB;I(.8QI3[R(,^ M=2.('!I!'$0(4HJ<@,I?Q0%>//$\S=C7$N>EGG:QCM-DQAVB'6_R-6C;D7WZ4JYYP'!R\KN?K4:U\'H,QQGO27N54=NY(719B[1F_:@SRV7Z-E!>.W8PK/X MOH_HP#YZ;><2/=_10%M!N4OK2QSOUBIPY+92E95ATG*E;G*8YC8?4=(PPYNR$R#,IYNW#M? M7QY)MES@P(DQ$0$4-$H@"OP8QL+S(64!#JCC$\?1\KXLO*C'JJC*/[OE*E>$X6;(N=B*18$&A$X4>1+&+(:8Q@]PCU"41=IS0Z'ZA M;L=SF[*__?3U)W"_A0ZPPOXRN$Z@-O]ZML48K(ZL W[["G:8P0;T!*4$3;FR M9#YH=SNIU6!*QJ&Q8/R^^6GKYVQUR[///+M^OJ^" &FYQLOERRU.F4$0;4\S M<],W$BY44:2?Y?\V]SCW'2P-?J $, ZV[2.U_X#6(I\C:QJ[5!J=VFJ2-.@ MMZ_MRMS(U:7OXN.J]HT$9N\Y3R11+P M2$1(P#!)5'4([D),(@I1Y(8>#@.$F6\U0XL]['/3815RE>+BSTT:%MRLYUM? M\9/";>5VX93?B*6#Q-<9^1D<,1:Z9XPU T!^'AOW]5&VE T/H")BPA-(^Z,W MU=FD1>3S.K6T/R3&YYDC0'B=J*A.H,=)5!8.P3$E00 %4ZLE0@[$/@V@ZT<( M!XF;1$$\9=U=0_QS6SNKHQM(*NV(:ZUXM(K>5XFBF$H4)53$H[U4ME-_/--$ MYHSX2TQ%P8XB'V?P9#Z$41AZ,#8XQZ,0LH<)Y!_!?Y"CB') MM/U]0[EK]_*=L.>'@2M\AJ"/$PY1XKF0,)3 4- XC!.D$FT;^4H'?W=3N$V\C6?N[#PELBW_YE[;T[HT3XEUY,4\^9"M M^CT+(1P/^QZ&$8]=B+C ,';E9LE) DH\D40A-UH>CKN8VQI19]:A]JOV#*[6 M,Z-)?*I*SYBE>2Q/YA,=O'(IGG/3NN/)"R^F[JI4%H9UI+J:F-$WVLI"W0(Z M2D9J'49L7Z8\U=7KW*;L$/KL=L2?>7+JEQEDUSWLQQ][2E^ZN793>[L\0FO7L &*FBP M @768':?)$IC7E_*T=@S>A ]9K.XBX)A\_=DB]/-W"Z!]N9LYX-#,[+]USK- M.?N0KM*2?TJ?.?NX*N60IF399,W^E*[XQY(_*B=D2'T?,^@'7@Q1Y'LPB7T" M$0L))8[LP-.:[4,ZGYLBV& '-7A8H0<[^*#&#WY7$H!*!,-" 49#H[ >LJ5\OZA+OFRW MV)1A5_ H@5$2.U*QH022) JAB#W?Q4G@B4 ,+(#=V?'5ID=#CY]-Z_ M((O$Z2F!$'43P@5T$FES(41BF&!'FK&10V.11#$-S--%?!=ZZ.O%>N=B3?-= MZ)8:V!6X+LL\)>M2Y4@$9:;J9:OSD5'J_$VE5>:B1\PUQVBZX@NG2UP4J4AI M%<3R08*]SFC:'$+4$2J?>7DC[O"W]C=QE]5?Q"+R8HHCN7F+B#J*;9IQFH:_71B9_KI$%2J'/ZTIZ2M,:Q)5UZ.9Y)5:XU^@XUL[V&!_K=GG&Z5.U] MR/*O>,GW[\M?[W3*+[G4'[^MH,2M@)NI(M^AK3+SF\:+V!DW36_=9,,PC8X^2.LA ME>]&0"C!0B6B_%EK.:WD @^JL)!$^Q '&T&4>30**"<'! "5MCF2F&GF+ M[X*LON:C8K#WMT_R]W>_9R-?ZXK/Z%D=-5@>-ZUC%X YY'74($@SL:-.2\,4 MYL?5L_R>LORE4LH+WQ.!XU(?$D%BE=Z10>S['#*/B!BC).1)8.+)W&]^;M[+ M.D@YW6 T4VH'S.DIK.%\C*R,ML"N:K/.GO8X+;(ES7#0^*2S_K1@AS/ZS%,# MS1OZP-EZR6_$8>%C50N=7J]84P"Y*L*SBTCT@\"C+')@$/D^1()2F+@T@8E# MXBAQ4> 2HYHY W',;?YOQ%#NIE.%O"MAZHI\/26]K8Z6INTS_AB,;0"9TM^4 MZP)60T\M\6G+U!F(8EI[YS*JCHR>"YL;IDO?9D5Y(W[),E8=&_/\.:72QLJ6 M;,$Q(R$1 I(HDNJ2^9%4EX[4GH21@"+FAF;IH,YW-3>-J)"JZ9ASN6IU7/\W M951/I=GA:62MM:&H@EEIIPU0H)#:4TC];%C2.1T=3:I6^@4^U!P:;PRH0?]O M^ FOOO)[M=/>E/$. LI))&#D!A0B+Y&V4^0Z$#LN\IPPYC[72G1SIOVYJ8$* MH4$=]!.,=<]X"SR,/,TK<*!!-Z0V_*FO2+\8_&7<3%3]_>:)Y[*+U3TH&IY4 M99<*^D^62K^?YZ&SUON)UZ8K[GX>\UXU]X[')L[^5?WQ-UZ46X>3NZ"A'WH1 M46[Q$$/DR'\E4>!"-\(<,>%@X9!)4GN= #IUO)6=?4Q; 6X MS3/*.2M4N(PZ@KT1\B=L3$AA0KCO4(I0 MX!G=H.COH.XCD$K).9"[>>>\DPJ:Q6DJ\*8G^H*,JMMT"!^2M5A :Y$ M,E/B&J.BIYKMZM\Y,OSTVC;$&"#^9=S\XS'!X+P2GY8UX_XU6F2>^ MR*9O5F]Q\:#^I^Y&/$NUL"J++])O+CBB[7JAC>N[1X MRN0R6R6RJ)SYA:1#&CUKSAH/0K8J%MAWW""4@T)0$$+$L?R7AP0D,7*KY4BEP9?54_^ [TGV@<]+8V^]C0P=0?*CO0LEX5?T)6J)>@1T+S2/JVSGXX?X;6WK AI\ZM5!S MSKNC".PXLF\+=F@,Q!H4AMW!O*>L:%GA&S F==O*L<#^UI*T,7^H07R MW<3#3@ )=2.Y+@<^3'SDP2CPL9UF;FME#1342 U.?<[SJ'$@ M9H6=D1>)/6(N.1\[SY3!,9D5QE[UM&R/3UNG9KVT=!Z>G7][NC.T7@GVCM+Z MGQYXHI;>KZH[B*ORFE)UQ5BY:K-EJFKH[@+VHBA 'G(Y]#GS(4JP TD8"N@& M010P0FC"M52D6;=S4YE?.*T.2[:(E;-O)?]-ZR))AB=?>M1KGFE9)W3LTZH= MX#U"&\B6LV\.H\G6X9)>I],>&QD1<70@9/;V*Y7'W%X9TJI^2(E+$N9AB+TX M4!4R.22>CR"*<( ]Y& _-BHT,2W\N:G*[>V=[Z1,IMFW8BG.X-6^@!E$(F@7 MRSQQ\>][JI@8:P$:K1:W!BNTS&B9Y>ITK&>9'/%LGH>,4\B&% POP9 MI\DWRX9OE@-_GIGO[2>ZMY7>_E62VO>DLK>7P/Y7G/_!J\Q+(RH MGW"YB0P=*O>4C@/CR&4PYI'OP>,6-2BV ML,V6VRZ2]99;2]2-/8EW5+7S5%FOH*;!AJ6%MJNG21=:#9$/%UJ=5\P7V@]2 M@FS%OW":21O_Y>.*F:RYI]^>V^PW6W[/,-*_$E].QMCF0G M&)($A9#Z 7.X@ST_,JP^T-';W"9F4Z1C![(OR'P P9KG&;9H&WE*&S,V(%^@ M!A/64@-V]35Q%D -L8\3_NF\-$QMW.5X50@Y";>Y,=+5_8WXD*[PBJ9X^7%5 ME'D5^53\U6$/59'40]339:PW-V+N-8:-BK/[&H,^2MK0*;5+E.@:I MA[IXE#[,/2#7C*7J]!,OD>,][TI]&Q?E[FUH;GIS!QA(Q#\\_]@J/:_O+^GG MK]]U8I6ZD?5:%VLCE.G6IF:08Z6_]2M@/K+*?&'G$H7COS3P?">07"#:?86AX@C:X&6)&JY=]6 M+%^^W+>JL#R6VM;CN0;FIHLE1BY!JOL17PT/T+N)TC 3;7 TMGE892T[21*H MRR9:L@O[N!AF#YYM=3H[L$^P/?NO]V&SJLC7B[?K(MTQ>5: MST-IE]$X@4$BU"T,Y$/L.S%$,<;W!5[&]N,;4:(]E7L$[YC$\LUZ$LM_[";QN?8FF;X]PFPF;M]C$V_5JMO] M4B^K;%QUD$T5WWXC!%SV#P7GM39\.U.]C]V= NK5MH$F? Z\XI2I/PJ?TF;./JU+B M2\H=P)YF?Z]POK^FX+-_X/C_(.5W=3'1BE[#8]R")B;2I RKWU&X<01I1WV',<:-$>T]]V/C%#U0 08U0 M?S=]1%S_5OH2.D;6.P9,&&VBSXD\: =]U-ADV^=S8K3WSF>?&5J3EN9<6D?O M>/WWQU631J50*8;29W7E9)'(N>KS.(1NG 0088Y@XF ?!G*>QIS[CB_"3=EN M/;-$IUNM[W:_1O?8,1,-1I!O09K6L=5@6\\&L<;@5#5O:YC@APW@']5AWY;1 M+_V,#JB&JT^1M1JY&EU.7#E7GX3C>KH&[YH?FVWNR=R(]WFN-G"[$(Y/Z8I_ M+/FC3G)VG69F-!,V<*OR1_[:2\VZ9_IVS?\V6 M*CGM+SA=?\^%$EZ5:%[(NR#FM6 M<4D#;Y./-O!Z1L0,=)N7>-_?H9ITNU?$&1Y5"58;D".Z%! M(S508H,?E. _7@'"Y;,<7+/_7-T+I(3!SSAR NARD$)$8D)C!T6P(2X MGHNID[B>48U*C3[GMBBT<((MT$%W('4(UW1%VZ5Q9&4\B,'AN;OZ.;&=PZNC MQ]?)Y=5/P=F<7AJO#K1V-\G9/ZE-Y:<4DW29EB^?I6A-(AV""?7CA,/(\:79 MZC 'QCY!T*6>SSRA[D$:9<#M[7%NJN93MKJO4Q9EVTSVR\I_LFS FYN:O:QK MVHPVN1S;^-N25X&] ENX5V 'V*+QILN-+2NLM[]IS2E=\8_L(NT7AWJYM[NU MMTM<%*E(.7OS\C9;E3FFY1HO?\6E,K->U,G_G=H8[&ZP$9&0$+L(\H2HH$^I MD>) !)!@SIW0]:F#C?;0EX"9FYYJR0)VPJB(H)8X8"-/=YB/_9'3]:1/,QZC M>]B-AP+\7DD#1BEP8(-6:U[Y"Z!,[*V_G+1C+[Z%-@>&Y=('SM:JQFT5AD4. M([5VU;B^EK*WO?IJY# MW,3U':F9C<)R1P0[-[U],EYS%S:W5VRPDNVPV&#]0R7Q%=B(;!C$.^:WH:?Y MYS+B(Z\,HPSVJ&O'% -C*X!W3*C3!O!.0/I1 .\4?5Z<&/7=FM]E?TNS987I M1OQK]LC?JG/P_.43_M/@GJ=INW-;-@Z3B *VYJ#,P%8&=:BMI "-&$#*<=5W M]?%R^ON#!,9D?F3U/0[IEV1UU6;/1K[7_LY>*Q.L-@T=.6+UVS#38D5>+MZO M\^R)-Z5 0NHG@M$0.IZ@$"$/0Q)& G+B<>1R-V&AEK5\V/#<5%2-34_7')'4 MK4G6D>X>_[0H#4!R[(D0(> M;D;Z7S!?@V_SC*UIN4MSR#?Y07V/H=A/?.@%/(8H\CV8B A#!Y,P9!'B//)T M%^2SOX0IKU[[GK,?);>Y>PZSUL1EO?W56"P MP6SM:&)NLU9"RZMKT M!DN#)G97NY--< WAVA-=YW%;-U[5 ?E*#HOL9B&BF$9!+""CU(<(HT3NU)& M;B(0H\@/(AQ=>M6UU9_6US_I'=<6N$OOMK9YU=NL7\[5J]YFU>'.PBW6$YR, M=GVUW=2^;@0,Q&'(782;)8XSAS"W&R0+52 MUC- MU,R 8=#3/>.2.[)"4O<5%7JP@:_B_GY0$DB]]"/8T;Z3 OR^D<-BX,9P$BUI ML $ )E5KPPDZU'47M&2^4_JX*F0GN;3*;K-E2F6CLE_Z.2NO6?8DC1+C>BG: M#N4#)S)?6D!I"B@D45_EZ5/<_^>:Q2&1[>KC,D=H>J* M,7.#=F7ZO4RV1S,6O+UC,W]YX"FKRI.A:D)5MR03C'!,(@Q=S".(G#"!L1NH M3$78\P6E)(F,ZJGLM3XWW5.GEU?H!MTZW6=.\_AT*!]C'YEJ4V%^3'I*9%M' MHWMM3WL<>DJLHR/0DP\-G*BK,F7I55%>J[+)O+I M/-R660+8N MBU(NNVH9'EQYRM8)I6']ND\4B/6VU\XIH,=7GF5IG/ZM3O[@&O3E9O6E!I @:.'T/' MI0BBQ*4P]C&&PO&2T$UBFGC)0FHWDHU>H<$0NHFZ:0LPLEU5@/NFYEY=HD$B M?87J>\:?@>O&OC(2B.M1B#R7P"1R&0P980EE1-7JF*1,QX@?P?_9]19-1US/ M,)CC.(YL.U@HVU$+OU>^NXYK*:7\Y^LVSJ"(Q\!A>^V"'J:POX_B'@,'PUJA MCZ']FYD\3_F2+*ZI["OGS&?_NB9%P6\=;H67LC=P!(_VW=#2I81FMONEJ M+HQ+T5Y7XU'UA3_)YJK%!A^P]M/E*TLO$_42H!ZK]+H3^DZEV\^_.(D2[L6] MT9;]#P[;R=W*0?HLAZT)LG.36D^G!3NT<1Y\?8CP/((R>$R,$48L$]*'^.W,07CBM< MW9H[9_J8V^3=P 1;G* &JE^!YQR;W1/9$DHS*\O00,*@ZS[DV)RO2 MTR-4NU9/WZ.# Y@W]Q/;-7H")^0.C2")U/U^P1.8>#B!.'%%(IS(CWW#+(4G M>IG;]-Z[7GQ!49X3?.JMTQ>S-/($;]\H;M78&>%R<2<3]L*33_0Q=5CR>3%/ MA"-W/'QAKO96]?J^W4ROYO0 Y.( M">B% 4,L\"ER _.RR-V=SDU]M>KTX@KIUDU_22FN6FO&J2*)E2?[)C%W$\/ MD8E"FXSXU]1W9\N\;Z52 86U7%7I]]>J^M[)\JN4@#^-:,;UX#LIO*PX?'?3 M0W)R5%=_KO.\NJ6@G8:C_=;<=-^)Q!)_-4F]L<=(MR*[C(R1]=$)'JS=WC@O M^,"<&7M-39@FXY0(^YDQ3CYA/M-N>79=E7]8OMSBM JL,4A\<_KMN)(P## 3-7.4V'0#H4BHG'D4I-3Z@ ((:H?ZY[A%Q_0>ZE] Q\OPU8,+H"/>%^/UQG9D+?<:PWI!\2*;[%LO5V0%W"L5*+)) M[/F21%9[L5HJ>9,"7P3,]83KPEC$RM:+8YAX*(8X"0,G$6'H,*-%H;N[N2GY M!M;H)9+-"@[8XW!D9=I5'-EZ>) >*^.617Z5*@1Z@FL61+ZL'D&KSL'Z4:6" MX.PS+W];Y1POT[\K;^^F4.@O.%U]RHK-19/$07X0.QZ,7=^'*$$AC!/A0H]1 MXA/F.<0Q.GTW!3 WQ:.R[:VWJ,&]!%N 'Y82+R]^!-+22%NU>-4MVNWB85S[ MQ&R@]#34F/2/K+.N;]Y^5#4HMP( !17\H,#^> 7><5*V;,&K7:)F*+(O ML"*P'M=Z.LXZ@R,KM@U>L %\=71@/X+&,F+)DIK2ZW-2W61$PZ%",GMYP+WR MM]*P6.=R/_IO^ FOWJR+=,6+8N$+-^!NI+S[(8(H"#TH59 '@Q 3X20."XE6 M_:B./N:F81J4RI%3X02D 6IPD_H,F]U:Q1)'8^N00WK>6*/'X*KYY31-=-F\ M/M-4;.T<"+P.:JE]ARPMGK("+\%]GJV?;%U [^:G\PKZF5>GNX3>C7WO&GK/ MHP-WKJWXHQMQ&)VTB$,:"-?G,!0^A2@,J%2)"8'R9Y0G44(B/S+:IW9V-S?M MV$:[^Y"S7.Y #P+'#7>AW:1K[CFM43GV#K/-HM0-1V'B%O>+6IS8VAUV=S;M M7E!+\*.=G]Y;0T,HOC[PY5(9;GYOF:(('*HB@P6@:2+%'7[=.N)R4D76 $1\#PBE.B7U!0,5>,>VFH6EL^GG7,P2LLCFR'KB42&.+0)L< M2T9!?W^3V@7:XA^:!OHO#CR&I^D;+DUI_H73I;2A4Y'2R@XI/O/R1MSA;]=E MF:=D7:JSAKNL/F)8"&DF$ \1F"21 Y'/*4QB[$+AQ<1)",>N64Z.83#FII[J M-*)4K@8Y?Y";%!6_D]9Y*JHSM!\!J814"3WVI30\S1\V:'IJ;/RA&%FW50=I M#=%',EP!=<0I=S]2#JGP6I* ,FL.T"S&!ES$I:V8@6$@IHTEN(BHHQB#RUJS M?MM6]KK@<4A)3"ET69) A)@+8T?XD%+* Q%P:;SQ19F5>*FG,;N[,]*,VTY' MC2NP=C%6L:FGRNQQ-++*ZKZ^7^FL2>ZHME@9__JIZFPN-TM;@AM<&FV_97Y+ M[0LO2EQ6=P7?<6F>/*:K2DF]DS_4O:O6U<;Y3#!L=QEQ2A @2=$*(QJ*QOT/3>5T&G-]O.$ZQD3 M(]$XLAHY6\^]E3VQ03UF8?=>JD8K\WZ^YU% MUU*"BQXVAEDA9]JJAW+6^4-J7*M>*[+2.(RZ! D MC8R$"Y@PFL"0"^$SEX:"&P64G.UI;C._#CBMX TJ-7R>4DV?A VB1I[X!AP- M3VYZ3G[;B4R/^GF=I*7GQ#V;H/3L"_:3 >XN'K0C41:1<,* !1PBSEV(6.++ MC4B"H(@XB9(@CCW/6ZSX/:YJH%M) 7@:B=;42.JI<81GQ&G2NJS3AFLO!>"9 M@;G8^WD)S_/PB!IS;S657S=]$V3N.P-@+N[4'H),\O+UM&2^P?E:_G&;TYO\ MKLC?%V7Z6+7W*R\?,JDTOI5OI(A_Z.YV=-J:FP'TM92@P&V>4BXY W=?OX = M=E"#U]__:+'9OQFR3>3(VDF'0_"[0@XJZ)8V228L#=HQ:74PV?;)1-SV7LKH MO6'6U+_S]/Y!Z:1GGN/[)JW2C:BR8Q0WZ[*06DSE,GRGDFQP]BXM:'UKX&/) M'XMK4I0YIN4B2K@G&!%0N(X'D1/Z, XC!#V&?-?%OL63;]&(VL##<"@4:B)DN; M"K)I1JXEE8K(D3,_7::UKOQ](Y#%+:9=ABU92&:0"SD'_)_1!#!(H<9E1 M[%U>/]G+U-?5NT0]<4&]\_&!Z2U'J\C^-UZ4:HM;5V1?R,^+)VXB(,5,.=E" M(76,XT :NR%/ I='@@SPKTV%?Z9>.17%(3=F%6"PQ$_%)1ILLF]!3R7.:F@G MVFHK>6 ET$'B[M:))'D![><:R4$E^A6HA0B;1<$-_A 4(D-62EFJW/*DB.2'2X5P_]\8P[ -;3K%L!]TII MUFT2>S[-NM5>S+._-.EB7]Y_HP_*N/PLY\:"(H)H3#'$'H\@BK" F :JZ#"2 MYIQ@2>!H'3F=ZV!VNKO!"#8@@4*IGP/F)(G=BM0&-6.K0C-6C#+!=(D^*!?, MR08GRP;3)4X['TSGY3(K?>% 5ERST?';]2)((X%@XD?)]@CGD",:J?2O0#(W*R"NP>>:NI*EJ<0,EST2#8I#[=Z+!F3Q!,&XG!54I57$]3KRJ!:4"=D2Z MPBN:XF7]*X!7#-QG&?LS72ZOP!+3/]133P\O1:KJJ1=KH@(W* =_IN6#>EOR M!I:IX%7FUFKLRPR0*@E2=K^JZHQ4,U%VO\ZK5ZK"["_J8Q#9:'N$K"]"1EWY13V[2_ MNW4OV=G)_I35R;< D[\&/\C!6BI4^.DISS!]^-%6#F4+WUEGHN5+VI\N&[,% M%O92-MMH[^**1-5QS=MV654,$\GUFXO MQX%'$BJTDH,,[']NZW3[FD=V(KN:"O\<7'E(:T T]PCCT3SVSJ'%<'TJOH=] MDRE@4X=HESUME.I")N39+RZDU?MKU18RH::CM)!1,Q?KO+LJ]NY:;@/6<[3^U5C M?] 74.ZP [P%/US+=0V!L7*S1.R$.FW#[]L-OSO<9](_CEL_38-!^XJMJ]/7 MTF<:1'2H,9VWAVFO]X]/R^R%\]8Q33-;,'&<.!81%'Y(( JQ!TGH)-!%4F\A M7Y5#TW*F]/8T-QVU=R)JIHC.LZFG>ZQP-+*ZV6#<.SD>08OT0*U?Q(/>+7_&W]'']N-GYOQBZ0?6<4VN"P:P6>E[5)6\J66HI+_ MM5-2Q^U-HC_.BK&9VNPCAD+B2>)T02 M2[',-K0=?*M)B7]C['K[3=PT3:[-!3,1<(JTOD'J$P)C@(A!\[ M1#B+9YZ3;&*&VWU.R[$]XZ+HJ&W>@:@F9O&;]_^V(@#.J.5U+7B2JA-*M1*+L-\L9>-J)Z2FVR< MQMZ8CSY$%]S%N8!:ZU=OAF!YI9LV%]!V_F+-)8W.S >\X(GO>X0AB))(U!=R MI.5-("7(#PA&#HN]6;A[9Z?0!WAV9^*V?6T/[9QTOCUG;!W5^ATX7[\7/^O_ M(2[5R;VG ]<:=8OL71, ?B=?73@^#RGQ"8SC@$)$!(;$)0%,D!<$Q$U"&FO? MU6PW/#=-OL$&%#C]JYE[7'5KU$L8&%D!Z@EO= /SE*2#;E[N-339CSBMDK<>GNQ%VC''O@M>)7YO;WN]795J^ M7#,FQZMH_OJ4KKB[8 E.1$QB&#$10,0B!V*7!C ,2.B&+HD])]$UQ,_V,CLU M4P$%#<2KS3^ @MN5@:&^GEB^ZUV*W2-K9Z&,F5DU?OSE6;1"XI+^3>O[D6O/!HPGU5A=F+U%$^BAB,(\Z@$P2> M'SG(%S$S\=)V=S?YEN#[T"JTLR?4DS29=7T]:J^>]GZ MT8))W4&JTC^)$T,4$0+C($15!O@8^RZ+/:-0?ZU>YZ9<&M!@N8-8Y7&H[GL; M7WO48%U/PUCGK4:-/J>^U*A/PXD[C08O M#U1&TF9BJHI.^MS6=?)C>I<]XG2U"$)IO_#8@UQNTC75D$4JQ]9 E[%HKGXTJ;&E>?JZ MFU;I: I_I&]TWQNF:G8I[VY$^YCT"Z^N;:O3TN(H+6ZQ.U.('1PS'' 8Q;X# M4>P02#A&,*21Q_T0T808)86X$,_<%%45\W*B&HJ9:KITD/0TUX34CZS8>F)4 M+%=ZMUW*9I)E:,EZ@YUIZUFAZG6;7M9$_YX_8S3I=J_?LCRK[B]C7W' M2;EP$T$I<04,$"(0!0C#F L'A@1S%XD@"IQP4UY,3YD:(M":P?L%PD96G[>R MH00BS,UHW<"&VPK1&^2@@CY1 M2<;AGX2>VI[W0$]H(@\LT[BMN-,BX@H<51??_W9&*2#^>B/YVI4;APOP?=1P MO'B K%5SO!S)L!7US;I(5^KH7*W>=4[KZV]IL4A\[G",8QA$B$+$L _C$'F0 M<>X+APO/\UR39>],/W-;FS8P00NGU"D2J:&[]QRO>FN'!;9&5O!#B#)6O#TT M6-*.YWJ95(7UB'JH9_H>'W@PI++KJV3]TG9_EZU)*=;+:TK5-:KB"Z<\?5:& M_=LF,L-QXX@@C\$X\0E$D1]#[#(/)E$2NR$+?3_RB[P@AV(*_ /N%O:\(_582_M1U),X@X6\=, M1GU/>^8TA):C ZA!C5R:3N/\3?'#(JDL8#$1KK1\0FD-H5!$D CY!POC@#(1 M)"0PBLD9@&%NNJZ=EZ$S';7'JN':->-6;O1;8&GDJ#R'*>&+WT&!IEI_K9=(IWR/JX?SO>WR8,OC" MG_EJS3](=&^S5=7BOZ?EP]MU4F'*)$+-E;WD>2J M[6$7QC[F,&&$(>'Q) F,?+8#,,Q-B30BF"F,(=QCS+P(!2Z,<(P@(J$#DU X M,. X(![B/@M]L]RN([,_3<[7*C\.R*<:!3V5/C*S(ZO[!GU=IG2#OZZNNI'@ M"FQE !LA[-;HNX!"2TO%$ 23+B,74'2XQ%S2U.L$VGS(+(BV <<+DY2>(D='D4 M!*&6[^)4XW/;:U2@E(_>]7X@/VYBG%_T\Z(M62_E9&25:$J'4?*3''@]JRU1G8S]'5?IRM*53&4(FXK9M(:/WAIE#-T\\EP._NO_*[ZL;L$U,D!=@[B/!( N$-'Z80V'B M.1@*)I##1>@&3*M(0T\_<],X6YA@@]/,QCE'IYY%8X&DD=7',3\C1%_UT&#) M,#G7RZ1F2(^HAT9'W^,3GY(IPZ=\D3NV,J^2A!=5AK>[![QJW++;,C,'MP!_ MD4V7[^0JM+67%C[BOB#4@0[W(XA"5\ X\ /("(DI2T*,?&_Q5'EVOY8X+T<^ M5;,HFLGT/11PO)G\AM^GJY6:R00OU<6%*_#GYD8[;BXEWRM9 %/6@E"[D^=J M=Z).[5BV7.*\ !)O?8(WU0&>S4\N1HQS)AW$6^\S^U]=1GX_]YO;>33Y5?Z>N9_'%T3 UK,-*EC M2\G-[K!Z2\^)U P514!QU/+1S. @>X0Q?^V3;YLB?1]'Y2,,HK6S]3&P77*G MX Y_V[G5!L6_GVQA1@JOB8&7,%L^X!$#X3OYL!H,?[JG5PB([Q3Y=%!\]ROF M;MT/4H)LQ55E33E?7MZM^5WVOJ[D>R/>KT0FOZ9J$CZ6NMY=@R;GYG)IH(,- M=L"DW5=FH(&O0B]: O36P[V([7YW[TA$CZQ7+'-LY.L=P-@@EZ])/Y-Y?@<( MWW8 #WE]Y S7I)T$UG 1OJR3&.X&Y-9Y6VD9788,8&U/?K8>."&G_G6IZX MSE^/@,>U_OI>&+I1?I9M9OG+9ZXRFPD>!'X,@]CS(8HC"I,P\6'"A?S+90[U MC:K[M1N?V_3?8C.]5-_BB[L8N0$)H8<\3]T^]B&)0I4M*?*XQQ+LA611JJN@ M(_.U[6("OJ[ BI=J X W&:PN8%#7%S.,E]&=+UM*)#";KI9C<:WY5EI-3^Q, M.1;JV'MRXADSO5;DY>*+,JNKK*.N_#_ANCYTF4H/X),$)AYU8"0895@$.*"Q MCD+;:W5NFDRE8$B+4JX*2_ KQ\K";/84^NE;]VGKGI6#R1A[CS6,!^WI>5+N MKGDI7VC-2?E?N_FXW]8D$_$D_,T,//W+82;%AW0E5X44+W<' =57A0/.W*J8 M !()1#P.I'41>- +/#^(HT XL5$^GS/]S&UZ;F&VSA0'I58^QZO>&FJ!K;%] MC@.(,EY;>VBPM,R>ZV72%;='U,/%M^_QH8Z'CRLYRS!5A?;>X1)O4O<&KA^3 M( @A=I%3!T\Y4NR>/OY[:^8/J0J MB/!#FAA 5S 1(X]Z =-*X=73S]R4@40* MME#UIGX?D]TSWR(_(T_\/6K #QN%KY4/')QE\RG/V)J6/UVN2#4YJO6H>KA2E4[H.Y6Z['M]$FVI*<-&6>H^ M/O"$E9-R5T7NL+YJOGRQ8KFO=T>&K ME++N)^!<]6J--X>Z?5MM51JM7>)SD7@!YRCV($'<@RA !!)5Y(%@+TR$(%$H MM$KHZ74W-UNC\6FV9\55O:X6[:*_IJ[@3L9U'<*V>)S&+3R8P@'N81UF+G 2 M=S8_L:M81]1CA['66P-R&K'_O,MN>:9B9C^LS-,8G7Y];CI!PEP7977D>9>! MV__=757+DK%QEI6:L51=O_3L1"Y2-//UUV1HC$U$W.<.2#YUI<[I\0]U" M[:48ZGGTPC#4"^YKGFUA1A_N%N7XUS5[Z; =4OCZUS5[13X;<&CMNN;V#G6= M;^==]HC3U<+S!0YX0*&7."Y$Q(]A[+D(8D\:P,P5*,1&H4][K<]M*=LE>JKQ M&;K=]YG3F_R#^1AYNNM389X%XI3(MM(Q[+4];5Z$4V(=)2@X^=#$N:P^I2O^ ML>2/Q8+'/G$"YD.YCR40^6$",7$X%)B$A'B<>$(8S>Z+("YSH!\'L33&2 B3ZLB#>-3U<1RZ M(C**0]?J=FXJN94]? NV2C3^^?IOP\+3]=C7TZ7V.1U97UY"IWD0NQ$[MF+: M]3J=-L3=B(BCB'>SM\TOHKW-5D6V3%FE""L-U^QJ:.!XKA]&,/))K"K6(IA$ M4AEA-W"Q"!.!?*U*$5V=S$WA[.&L[0+#'6(GI=UZQ191(VN101P976#K(^&" M^VQGFY[L>EN?<.W;;KW/#JU?76*5;OT]SE5 :'%-Z?IQ767X>,=%2M-RX421 M&X>$0Q3["401"U1=>Q=ZA!#7(6'L^T8QF_U=SDT5;! #WD VK9#E6&7 MN9%UPY:T#5KP0PLO: "?3W4[H-:Q+CO62AOW=CAQ)6-= HX+%VN_:7X@VMQM MKJQIS4/0UBMSTP4-M+_J'VRVY>\_S!PH^LB3N4%E;6=P1M)!IY'M=B8[@3P! MOGWJ>.K7YC.G%9"PR9#W<<4^RW'2G4CG6YC;O%*8].=4!S/]4\P.*2//N!;( M;5;+*R!QIL\I6^,EZ"3,:"+V\S%H7G8T.]DT[1>M/6LUGAY^JYQF^5.65^:[ MROS!WZH@]/SE;<;X@G)!G- )8>3Y"*($QS .6 P]@4F,0OG+0.LZJ69_,P.;(2L,&D8-NHFO0<]&%]*[V)[^7 MKB'LJ>OI.J\-V\1?%P4OB^;&^S8.B8F0"43E;EU2JC;O$8PC)X'482'S2<0P MU@I:[NQE;JJD@0=P!=9LGWZ:1KVM^<7DC*P9:GQ7FSP4H\1P=7)@:<]]NH]) MM]F=8A[NK+L?'FI-7#,F/XZB4B,W^6V>/:<2^@*)P"/"83#T!8/(=WR('1+ M*(G"1,2N$V.MD\*^CN8VZ9MEKP';6O V@$VMAC/\ZIH+E[,VC9TP@+ !UD$W M&Q>8!6<:GM@>Z!;OV!#H>=[<2Z"B%ZYI*?>$RY=;G+*_%2?N91K?0S!K=6X: M83\$J!$#*#G <_$3.'[M0M: M&NBYD28A2Y=KE;5PEQ#G_3>Z7,O^/TA1E3Y>U]G7;L3F?/:6YY5"_K0-^?9X M0-R$>="/5.9P-\(P9CR&;I@0#R=1X#*C4@BV@,U-6;;E:B6- AO)@/J\0$NV MJG38)H)!BE>;,A?$]UL;[_<$IZ--2MO:L5IM2?NLI6?+:=7C]F.5E^O<*0%,9[[.TON_^Y,MG_FNV M*A^*!76)@P*!8(2%*AN!7(CE:@ #/W3"F$8,T<0P4_T%<.:F\N540,:9ZR\9 M#CW%/!W)(ZOC6A!820)VHH!*EJNJ!">MRHVWI+H"_\%Q#FY6%NN,VR'47D;] M2\!,G7C? G$G\O/;:'680NW,+22(RZ,H0M#Q(A>B)&(0QT+:RI3'421MY408 MW6[_GG(YO6UEB;L"62O(Z(=4_KB"?SXFUYSK"(?<];@/ \XH1%$<0!RR$ 9R M8Y($E&"?)PNYO4HS]K7$>3DMXX<=C\?[&WZ?KJIDU@0O51&RD?B.0T1=Q!/H M(B> B$048D>HB'V7"XZ%PWRGX?O]2C,YHEVV-]V.>;K%QB=:;Y'_3M*3G62N8IDU%:Y/&HVRU5ALW M#PBYY5E3+48SUF/[PNRTY_L;_9",G=C=JFNPQ&.KGO-?#JCM]2E;WXWK-)X2QZ[J4!C"* M>0@1PRY,<.Q @7!(8HP<-]+*D:73V=QFG8(+[R1>L 4,%&*@(!N4L>KCN'N: MVF9NY-G;2=J0(F!][!E4 K/(XD3EP#ZNI.GT6!_>/?% M(]Q6:3!-TCKK@_6U,5V1,$UI]BJ%Z;XS,)$A?>!LO:S3^#_E_(&O"MF'NB?S MR#]E15&5 =J%4$8.]G$2>] -7*$.N0A,$)$V-B6((^KZ2*_DXL#^YZ:D]T"# M&C7X0>$V]'*9CH/>OG!$=L?WA9TCMBDC!JQ&KE[(F*VT@(:]3YL#"X//!A3RB$*8PH3*BCT8T8B M'\>1H$8)_K1[GIM.JX";:2]]EO7TUBC M$L$8.RQ$G"=>:)0]<2R@LU.Q"A^H XLS#':D.HIV3D,U-C*V&2,AF>-'HE MVWFF;<-\GY3%R./A\@3BU+=Y==3 M2_I=&VFG+8#Q9I*ZN$V5W^NI?7%[O;FXG6XDL'U?_M2HZ&FJ<;@>66'UW(_? M@F_Y(T>_%-_!V+B7X4]U/(=+\!V$:%Y^[VKATI/?;3W+)D':P5%C[ 1QZ,J] M9$9[QZ;%D_W.WI]I5.=?7(.'^+B).0NF$@]XXLAB@(8RB[YQ )DB1)A!EA1ME9QX$Y.TVH;&W00)ZHKF;W M.&JJR5ANX@BBE]84_R;GVH/J]7K$OO$QSSMZME:?SMKH76[D-%FZQXO?*T:"Y,.CWKJ5/DEJ?M#&,IU9VN*NK5K3E M=ZPN867F$4,FHZ&IW"TS/)'&KDALP:X(;8"#&CFHH5_5#DB+VM><,5LJU:#G M:?6D.25'RF] $Q<5);J^OR_?Y]71_/5C.: FT7X#RLB5Z4IM2"QH(Q@;@*>O%4?@ ! M8Y\YT,$,D\B-! ZTKM"9=STW1;)%#M(Z/*W$WT"NYH,Z,)6PU?T:PV-2@X'0 MLV+&H7=D+;-CM@G\D["!P@WV P6NE"5#K08_F_-ER80QZ'A2"\:\>;ORHRZ>^"U);6@;N1X ?6@%[@A1$FH+FY$$4R\V"51 M'/N:/CR[L+X;[7>E?E!) 'Y@C2P_ E;O/.ID40,4I.4Q[E:>KS=RKZ58K\!. M,+"33)6FW(SEN^U8-KM(*6"SDWR5(32X*?TJ0SG1G6HU"AT33EVL;B;=;L[A M_TW>NRY'CB/I@J\"LUW;J3(3>GD!;W-^J?)2FV1O! M+X2O>%[4OS;'!XSGO*J:"("!)P\SNNG^>RIW\-K*XK8^H(/YWO9ZFRXSW#I" M!SGD]ELWV[=\+C 1SF 3DY/XF>_[6*S3+$K%LNV+93LD/@PIRR@FJ4>#1"=2 MJM?VW$*AVNH[R[V >IN,/FIJNPA#+!RO9I\5 -#> )Q1U9*'WV]Y4A?^C$K' M/OJY1R:^6._'CF\Z)KTMR_2?Y5(T(^1[E79FP5D44YP1F..40L08AJDLD(A( MB.4U>Y3Z6F<0$\@\._=]R]_]LA-SHHMWC7%V? OO9O3F?R4O]>Z"SWN:]SC= M]\HWFX,9W,_K#]5;7]9K2/SO<7.O/P36KO$-NC9D]Z@>\:JCL!?>[+I<%JP5 M;N?N\H_%"J]H@9>[[/WU^V)-EZ5,>-J'6Z(\B9,PXY#Y*8$(>2$D M"2/02_V4!0GGR"=:)""6!9S;LM2DA\F]:5\93>X0VV.HM@J]Y %OL)K;%FY8$Q1&X)UPIKOK1CX@X M4R#US_4]Y]7O5;EYUJZ\K-CNV96M.>.TZXBS,\28,(TY# /)WY&$&&9$_)2C"(G1"X(0:U605^YY;A[; M&)>:Y->RSE>GQ/WN%%K'5N_V[MTG<%O754$V;1V?NI1T'DUNJ;7R#L8(34=" M-R7'N3$**_Z\-7]'7CO&/I5G&$M^#U N%RT I$2X#8M"C*?(993A. MM4K=*?0YMPG>DQ3L1+V6F7$ *_7'[XR>E&QL2]$XO"8UD5?*U7KVVHC;G9#2$KV D+]M)J> )# MB"GX!9; 1+ &2Q!!G(8:8(N0AXA$>N"#8;SJ?G<70HWAO='##J]^.C;6C"B/$79L= MJV"[HM(_0&U:&OVVZ[D=8IR 8DB??]B&OC?SM5Q]VRRY[Y'(OZVJ6U8^BQX_ M+O&CJB]SN86YV24A*92B BDK] _"*#NQU9V: >#&71H[F#FV+ IP@7](F2UY M-N.@&/DU \U.YM6,J];W:12>-O-H9/G'KV+$;W\6ZT62HCRE(8-A3$.(6)[! M-,49)"$EA.4XCB*LX['T&Y_;S&_JN$KAP#^D>)K.Q@%L:LZ$*1B.I[0R#OIE M[<\H;*LZ?;_I:8O,GU'JI%;\N6<,J3EP)5,JUUOJ\5NRKBM,ZT62TBK@O,B#F>">FQ7D^AH0MBHQ+W4Q+B#&B[ G]Q=CS$^?9"4>B MI47\\+\V1?WZ:27$:1+5+W&A1H@&OL\C&*6>\ G2G, TBBGD!/,@%(X!PM$D MV7:ZDL_- #.GQC4=N;=. MP-.6^]\C#<]T.*PEXQD+8+C.\>52TMVMV!=<_8O+DA5=H.$B1H#O5@R M/L0A@EF2,A@Q%/J1\(7S7&NS>KFKN:TD._F:,-LU7NI20 R@JK@06,'*M>5N MA6Q VD/6R6G1M(YB8(R3-$L1I"&A$$4IAVD>^M!G M(<$18GZ$DVV6Q8-&_JX;<97FW&$NQL,$9JK3J".:HJ] ;MMU396K$5:S#\+,L%*L=C6! MZWSS/WU>'O0%X4_\HJ^*_Q;;7C[P;SVO^OSV17?\/4*S7FZX,0=G; MYP;QC9=%-RA$S9_$KVF:WJ @ZEX$N.&!^)^;%?\__C<_]OY'Z-T .^)%5&Q9"7&>IO4:"BJ?FQ#5%\SC%M]P<52AH4)1^H[7O+O7&S* M&K[']YS47W#=_7:;BQE\M^(//ZIR\_CCHQ#@OSBNUKOP^46&A;T)@QB*W7$, M$4T()!'S8< (CUF2>@G32[2U)=GO0E90M[*#7,XY^2^Z MF;C61E'-MKW)V#BV@E)RL%?D!NR4A&+# *6:?8K$&]"I^2J>7#:&K_-FOPLW M=LEW?P;O&Q[U=L2E]D CI$P,>AU4D_P-;VN-B*OK4FU[2AN;;A/(G;M=[! M&_ ;:H;'6.EK1G;#"@N>B^@;JT#/@>WN;>)ZK,)HE=?.4L300X49EU&)VRP[ M%F.:4DZAG_ HH!F,".A#YE'N)4.Y[Q%Y\S2"Z6813K=\MRS1_*+ZOG M0A)=-CD^VBR4"DW-;=:V(H-&9DDT]E \->0[7[[>?^JQR@I'OM%#(P-9 =;A MF>X 4<<37Q7,+B<06*>BU(#++&%9H?WI\I;5E3U(7]9XS? TJ.%F:R_3ZH54 MB_B$PS26U+Q+"LB G8BT/FAK=\HK&CPA, M?*E8!N\U"D(;NHSA']V.7GKM@&?"U772GEU6,;&;N-5 HP#W,NEOF,)U@K)'6XN[G-Z=;-/> $,-T.7(988U-@!;A)M@9]27=!_YVP MOUK>(8RB8G.?<+FSZ7<+HXJ?W3.,OZ5G21@O%A]6=5&_?BR6O.IH$5\7>9!2 M+#X7Z.4$0>1S'Z:Q[T-"B+ =E&&$?!73<:']N=F*5D30R+CEXU0,%+^$X+!E ML("+8U.@!XGRY!]1?&#]%V^V$UW\L)_?E]J;9$*/*+.=P6./&5'QW?/R*R]O M7QZ;HVO-^@*7WI_;O)0,"?1"//RW!*D!:YP4'SH+#QJ>E)#BKV D-P?FG]#WI[G+O8[&F>"E#=#^LF(S_7E 4!U%"50 MSHCDSDR@3Y,P3G'BA[G2M=Q0)W.;O)V(-N+Z;-<5_HZX&SE?>IU/FT:J!$P)UFA9JV8&;H_5A6GY>-* M983/Q=_:APJ_?XR:"!RHZGX*BV6F=\1_H9 M'>EMVYCL!.](Z/Z!W?&?#.MD5%V=\X;FI>%&7=_NJ(\629(10H3#GZ!,;/P3 MS"&.XQCFG 4)PHABIK5&#GOE$T05UL_[>'H M>@[O(.P(FUI9P5Y8BX4YE$"Q5:ICN+-IBW2([!T)I%^51CZ[PX]!I[=_&]22SYY593L[[QX_%%SUEUW-W^41[Q[9J,TS5'NA10F.,T@ M"B-A.<,TAD&2!Q'STA0'>JSP<]%L;G:[D9"S&_!7)SG$70S"H_P+8$)XD$LB MI88HM/$#6;E]1M<75<%JKZN), MP(G=B4[:#S^?BZI-[=N*O.!ABC$F*61>B"#*HD1LJ2B#/LL#/_8HH3DU*.G@ M0%0E8SU].8=&TFL.=%R,JN-U^,I!^K=947=K9D_3_<(Y@P5Q?"#>>FD;D/#? M8Y$:A]C:D,HW^BHOB>MV[/Z,[ X/*SO]_;FI_5G5%N6+-I-A>CRG+:17;HC^]13 MO!-*$9^5#')$01@2'&&5YQ*A2(K$+X>;FAFUUZWC"A7:P M4>\<5U>K(NCK.%JNQ?UH*VZ[WV@,7>^W[0R?$Y)5E]#;VF';%&W:K;4#4$_V MU"[Z, A-:4DG/@H,NH5';-)_>_V=EX\5?OY1T-N*XR.CP$,<,H9SZ/L^@0B% MPM]MJ.53E,9AA,),K3208?]SL_(=H8K\C,!>!^F<[;4 4@V-Z Z#45&(B7&+ MM6-KK RSCKVU@KQ&V(W;$9@H*D<(N%GB"K!]TI%8(8O>^)0'X_.X'Q^Q1\>V M8G?,L1P,[3%H=KK('W.=#P*#KFA&/]/@0]54^_W&:?G"J]#!EF,+K@R4/4*$,52,DA[.-CA9 M!L20.OUTB,'G#!S%>RX^ [&V//*[_ %7C[S^NI$1A>_PLVSZ+O^-%ZO'#[A: M<7:[8G_RM3S$^%S^Q:O/Q5-1+Q(OSFB*&,P]PB$*\PAFF:0PC(GO!0E%/E:J M0V1%FKD9D;T^+]H^2LGS95H^5LOW@YYJ4 MPL@_8;EX@HK3XKD0VH@6Q;HA1-P(@?G3\[)L;N!M^=FV/HM!K_OJ3J;SP6WA M<>"16VO4[(K@O4RTH$4S&\7/2]X5+>P?/2T8CW',>0X]%F80I3&#.$L1C+,T MPCX1_Y>F.D?_*IW.;9WNR]Q6IN\)JW=0KX2YV@&\;20=+Z9]<6_ 3N"V8KT* MGMK'Y#H 63K^5NIRTF-M'1".CZNUWC6L??CP]/A_E7_)2FCO5FLF?CWBQ ME;F9DD9:69JO<0^%S&UY/EDWMA"H#20"Z\(W?G)@#SG'IF,4-,O\1^K@F-=.;QF:D_= M; &INLI= XWKB[=&H!MP6]=5039U<])9E^ >VZT&?!D$:ZO620<3KU&7%#Q= MD2X^J;?^K*MZ(7XG2EQDE[N8F[M[("5HQ!0.F1!4T;T= '-XFMN!R/$T-T!'>8J/ S T MQ<7;O>DM?MM/[8&&)YG:XXIMI[;"DV:NY3RS;G36[W/ ZFV@%\-C^/)?8R, MQ1J>2A!86L'/]S'I(CZHYO$Z/ORP01C-A^9^EO.FN7OQ=?R0I7W%4-_EN7"0 M5X\=X0%- IH&<0I#/Q?^.T(AQ#@1-H!X:922#(6!>K2,8J=SLP9;Z;;WWS)S M^:EU$!^V$ZYP=.WZ=Q)W1F,K,Y!"WX =P"/\#^:@:H2?. !WPBB3 M\NA;99OFM[]^%/1'%Y3!^1H\X5?PO!V$)CE?AI&4F\FB,S2U.PC"T'WWNG3,NWR45V-]B5BCC0B.XC0/$,2,.UU8+8D#*2 ?L'_+*MW2[Q>R^(&[\LG7*P6 M'B%9Z"6QV!*P""(64Y@E7@)IA*(8T82'5.OJ6[/_N9GWL>3L1@?0*-'4SP#_ M:/70M."ZHZ1FIQUB[]@:VX==V^ :@F?)K.KV/JGQ-(3FV$2:-F-F"!LZ4FF! M*_Y#&&'1:YNJ^+E5VWU1_KZ($SS6C(*-7&(S6_+UFBS?V[6M;3/ M7WDMHZE_+F*29('/039-Q%E-R[.'O MV*[%LK=YVE&:@HW7-3M-R!U MMLQ![718;%)1NQ%T>D9JIX"?):9VVZ/96M-;[@1,[]KLW&+UV*-;X;E8"-OG MQ-K&1??"O19]%"MQ^^)B0M>+4"PM4>!%,/>S7!8X MB& JEAS(\SR/21R&),IUPHX=RJJUVDP0O]RYPJ319\M85$N-])866FJOZ@$+6#NBW?.-NF+#V.IG;X698! L+3$N)9UTC9D M\N-%9HHNS5:9/[XWB2]KL7&Z+Y=%75"\_+XAK'@IUE*N+@#.HWZ><>K!F+ $ M(H]G$*<>@9X7<3]B28H#+M6[GMM/XXV_?_P:>-JN"%L\RB873367 1:Z( MN9H5MX^D8X/\QW?02MR<%.UD!GVAP7M.:O!]AZ^#2$4]W"S94,5.)S6'>D < M6S;-M^V5:ODDO&[.%HQZ,AO 3+H<(JU5>. MWC",A=ANS3^MGC?U^C-_X/8A_U>U7^5?]XUQ+K+9*(![D7 MQI!B&HE]CO D"&(^Y&F2A7$- MA47 '!L*0ZR4380B$@-<0:*%UC*('_8&8:S=28R!HG);0Z#ZN)F;\+EB1*&?.#.&5$QW/0ZWYN)D-* MW\7MM?*?*:.@>2ZB.1YJWH<[E!W;&26 G18&,H/.DM^BV?FDKHP9,,?>C6$K M9K;N]@472]G@Q[+ZCI=\?[8FC]J^X+K[;7^KN:7HXBC),.8AS*((0<2P#[&/ M?!ADQ N2P/=C69I2W>P92S(W"WAT1GD#=IK!O*R@U*T?L"!^+M;RH/._)$-S MI^>K,;V:^8"JVS_[F9W*WXX)>M K]*]ON^#O\!6BW /Z0>H%-$T[CJ#I.:274(OF-#Z@!W MDT@)$_3L13]H]3YU1(,)-&>B%(R:T>?JELD^[,-/871KX0#?Y7E!10\?5]IT MW:,-SH1K#NDQ#87C'Q"FLP_EX$89ODY\]Z$C#Z7I3YD[QEX3O^B\7TW MZNVI0DO\\U'\VWH1YAJ\7*KDUTLCBK6OU8< M?]@V#\L?:YYOEI^+G"_RA&(2Q@BR.(L@\D,,LRS((0V2+$Q]C'R&[)"O[#N= MFSEH)0.?FZ3-8@5,\C:5P%8[G+$-H6,S,4B<<@-ZX$[!E'(*D7-ZE%Z7,^%$ M.05!G0CES+NV#IAO*:TVG'TN,"F6S:'V[8HUV?4[=['WMP7/F,=3G\(DE261 M& MAQI@/X\SG(?-)3)A6A<9K!9J;V>JD!\N]B$TB0RD5N/:467.L3(^=W8W MVYQ#;\?D\]&8M%0F^UU1[^\NSZ7-X'5V4*TISAN?7)N!-WZ4;=BN_MGV_E/Q&] (KWYZ?8K3^&GU51 Y MMDUGT'$1G#4(@]$9]&EKDYTY7U2D?\9\^2'#4*A57;!BV9Q8[^_]/_RDRPWC MK$W0?7K>M(=U=[DLF"V,PUH,;,O>^7J^@:8$C!\D7A"'*KE'N<=9F.1:]_4.99V;=>E+>I#ZJ5&<9XHA5G.Z9C)PCFV>X9CIATNY1]-6 M0)5#2:<-N7(/^4E0U@1=ZOMS#Q6[K:I/*_90U$NNZLP=OC4W6]L(I>ZJ'4$P M[J>9:^_88#U4N*GLV.-WDNE^,EV=;? 2# .CY:2=Q\#(0SMJ:C+W[+P*?=_L MPA-7L"L.$:A?XD^_:]FW[C;UNL9-ZZ@6>I7',1P,KE$E=K606G)3(P(7.AT0W&6773" M[FTZ7HLTS(B': Q9F'@0193#+,4>]',_S],@S2.F5QOL;#=SVQLU,>^PH7L% MM&]^^$_YLVXU^//07F/[9VJJ=R:XO[62G(5X_:/A9Q["SI*)G<0BSL& Z=F; M*\W#-_["5QLN#V ^_!13<(67[S;KNGP2LW$L23_A.1,^<@0Y8AD4VZL49B%& M,$TX#CTOS6.F1;=TA2QS,S2=*BTG[589L-/F>CZ%:\9-S4!--!J.K9C!0#CE M7;" JK52V^:23%R0^VK(3LMV7]^DF;W=7ZK?Y=\XE=6QBKR@K>OX5&Y6=<^^ M^I'O4>+#* D11)D702P)JX(PR[''&$YR+6)>C;[G9D]O*=T\;998[O!&BQCI M65*=$5&SG(YP=FPI]U++,D['%<@9LD*ZO0\J=4S@.38RIDT86;5 MQ&1\*MN,XB[_"M%,.(1Y#!$)94(?S6":IC$, C\7YHN&<:9%J'72P]PL5"M@ MFS:O9X!.P5,S,U=!XMB8]-%P0+%Y475+5N&T_4GG_D7UCF?XY0?U[\+W-Z5- M*(SB7?CA6W.;E'OI_E/]1OP(B/$;<7,,',_"WN6WK:B=R_H:W7X?-379[?=Y M%?JWWQ>>,%L?O^#J7UR&(7_CC0][4BJWXZ_V.><(!9!S%D(44PH)#B(HT]^# M)$R],- BO%?K=FZ3=BJNI(M1J2ZQ] !W/^)W L)/XM/"V@^58#R9+ M:[1BIY,NW'I '*_FFF_K)ZV_*^I7>:3QKF1\$44TY-P/81YX.43(8S"C)(;< MSWF"DY#22)D.N]_PW,R)E*TYV -2.O5D] .PALW%-1"X=L35M-=*,C^GJE%> M^4%#DZ62GQ._GSU^]N^F5/2WC(GA7-^7ZQHO_Y_BN?F:>!P$C&4!)#F)(*(! M@AD*,201#[B'6)A&2BGBP]W,;2)VY.J=J#>@%18(:35GY@"RX_/4#EZ.9ZTI M5 9$]$-(7,%#?[;9B6GHAU0[9:$??%IO^J^K>G%?E6Q#Z[OJ.Z]>"LJW*40Y MR3(&0A)G5"S!) B06(T)5^);OM3!W*9\)V.3L-N)J97S7)/:;^D ,NWNTYW^*W_>2^V.PDTWI,J>V$'GW.; =_G)"ROQ/* MLY#P."*0,<^'*/F'O9)2IQ"U&CF[41L&PM N_W,^D&^]1=8_WVN,O M7,L))XGF6_(R'@9)@')95A>%$$4LACC+.(R0'R>IAR,O4$H<'NAC;K;AF.FL M8=V_B@UN#^>XCV\!),=VP "?*WC@3A"PP *W;_.-..!.E+K, '?ZJ+X_WQ%' M[F.#\/)]^82+U8)@3+(D]V! 8PR1[W%(O"B%(2)YFOH1(6&NZM1?[&5N$[PO M(?A'*Z.&4W\9S7'/W@I&CN>W'CQ:GOVH^E>X]Y?;GLS''U6O[^B//ZP_T;\4 MJ^)I\]3=$^5)'OLY2V'JQQY$./ @R2,D%O \BE$DYK>?J$[N@Y;G-J$[X=2G M\"%.X]/66'O75V:M7!:OQ2YJ>\7,/&QOLMEX5HW^##S_@&DI^%+L(.O7>S$^ M]>V*R:H4SW)^BYWF I&$!7Z20Q[%1$Q$'$+,_03F41:)=3<+HT K&':HL[G- MS:VLS6D1WPIZ U:\UBT#/X PCW).6,X@1R2#B!*!L-BVP("$@9\2'V5QO'CA M%2FGQKC?J3N4'TIYQMZ49ESV2C-:1%CM',,6:NY/,!LQ;T C:/-M?MA_FU\' MODWMTPP52"P=: QV->F9AHK2Q\<:2N\8)I+2'YQMEOPN/Y^(UD0A=JFMM[0N M7HKZ]2CQ*/9"C'/JPP3S&"(O]>11*88Y\2C&'"$_TTLZO5JDN5GZT:3+5IL; ML%5',V/U^C%4LV'3CHQC2Z<]*$XSR.Q!:RN3]GJ!ILVZM0;@28:NO9;UX[<; M:H$//RO:,I HQF\?OC4WEZ6KYPW<_A>#.\/,;NEF]4=@,11(ER9(($!#3R9#!_# M+ M]Z,4D3'*(Q /3V/;P#F>V$.8 M&15!&P%/IR":/1 G*H[V:=7P)JG+_@XN&FJXN0?V#@R&H_V:K=IH:9L-U MU$;:F+"FFIHVA_75%-^Q77II_=OK%_S/LGHG\UN;X# 4>(D UH-1D(AM9I+) M-)K0@PF)8Q8E8I>9:&TS-?J>FV4>+"74L%\T\H-& 2,Z;IV!4=L[.H+;L3VW MBK3%\DT7,7->Q>FTYYD4<[H(B7I-I\M-F+B6QV37>%W0VQ5[+^FN.?MP__V6 MK.L*TWJ1B R&[,%F=]%I>J3K".@ZJ M$Z0G\E65$;?EF6J#->RDJC.AZZK_NN$=BOBXFC/CN_P=7O_XN"S_ M6N\F0!:P*,JH!SG.&4249Y"0)((HBFCJ9WF>>5K9WT.=S2A!7*O:\&'SN\ 5()L-?">$NM/4Z*GK9#]%TO[-:!U_?9#=&SY=7K=C^MWV\(SLG.P+0= MPZONLN+%X^K=IJKXBKX^5'BU%JT6Y>IW7*PDX<)O7'QP_ '_7"1B\^^%W(?8 M\RE$.,T@#O(8AHRQ+ D"1,-PL>*/DD[N0>/&6UT$I?F8M?/Q1!!W=&L,BYKILXWR1%Z?D*WC_;@!G0I@JP/H*2&+1$KQ M@9#?XDVW/FBV;KHU>I[VIEL?DI.;;H,F#)/\V@#Z=<=Q^5"*)O]>U#]^E$M9 M"4V:V/-EM1#STXCZ#&8>2R!*F@3 %$$:123.XCA +-^:.C4K9RJ*@0G07(.OP5]2$[YDT@2"&O\$)5D6CXT"NCEMID.F9@:=#L-$N7"M"C?2 MU(&>[#?G"UGN$5%OUV.B7!-%R2EC'D80QK@0*;>13#+LAQ2PB+"$X1Y MXB]JF0&K9CO5N];:+N\$OSECQ;E7\%.>' [#K.V^=-'S)+!T^AX4A.G#\BQ43-HP7## MBXOJ3[S<[&C.L3Q>9'>K;W*C78FN9$#.>G\OA"*2![$70)*E'*(X3V$:I9)& M59:=# GV/2TN"%T!YG8"*.4'C0(WV\/WK0YR#[S3HHDST[1MVH.CN/=U"+EC M.Z>'MM-<8%,4;>V(=;N?=EML",[)WMBT'=.*O#)]B;-M4&*7OQ5&>_ M580.."7K92_FB0/#P*FD9AA"[B)4C&^\6?1G#RX:?*$+^#YW++)V\H4 M5L%H, -CL('IAJ=*OYMJP$8A/SJ M,%15W!R%H8YV_Z9AJ*K@C(6A*K=C9M7NQ):X:H^\A5O6QD_6BS0G//!3'P81 MQA#E400QRSWQ4\XXBZBLB:!S#'VVE[EMN!HAP5(R@XONGHSJDI^'4\TL70V2 M8]O3XM,*> /V(MHS,(,(6+(BY_N8U%0,JGEL#X8?UC](N>>\^KTJ-\_-;N#[ MWOG_5J]NGVK5HY219N8VMZ6XH)$7M+N@GL3@&Z\WU4HNFYN!KUD;R?&3%(L@ M.I[[%O#3.CE11,;H[&2L[;YY:ZNMOQ?I?'RO./ZW$!.?K^ANN^2+F'J$HS""+60H1]0*Q)TH0C"/" MHQ3% 8GU:@.XEGANADS*"',A)"@Z*4&%54]_IQMG-8]G5J/GV(+V0\0/SI][ MZLI0RK.AY%+G&[ /20(]O6^ U!Q(U<%6=_!MZ)O09P2::IQLT0HYEW=:;J*I MX#\A.)JL8^MTP=_X4TL/W>V8&\GO>564S!>K4.[G82:VMW$6R>TMAB1.*,R3 MB"/NQ3F.M#C8#.68V]KR=UX\_I"TA+7_+A>K?F-T%BS+,?=" J-44O!X.($DBBF, MF<\BSX]('&@%HP_V-C=;L!,6+*6T9KQ>%&@ HJM"X/!OJ:].%!1^^0"0>DEPY@(2N69KVC\OEP6M,\+Y5/B M!ZF/(>9)"A%&%&88<4B3(* !)6F6:67O7>YJ;I9C+RG8BFI.QW498#7S80K 3OW>D"_8*W!C$=VNB/7Y-Z0YHUSL538P=A(";86=T MKZG9U637G&80]&\]#5LP,%15)4^Z;U=X^7J0[JYJDBZ\/SOC4U7EBI>;]=%5 M5">WAJVY!)B"5;& E6O[,0R3"W,Q HJ98;C4Z'0F8$2M@\D^]JS^M'ZHV&U5 MO=]4;7*CXF0^?&MN4[A_;;R547W>'B$R/EO-P7 \1Q\JS)H[$1T\M.;D>=6- M9N)14Y/-O_,J]&?=A2?TYAKCQ>*#V#S4K[>,B4%>OQ,_WE4/Y5^K18$T04IZ\"A@,S&+Q=CN+Q0_[63S4YB3364&I[;Q6>?2ZPC?O5FM6 ML8]+_&A2]6;_]MQF[FDQEW?E:ET(@/CEFW95I,87V^M!^_^"\_L)KO.Q8/Q(<9$F*92)TR" B MG,,TCC*8I%D>)S@.D1ABNF6.5E]=3N^I]Y57?Q5W4)U@V,3U(96Y0QE^ 9I(DY>6DZ M:IA+\A[0P5Q\2']G\;[[!!K:^D*.B1BMLJH7E$0^99(E+TY\L;7((XAQP"#+ M$HZRW$>!6JS24"=SLV5;.<%>4-!*JKZSN CH^-;"!DR.#9T!0EH[BS$(C+86 M%QN=;&\QIE9_9>^ [2TFYS#:6-(/Z.XM# ME-0W%L8 3;FO.,#&R:[B+ Q7;2H.6YQ\3W%6H7-;BO,/FIZL/S2#U+A)[V7V ME]8!^]'+^5,N\O8J!ZU7P'+&YRX*Z-D- O6^[2BE0P!?,_;__VTZH)]UO?X53*.+%"/ /O47S:S+N_+IJ5PUK&M->L+Z M=E/_*"O)5;3@/L9APD+H>QQ#% 0YS)"?P#QA>8R\C&HF$PWT-3>+THH*UE+6 M&X!WR+)?@<6Y8.N>\M@AB$J4013&")&$4$M]/L?A+',=L\<(K4MHI M"K[_36=:] 5P>+HEB0#7/2) ?$ $N,:ZSHOR*,012:D7>Y G82Q9=.654YYU.]Q X'8S!M.29'0 MX@Y0DXOOF8091XHE5,Z,9I#@)_3A+LY2& MU_"'6@%Z,MKB)US]B]=-D:7]9^\(>;5EU 6>KL_$Q^E#IZI:?XK/)-7J>]W. MJ$K]*1AZU>G/O.^$Y)C2S=.F*7[Z>U6NUW^LQ%9B*5T 63]Z7Q@]3?(LYFD* MO2"3+%^^!]-(K-L4LR#T>,YX'E^S1!A)-;?U8R\FD')>:]F'JI12B/.,P"TD"A2$7VRR?)2S18GJP M*MW<#/>9RJ"R!D2_)L3Y2J'RJ;Z:V]*A4E/0J*J9'6[W(U!;#-YL:!TO"F\R MJM>6@K6#OILZL5?*]I9%9.W .E)AUE(G)E' ] =GFR6_RYN3/'+,WMC\9]T0 MCS_\P.V9WUU+XG@F!W?=5#[>9WYZB"<>PBE,HC2$*,@CF"6Q![,\S3,2XS!& M1#VDV*6H M9N8UZH[7'*<#KE.2?.IO0"=H?"[?PD01Z$) L7FH "O6=%G*-4%^'3(8_64W MRK@WRN*/Z]ZG\]Q].KC]9LKFFZGE-]-<08*R?#<\A=[4[UP^E\(@$@,62?^7UIQ4MG_AGL:]^*-_A]8_[JGPI&&>_ MO?ZQEK2I.[:S6UH7+^V&?,N8E<6IGP3,@[$L.8#2A$ <80]B'GAQ0(+4)TCK M6-*!D'/S27HZRK27:JLE6/$:%(V>\M_E;U1H*LLH-ZI**OMR1PF(=WK^I^8Q MIXOO0/'4\XU'U['O<32P.P6!T!"T*H)?I)*_RC]+/<%];VQ_D;J*#^!7L"=^ MW.OKAKW-X8#8.BEU(>*T!Z<.03XY1W79ET'JR7+9A3;W(IO779JC:@;*0!NS M,^W+)3@3RZW!_C2(V+"5M0F6:TMY :?Q]%F]I!0%-,QR4X8:GBY%14&]@TP5 ME>>-)GE3@UQ23&E/[:,WYSBACY;U/F^9UKP^!DEI-E^!SP1S> :^U/Y A2F M$_BXN2FG[055CB;KI:?,4T#?%VNJ>CMU\;TY?8/]Y,;WN^,=VU=%HU!!X MV.+D"8YG%3J7X'C^0=/$J1?>&H[]"684)A[W>0XI:XJ[QQBFQ(LA2D.6)#[W M(JQU8WZFC[DM+U_V$9C[: ?=#*E3)-5VXU?BXWAJ[Z6SS FJH+ZU/*?3'B;. M;+JHXFDNT^5']=>;NTV]KO%*NIIR$_K"J]>&@%2]&/+E%N8VAP]Y;#4+'@\ M-;XZV\'(\3SN"0FV4@(=S+16Z7%(C);J@68G6Z_'5>LOV@I/&Y&=&5:O;.G& M/ZW6==7<^.WO0+KKCWM>-;Q0 H9W/V1K"Y;P((\##^(TS22/F@<)90', AJG M&8]\CVD$/4PG^-SL4T] 0!L)]1,E)Q]\E8B&>0ZIZ_B&ZVL>=R4<>@!T<1#- MG?8N J+_W;0PS/1;T:++F^4W\S9,?+A9=W?1#FM0\38VORX!EMQ\QV:C]W?> M?D-%[QOJQ46T$1'@6?2^!K^(9@#_B9^>90[ L_A[73YM0R3HWQ$HSA] M_V:')>XD_5A6.2]J>62VK53=%:K^731>2X:<78CM N2G9;'NFYC*V7X6O< M2G'=>8R%XL'5/(3]_Z53V /H!IP4MV] :LC*@$(JO_:)W;S&W=(AX4R4FO1< MY[SJI*1/3+NYP'__/!3JL)_XRN>%_6"Q2C+4<1@$B0, MHC1+(4$X@5Z$XB2-F.]E6H&;(_W-;97=BBOV#S]U;US&H%5;Q"P"YGAUV6'5 MA3 *64$G+/BE$_>RNZ%MY16!L61^QWJ;U"XJJGYLL%1?<[3[6%^RAZ=6[]-* M[(V*DAU9OP\_>46+-;^O"LH78>)''LVHV&)D2/PGH# -< 8#GE&>I2%7S'9[ M*P7F9NN&=A2\$QP\2\FGV4K8_EXL;1K>\"N8P?9@/;(_.+<#D*RD+1!G]@); M,$"#QH2; $?C.)6[;UO\>3GVC@9'VX5W)8?9$GM?\6=!WVU-<8RIHZ7A2V<6U]>HMF>^;02WX!.9GO&6P,@ M2_96I<=)3:0&!,=63>=50PJD8B4TD M^"^.JP0C(_IGD::ADG0SGF9K#$UQAK MT@\9#H":?9H 5L.C= :@(:52S2!EV'I2V" M($,IIJ4"N@ZJ$]*?*YN;Z26LU*;U-!=^'"91P@E,24@@BF@&TR0+H?BW*(PP MSE&<+5;\449C/,SHPG6O@I+)R%J3<:+(!$3F=^<=_T9WFJ>#]^]R<=F3?%Z'&/:'9/(KR#,BZ&=Y?&KKD^]SBC]KI!9> M?GE&1J83\D*N^F?;.8;CF!AE+PPT.UGVPKAJ_>P%A:<-O;@]01-_E,/85E<5 MG7S:UZ46DZO]8\._M AQBJ(48>@Q3"$B,8;"!4MA$/%0T!RUXK)]AI 7IJW#1+3,;;V&ME[5>3=ED:' \_TX@8F7 M(H@R)JOL1 SZ7LA]84F3,-,SF/HRS,U@;FO6M8D61:.+Y+S>W;^+6=SQ2.YO M-6X:#KA]?L9?1?WC!U\R(#,J:OP3E&19/.+V+?,-K<$(*QI8M^,VQ09S#5KY MM]7R;L[O)_=NX0W N?B@>M?D%FVM.9ZV;*V!!-/:6G.(3FSM%4WIV5K&B\6' M52TV;M_X8R%)UU;U5_%E+A).DIR$,?19ELD@S0#B*/=AC.(TP1X.TTCI6N52 M!W.SDJV,8"\DD%*JF;.+( [;*AO0.#9$FJ@HFY4QU0?VFN+5UER('_96XF*# MDYB ,76V\WOT.?V#D"]UM92%Q==W^;;*^):*19'NXG(+ODJ 6>:X40/'Z#!IH-G)#I/&5>L?)BD\; &B\7EM 1W'D_H,, ZF\ @.5['.';_M24>XY6C='%RZX"=UM\NZZK@FP:-K:'\O1ZI7?TOV!^AI@? MYC#F@0]1%F4PS:($>B1$W$NPSUBJ1U5WK4ASLQP?GIZ7Y2OGAS4R>A&;QN<5 M%H9/[?ABVD%Q?I.U4P9TAU'= 4=?'TGM\;Y8;NKBA8,/>H%*=0 M*F28>SCJ'B8+P:B]Q@SVG5M.< TNU?X[<[-$>P;Y8P+Y&VTRU0-L%':9AK"X MWEI>1,0J4^HY[?2Z>BGH1HYAZ.>*0;A#!+"CB'S8&=/K(OS0:@58E M('0"?VZ'J5$+?)YZF#0X0:<"Z80OE M\N0F!UC\4G$.7Z7WVB?B?&YNQP'C8KEJ;C?$>B7?H\(&X]7K?ZP/GB[:/^;% M"B]!TU97D?5,DU*8AJ^T.7.5G*#/A=!&M"C6"2&B#*7AS7&3A-86":BMSV*0 MV?/J3J:CZ[2%QP$'I[5&]0,NWG=3L8WJ^+!BDGUK@1"F2>HCF/DTA0B''&*9 MR,J]T(\P#6/B*=4@N=C#W%;@K9!=8@L08C8$?NI!%^>!'%XGK<#C>.W31D8K M\&)0>Z/(B_,M3A9Z,:A0/_9B^$']'7'CY--Z@Y?+UWMR*FW- M;08?[A [X8&4'KRL_]:K/:N^D5:"='R#;1M-QQ->&4@'-[TZ4!GMTI4ZF&SW MKJ-N?U>O]9Z^*6G#0VY9>UO9K&.*AN/TS;F9B:UL&JO[!4C&)_YU:#B>YN>B MK]3 T9K1ES$PFK]GFIMLMEY6I3\W!Y[2GXGWG%>_5^7FN0G KM8?5]IK^4 3 M5FO2IVI.H39^)RU!)?S ZG+2#E8EA5 ,9K-0^U.-JT5 ME.O/;Y7')Z96Z7+:.RH^>6(P2!1*&*-)%L0P]G(,42I^(JD?0!1DB1=DOI?Z M=HEE[<@]-VO52;_-79/BSX19UM)W,FPL9SSZCHVO!Y$W(9RZD^%Q@4BR+^O6K +BC)>4>C3T< M,9AS3B%*6 C%@H9AGO,X)YABAF/-X+:A_N:V$GTN5X]0=/347"3)*Z.EE!PL M.]&UBVF/X:VV,EA$T;%%[R0%C:@W8"?L#=B+:S4^3047>Y%H@[U-'7.FHOJ9 MZ#*EUTSSC=^)1BJ\_+1B_.?_S5\7">,^PG$&68"(L"TOR+Q^+C% MB3./+RATFGI\Z4'##?1E,IC/.THVXGLY15X$0Q3Y$%$OA6D8,!BF'O8QPGD0 M^%J[7X5.YS;=!XF2U C=S = <5MI&5;7>\+K$=7?Q6E 9&L+IM+EM/LG#1!. M-C\Z[YJ9I-]QL?I_'UU)*E\EE*L*!^RE#$&(S% M#Q"QB$ B+!$,DC1.4]_'D1<:,!VK]:XTC:8G*9;"R^@Y5JR?R[58>\LD9*$7HU(V4? MT E/V,^2RWT8P53;+.E!9,DL*78ZJ5G2 ^+8+&F^K1\0\;5^1R)<4 M-M73JF8?E_A1-1SB8@-SLR="4"@E!5)4Z!]<+DD:GV(E<58/B[B,W'A0A!70 M'-L,-;S /Z38EL(B1F$Q"HJXW.ID(1&CBO4#(L8?MLYS\'LE7)]%'&4$^SB$ M*0D"6277AVG A1L2)F&(/"]*B&>)TJ#I<&X6HA'*&GU!BZGRS8XUI-Q?[5PF M)5C?@&$0;7(/'"#CGF:@[6XNC ('RFN0!QR^9V9(MDP^WSG=5,UMZ"V1?)>T M7F1>&$:)V*MP)%E1/!H(8Q*ED(5!R/+0"P*J=1A\N:NY&8\]JQ';$AVM=T+_ MIYY5&0!8S9[8@AH4M,RKO"Q45%XPY@W3^99X)_=;N8WON)Y42^2(.;8\QBD-(N% M.\(CF(;"JC N/*,\]?(\U#H&N=#/W S)?56^%&MYT"'I^(LV,ZC&/W5C3B[! MJF9!+(#EV'QT.5-"Q%VEX5\Z*2_'?YH0QPWA8(\-[FPO4U.\#:EZAK=M\/'K M(].^R?BWN_R/=>N[+/(@\4(L#(*/LARB((TA)AF%41PFOI]%7J97JGR@K[D9 MA8\'<6@FUI-B R_W^I!]ZU@@*RQP*4;?$:6TEC5M*-T^;)3YF4',3 MEW8!, #/*G_?1FUU5\T6.LR2@7@[] M,&+"Q? #F!%$8)QY$8Y\0GRJ%)>FW./<[(J8!-7FZ()%SZZ,@ZQF7:Q"Y]C& M;&6%52LLZ$E[ ][9CF]5AL:2-1GO;U*;HJS^L651?]'05\%%]2=>;OC[8DV7 MY7HCOK%]:F2:MS+4V]SLBA06--*" M+\*P;ZH10F<#?!6=%ENHN79;]H#U)+6<>JH%BBW79+"O:9T3%;5/W!.EETPY M(3ZM6%-,2HL.HGMI;G->O:;6J?[C5Z;&JCN>N&=H'VYD5'OQ4K -7EJJJ741 M@2M('[8M3'EC((*^OO):\<#_O MY:ZO7!U2S=_CQFLE"8M#%D4P3R($$0DH3''.H)=%* T#L;8'B<[R?:4\LYOL MO 9=MA#L^!3;^ANTK^+V^/*7I8R/U%O]KQU -?]@PF%Q;(@:3<"!*EM>J38\ M]::AFI)UPO#/&] I=5*FH]7+GJ]A"6!+WLBUTDSJKUB"[MBCL=6LZ>7Q&C\^ M5KRM+WR7?^,O?+7A34WIO7./8TI\S#*8\)A %& .<4)#2,(PPFF.LS#6*O6L MU.O<;.RAT'+F=F+KWB:K(*YZL6P91^=WS!<@["K6 R?[*RV4K%TLJ_0Y\1VS M!@RGU\TZ+QOF-^[*WM^^X&(IF_Y85C(!8'_)_7F79X<]Q)"7YI EH;1)*(W7_0RE:E,WESN9FQ':RZD;6#."I9HQLH>38]NS$[!U* M.SJ35D'$6K3-0%<3A]R,*WT:=Z/PCD%%HG=E]5Q6N.9_K/ VZ^AVQ?XG?L:K M+K'["Y=%%!99FG$_"ABD&><0B9\A1C&%7LY9E'I1FJN5/M3K=F[&8R MY%$WLFM4I5%'?MBXN,/3L9D9@1)LR2#^T4JNZ$QJ8JM1VL<)QA/5\-EB*8-+ MZ0[W30_W+K]VO1\ 6[5OM'$;+'*CWMITU6RT-3PH6Z/_MHVR%N_*[WS95!+M MKNHME+>XW.;\S/A@=89W;9DIL%5G&\YP3=&+ <#'[T%=8>WR8-'A-1K5/"4\Y2J$72X]3.IN$QAQF MPN,,/4:#V M4^0,/6IZ;-=H)!Z1TZFR!AW -6Y&K0'!L)A3UU^($/*NK$1?@ M84N3<0">5:#/_7?^ ;/#HB_EBK]^P=6_>/UQLV+K[9[/]WR4B7F7>9X/$0E# MF 59"GD68)_$*/$BK'-,=+Z;N4W'1DKPU(@)GC;2ZH%%V*:P M-&1X]^*+^B&>D)R$,B2]+2VQ7F^>VMH11Q$]+$E90!F'#),((I[',,-A (,L MHD'&4)3XAO$*UF6=FZ7?JBH#A@:JSFPU!HW*8*MS0_9Y W9J@Y[>IG$0]C\/ M-?=S)H/N>,%R-]Y.X\PF&!SKX1SV)7VCX ]GD%\.%7'7I=GJ]0ZO?]RNF/P? M29'[@I?22[FMW^&J>A5K99,WM0BCE(=(\K@PC""*$84>IW;BB*E;2[4J/R![^766Q#4$%B\;B_E&L[E;\OSBN M=LF="Q9R+\U3#&F2YA!E'$-" @)Q$/(,^4D<4JWSS>O$F9OU>K^1J5R@7''P M*N04 P.67)@'W6^ WH='L53QZ$T'P7$TPXH-L_ M-Z7(;X!4&PCU+3)^6T'>%A/X=<),RQ!N!;@3YG [K1H:XX:@ZDSJ_([',@U9 MF)&4RLM<+.QMD,+42RC,69QZ?BZ9_[02O$9[G)M);6F/"KSLF',U*4+'$5:T MES9Q%DDYC#C+ T(3PCRR MK06E>!*JT;W2_#DL!N78\NP%7\OS+EH^/94KL&Z.M*3#T.;QR\+J33%UW;Q] MK;%1/(2TC?=$IXH-I#VY&W@[R4$K.FAEOVF/'2T2IYM@9NNP3Z?K:4_O#$ Y M.8XS:][4%-L&CN2!SZC8CT(/)1PB3'R8>6+#RC*6,@]A MYNN1K)_O9FX.TSM>U45>R(U-8[=8*^W_60O)M[]H[D@OX*MFE*Y'S;'YD0(" M*2'8BN@@,&<8!4L&Y4(GDYJ.846/C<3(TS;"]AL:#WL1^V>;FYT-&(XB;REP M+$3HG\=VV"XX@M7UH;H&HI,$XP\"9BD._WP?;QB"/ZCT1A M%J[-"Z_P(_^ZD<;K+F\J0'2EZ-9WFWI="W]6>#P++X\PQQZ!5+@E$*4^@BG& M.?1QRK,DX3A-E,+S#?N?FY7JY#3?0NGBCW.6>)@B2#P2RN#L'*:AV.OZ$?.\ M&/N8!O&B+FN\?'O\=U*XQQ^"OSI%(&XUZ88#E'OAIQLE-;?2(?:.EY*MY* 3 M';2R[V)JUJ G]PWH-++GBAHB9\E'U>U]4N?5$)ICK]:T&7UW]Z/0M%SQ;YR6 MHJ_7#S^?Q:?6,4%]>GJ61XAB)]C0>;]J.[]&C<]MD>F4 %LMFAJ^6SWDG#O6 M1-T?-@-_W#MVCKMC Z<-N0.'^2H,C=QGLQXG$2'?T!3.K\(T_MG6I MN@[*E>Y'/-#"C#[CG91@+Z:3#UD!#DN?\E!/DW[,"BH??\XJKYA]T%VT^OJA MO*7_:U-4_+XJ11_UJXQ2KV]73$:%/LM'%@SC(//# $8!Y1 E"8&811D,,<8R MR9QQFNE=UJMW/K^K^OO^1?US)_=-$S[>2-R[KZ?XN:CQTJ@VH,;XJ-D?RYA/ M8XZV0DL6_$YL<+_#O)'\I@%\)[P]"Z4/F"6#I='QI/9+'Y!CU3K7X'=_KNW+SQB[Q,MT_E9F "J &E<,PY(9*Z1?@Y?R[NS3ZEV[9KYK(N":N)X%XB1FLLIXFA," MD2Q!D=$,P20)4)I'/J&A5M+T>)=SF_)[B<&S$!D6JZUOH1FA/ ZVFC-A%T+' M%J&'7G.)+M#KY+T!K<1M\K#%&&5E>&P%*8]W.&V4LC( )V'*ZF]:-3A=G%D2 MHC!/8R09&1)A:Q(J.;5\F$6QGWH^)7'J6; U\PSG.YHH\--NHE@Q,UJA?-: MF]:XP+UQ<1#9IP2*6Y/R%G%^2FHK&A([%#&[I/]^K%:OW.3ZM]?SQ !W;>\VG51B1^^,DK6JS%#JF@?!$)U$@<(1B3-(4HX0E,LXC# &&: M^ ')/:057CRU G.S=(WXG-V<1J/P3FSP+.5N(E%8N5SB:@W$3K6-2M'-OICZ M:U&SL'/^!AP;[3Z?S&&T94][0%Z'B&^KD7+HK^.NN+P'WI/?EK1 MY48&.[TOUL_E&B]_K\K-LWA#YCR6J[I8;?H7*HN8Y7D2T@3F+,P@RGP,28 R MX?,SCX9>[F>QOV@+ZGZO<56K+;%3JJ!C6H\5<7@2=XE?YP80_EBL5O*V7%ZB M-!+ID^Y,]H$@+R99E%%(@P!#%'$.,?$P#!(OSN.,>@':?B ?5HI78//^/+9J MO,G'P>4%VK_!9Z'F9LUUH%T?PPM%;L[00NU5!>TC;?[MP3\>OK'# &Q! T* MS9M]''HA"W:YIJ8>/HN459.)/CGSU=2#2PQH8\ M*[8/%=M&WX QY>(QX>%?]<,-FDW2^MVR7/.'\LOJN9!3^-.*?15CI1IV,-3& MW([.I$SJ,0:#Z(S'&M@"QO7<:\0$C9SR#*C)\*]+\.7K_:<>'U+CS+#BI6"R M:,D@D%K1""HH&44E##8\672"BGK]* 6EY_7+7[V3.0B[H-^0L"2ED0=)*O-K M/2^!6492&.=A&*1QR#%2FOXG+<]MOC?"J80 CP V/-FO@L'U5D85 :T26&>U M-2J!==C29"6PSBK0+X%U_@'36_M_;M;U-GCP_-5>BDH;\\N94K1XZIII:4RY1Y+_#S)8$3D&0\+?)CZ802)A^(\21!&@=8-FVN! MYV8FFM ,V"@CZX_O;LY?]^UOR1H#F,J M+NLKR%K%[\IU#7HZV0QTF 9X:[$2CL6=.-QB&O!/(S8FZE=O":(R;+AZ7?SQ M?1%3E'DQ\F"81!PB'HCU(8@]*&:7'S+&4IZE*HO$OLFYF?$_OGYZ^/ >?'^X M??CP7VH**QNP4QT'7+KNX=;"=+_LC4NOJ4FF_ZGHVPEZ MYB]F7MR.?;8+'W]J3TWIII(LC5LJ1<8\S(@',^;[,@13[+$"[L,,YQ3E.&9> M0'4\,95.YS8-^R3R.U'U7"@EK-7<(-L(.I[29\%S$(VI XLE1T.IRTF=!1T0 MCA=\K7<-V1QD(N;GHN6(*/CZJ]!*-"_3)BF.PQ C'Y+0#R'R40*)SXE8V]/8 M#[TH]CC3HG.XV-7QGQ M2!J&J9;W,QO-YF8$MW?S3=SN$C^OSX:#/TH] !.*@%RZ%2]-B8M)HL(G^^34 M3/5LY)W1RJ 21SX21MZB WKP= 2_M0!H'V3>8C087]X@U922ZE5CF3#,?.KQ MGRK^?#*]YA68/O5P:D>L3RZ@?FR(\$^^\G);PT Q&.3@I;FMFD(X^/7#G>(^ MX12#\9 /8_4=V_JMYA8/$BZJ:Q2L<=C29-$99Q7HAV.U$!CN9-?>:"B@K[@+M8N=Z?W8,VT%Q M2JM$T 8 V=K */0X[=9"'8(3IU_CU3?(+&UW#-L8F/>\_=]=,L>'G_2'W)U\ M$]N'#WG.:;T@.$MSW\\A"[)W2P# 7IZ2. A@T' 8$2Q#>BB!09KF)$H1H;F6 M&Z\OPMR\^IVH .]DU5NN#(9!;0?SB]1 > J_@CWL M>RV<<-R;@VC):!L(,*GA-0?HV'A>T9+1L?X]+[_R4OM@O__:W*R1/."^_W ' MOGZXTSK=/X!"Z7S?%(4)3O@[ .P?\I_3V?28_Z"M*0_ZSREQ=-1_]A$S'Z.] MR).W?^5*^#CORR=]12&+.DR2),\XC'3?B;"]S MFYM=E,!.2O"/5D[%;,QA1-4\@JMQ5#-XX5W M^&'#-(%FU>:?Y19F&^WW^JX++$U\WTN(V$9(UC:(?$G&Y:$ 8A*@ &=^G$1: M;/!#GPC+OIQH@XGLF7P1!;>"&J)8_]K/IF'"H'+4U'FG).@0.6E+,/ M7!$^?Y*5>QJK1XYC];;%U!K.V+N\5^7AGHL/1BQ#:9JQ+!*>?D)\#Z*8Y##% M/H%MU$^<$T*UBJZZ$W5N9F,K<,=D7N:2ET$6.UE+H9L8]N=6CK1B$ M,(LQ=!V[<'UL^>X+N-]^ ?UR-\VE&+7J^[@?&)M!WVX$G3Z*VRG@9\.RW?9H M="#[NQ"N2R-]S]>T*II8[WUXD_H9[4A+X8P@J M'>U:!&^"T]Y+N%F.#=/#QO14>*SY*0^*%54].CM6?IE:WDTH%N90<]X6] ([X] M)]H(-4M^L5[?D[JZ1K <>Z]FC>ASQ7Y8U?O#S%TT\_<:UYOUPL.$9=P/($^2 M'"(>IY"@+(,ARY@OSS5BK$0U.=;1W%:15M;MB7LO*+\55YU8=A#=8=-D$S/7 M%YJ&<&FQT*I@841*.]CP9!RU*NKU*6N5GK\R=?'3BI9/_'.Y7B\"FK(,"5>' M^+%P,A/FP30D#&99G"81RGS&J%'RXKX/+2,P00A_*QF0P[1-8ARJUZ(,I9>D M>11@!E%(8H@H\V$6)Q[T?9PD*/.(\.?UO,8KP9S&-VRS0?N@*A3!4095SJJ^[>307@]ODQYZJN+%!-$SCYH9SF_\A:\V MO0AF&K \RT,*@XR*^9YZ5&S-8PPS+PJXAW% U5A8+W4P-[])+C]=25*Q ]G/ M;\7;WXLXJLWN:]!Q/+6WHCD)WKZDMZ4Y?=+\I!/ZDG+'L_GB<\:!747-/Q"[+D;06>CYMZ4_';)^EQ_7?S?7<9YKO/%:$HC2B2FR7)"YL(CRGS MJ0=QX*64T#@)]?@:KQ%F;B:BU04VRH"]-J!5YP9\Y?4-Z.NSI4BX 1^+-14N MQ']Q7($OPL^MY*9#M]R'E0%6LT=3#9MCV_4&(V82RG8UU/9"WDS>S#41C! M!'EQ'E J_C_1L"T]MQK_U#R45P%?S6I:AM2Q<1Q ML[&,$DTAN3"0=5T59%-C:3KK$MSCYJS,A3'40-!6RK5"C]/F2:M#<)+[+_QTJT(WH5WX;H_G;%SI,+WHN/<%^:M8E- MZ2@#%QG'@7 ^?>CQ+(8H]A'$*&8P)9AD&"'$N:=CXIQ*.S?CN%6V/:#B/WE% MBS5O=K-M+&+Y;'!@Y7; UZGD#MEKN+T/5JD9U#!NM:L*7;;^! MR^7=M>WS)$-AR;*[E772-6$2V(]7DVDZU8]#O']Y?I"NB&JTX?;YV1EL_ I> MUC(^."^KIV:Z[YFXU(,*=W ,&U-3)%S;O"$0P#\:<2T%!QYK;Q0"N&MDLD"_ M8['[X7PG?S/,+-F>??^V612%#(4_Y'$:D'NP30E M41P3' 2!EENE*(_%9M/Q)_+A>>!D.LQRG$&?2/ 0HA5F41! Q/XZP+-\8ZI51 M.>EB=N9@*R'XAY01-$*:6H4]D)JFP @>U_-?#QES,W"BO.VYO^_@;2;\B8(7 M9_GIDX9UORFM>.]4>^%QG*6<4YCYB:1_27R8,I]#RE+BQ5Z$$9+SUU1E/',B; \X-^>"I\GM-S=>F2MNVW"4/A_GX(7L,3]\J?2NFK2I+6;VNX!\$U%(M"E(5+> M?MA (&D3;&-[[$^$HL0^YSOB@^-SB[+8RZ5H8+E(:R..;HH4.HFD%'TDI;R: M 6?*9F(T8]<2AHFI,X)@.,M(V$H?G#JG3RX3R/Z42BT ?CK-4L_*BGX3>B6X M*SX5:W+:Q8],?U=%ZZ)US3,/_$!G+ C&.$ HQ12$4019'8L+MOF!.^DX>?=SVQMY5[=BGG\]-E=(UO]C%*X,[-K&VTIM*I_"\*U% ML:[($T'UGFP/]PUYJ=L=_C1Y6= "<2FY9W)'*D+9LW"S$TUW4%E[;8^"7@=G M4,+!#<\\/==C\.D'57@R?W.EV9H>2\QG6I@V@F%J-X:_5,+&$A"5DCN4-K26 M"+($CFG2R*)U%%H%,SY]_]J29[O/0_56,"J52N"ZO,+:>*N3U.&BLGEY+\6& MWSN&UL[+U9MUM);B[X[E^17?>U41GSX&7[+J522N=M94I74KJN^X4+,4ET M4:1,\B@E__I&D&<>>%VDZ__#/?_GC_4MP?_F?__(/__!/_Q? __GI[:L??E[$DT]Y MOO[A^3+C.J/Z!\&$//O8V6^7_^BS4RIP 1F] 952!*]D H.>RU30I<#_[P__Z+EF*F<- MP;@,REL.(:0, GG,KBCOS/:AL^G\[_]8_PBXRC\0>_/5YMM__LO']?KS/_[X MXY]__OG7KV$Y^^MB^>%'P9C\\>S3?SG]^-<;G_]3;C[-O?<_;GY[_M'5]+8/ MTF/YC__GMU?OXL?\"6$Z7ZUQ'NL+5M-_7&U^^&H1<;V1^H-T_7#G)^IWM.):+67Z;RP_U[S_>_GKEE9^7B_5BAF'UU[CX M]&/]Q(_/%X0(HG7S;]??/N=__LMJ^NGS+)_][.,REW_^R^?E+$!5*C.2U3?^ MC^T__/'BQ9^7>45HV3#ZBGYP^N_K6_8@(G]=YWG*6\[.7C%;Q"L?FE6Y+L[_ M)3TTSS8_G:0\G6R>^BRLUDN,ZPG/$7E6#A@/#%3A$9"+!(591!NUSZ%NT\'D3VY;==I?JR0I\MXP^+9?6NAJO6@@N:U:B-R__$!?;*'Q_WV"2WKB[-O;_'FQ7$\2%R+HJ*%828;0E00A%0TRB"*4]CI+ MU43YUUZ\$PY$_S@X1)Z=0.)-7DX7Z<4\_4Q;\*0X)U,N$I25!92.M#,JC9 - M5TQ&$H?C30!QY;4[P4'V#X?]9=D)&-XO<;Z:5L&? MJ06Y2]$A!%C 1H33PX MDX'GPB33)1=OVNP.U]Z\$R14_Y X2*(CH^+%?#U=?WLYG>7?3SZ%O)PX[55R M6D'BG,P;XPJ\U@ZR0V/01,WS86BX_L:=4*#[1<%!$NQ"^V_SAVD5PGS].W[* M$\V1B6PU).\2*.$"BNL=*BUDVP5(GJ5$*EB=_O5J.L]\$HR3W@L/W"A+!I)I")&L MI"^"*9=9#CXV ,@MK]X)'+YWOEDNODSG,4^8-%*P MS,$P2^&V-1H\^5+@G4".*@N?#DMDWO?VW=#1<6:SF6A[@LB;Q6J-L_]W^GGK M.L7H16+$15&!8B\?B(OD0$<7I&.*97=8@O[N=^\&CXX3GHW$.C(XJM5[MLRX MH3L;5E(@0^>TH;VP& ^!BPA2*Y^*9-9G>Q <+K]M-P!TG.+<6W0CJ[R>C,[> M?%S,SS(PP1CZGQ @9=:@8HV=#->0A5(J(),2#W,KK[]Q-]5WG,H\2(0CJ_]= MCB=+@BX7X?UT/,@72Q1Z20L/VS57W_C;NKO.(=Y MD A'5O_[)=;JDW??/H7%;!+)54'MB>7-3D7>"WC4!;CUS)>@E%#N(-U?>=UN MBN\X;;F_\#I9]"^^QH\X_Y W^5:12V16,DC*$OV<\.L+,HNPH'G)\LJKNT)7(4TZ>!D-=&&*1**@&R*IWTLUD0(EQ!# M2"IIK8Q.!T'BOK?O!HWN4Y -1-L%1'Z=T]-('-,O^6=?\O(# M;7F_+!=_KC\^7WSZC/-O$\ZE%3$C*&T%B<1;"%P;,FM8*T*)V-PBRWCKRW?# M1?=IQL,%VP4^WGW,L]D9]3%*[C@%310G4=!LR2L*3!G0A>>LE+0\MO U+[]S M-S1TG',\4(Q=@( (_U3+.!;Q[^\^DMQ6KT_6]?Y&C:PG480L#0FF6+)VBC8\ MLG9< =>6FX*!N=1B[[B/AMU TG%VLK&8^P -26Z)LU_G*7_]?_*W"8N%"X\> M9$P43?%Z;*]+E9(76@;N36R"DZNOW0T:'672,11H,HB,A&@I+?G,AH.S1F@58C'ZL.#CKC?OAHF.DYI-1-I)M?X%$R_I M)ZL)YJ(H@A8@BRZ@D'9(;Z0"#=0=)SE;"'0KC"QO8BR M9<)RF47)$4KR>IMG<=X5T I1)[0\E\-./>Y\]6ZXZ#C%V4:H(R/C&7&0-ES, M\,,DHTB86"8,TQ:H&*'9D_]3$[-2(FV)T?F#T'#E=;LAH.,,YO[":Z;U?_KQ MAO!>T0\.N) ]7RUFTU1OW/^$LWJ5G$*LO%Y=I7S72]IW/:S5Q>V=B#WP,O?) M"CX@?IYLZMZJME^7E],YO6Q*JWZQO;YU#J4L%*8 M,%J[((%S'4%Y3Z(04D(2RBLG7([EOKUE?\Q<(V18UAED_K5:;Y3&@3'53Q MJ 2PZJXK*01Y?HJ^,MK%$$-MR] 86/>0,T[CB^'@U$KR'8#H68SUGN7J;8Z9 MU@6Q]'M>G_$2K I.YDS^/A.@E,G@8HST1U')6-T MT1@.)WO+M@M<4%2;W^/7? GFDYP]%NX%2(Q$>C:$ZR0#I&"$DL8')>_+SNT' MD%L(&:?3QI!(.53:'4#FS3)_QFEZ\?5SGJ\RN6VOUQ_S\HJP)LYB4-Y%2,8C M[:V<5H&5#K353G)=E#/W'07M Z =R!JG9<=P<&JMB0[ =97XX$G-0AA(OAY_ MA>C L50@D*N/G 27TWUG1P?'[N/T[AC0H]E;NOM#8['&62.[L_BEIC]#SB38R>N8C"!WK35'RUK P!U*Y;!U'K]-]75[V VF1?+ MM$PQA&-D\RXHZB%N:@*@AH+O $:O:2O%>A_M5<95?EM;QK\N?ZRVZV(B;"R: M24Z.7963D[6?"3GNM+FZ$&)(\:*LL94!NH^@'J*E-E:HF=@[P-#VX#??R@K* MB%D%LJI&UZ9)5H+3VM=*("70\!+=?3T$#PUP4\KD7> GDL)@DMF ME+.LBV,6ZJ *"BE)+B$;!/T/QS*[SE(S!U@94O_I'B7 MK(T!HB^$\*)U36C7KN')Z\!"LFJ8',PX#0\'*YAXE" [2+>\FF*8SC8>%\7] MFTLL'Q6YQ)?U[.?I68LO>$@O."@&$G*AUKG'!2+4B7;/L]W-S7CEN$, MH_V[(7:(*CH U=EI_AO\5N/)LR0X:AW)8;,0M&"@4"?PDD7(@63$I3 &6_O, MMU/2#9@.TO,=)10'"+T#Z+SX]'FV^);SVSRK)=\W935Q7)FH&0-;6&T3(!D$ MYS*P9!+3*F%1]_5QV@=%#Q(U[N8W$*#:JJ(#;-$*69Y<8>3L'/?2CR::>IBP<8\SAC-:C572 ;$;O.2< M8H[&0[:;[MQD@3%J\CQ-+#XBXUS]]-8L8]$QEVOSM0]!U@Z!9O M4%*HD>J4&:]3JN,.)3A'BP*#UIK7N43WC@9KDR\8]R1D(-0<*.P.,IQW[,:7 M,O9%9,$,.D@\9%#2U>D2@6RH3"H[+[))K0_V'R2JF[!NN*136\5T8)ANW:@O ML1,],B.L &&* A6E!&]I':%TN9XB1FM;6ZD'2.HFL!L.92V5T@'&?CY][?DV M?DF(M>2*831:6 T"JS^(M*%OJGT1<_0::<'XUBFJ!TCJ)L0;#F,ME=(!QJXG M02Y;9$WQA,@1K)>&7 E5._$C RF4M\J1"V!:QWMW4]--M#?@'ME&%1V ZG)2 MC8@37"4)QK-:41[(EQ2^@-8L6Q>#T;%UK/?8;.8QHKNCG.<]2M@=N.OW2$1[ MCIG9!-S47IJ^WL,U652?4 MGE%"L]:GP@44'QXCVAD-1(U5T8'S>G+UWP]*V MST3V3*04''A9[V-:5;9#971V(247T;(!+B]>)V/L5D-M-'SSQN)!XNX ,9>: M^F[I5\4B+9\"D@NBW^3:D430[BM#5$:J&,1]?7#W:A)SC8:QZYP&PP-3BD">(Z?I[077F)KDIR++-69=='Q>H88 +EAU0;+S*)T/K0N MO'V8JG%#_X' U%@9'<#K;5[C=)[3"US.I_,/JV-&_0/!J[$R.H#7)0XVH6:= M=;#,'_-\-?V2M^F,5XM536*\+N_QZT23/"GXG1F2VL;_((I)X0J:HHR;)T$>'RG++6X/G(9K&O?1T M[*33X6II!K.CM;!^L]'$Q[R>1IQ=9>/ ?M97GSQP<^M[V#AFIVOF97*!,(@E MUQN7Y$(YH0B7T;)"'I:2S9?P43I=SV:+/ZNP7RZ6/R].PKJ0P2%V#*:L#G^MJCHY6 M_>OE1J!IDX5YDY>;65:3PJSG/&8*ESG)+]A06V%*T);<@NR),MWZP&\WRL9. MA@V,O0'4TQWHMM/2GIVL/RZ6T__*:<*,85)J!5'5N[,2,Z#(!A*)K80LG(ZM MF_/<3]'82;*C@NP@=70*KE]7JQ/B1#&A5-8D%5O;M48E +/.P!TKPM?.#J7U MO8>[J1D[-38"J/900Z> NCS;42A)/%B$5'B]@Y8D!'2Q]G;E5J*TZ2BH>NQ$ MS0&37R- :U^%=("O2\<2=V[PC'-,-D5P5M026+00ZJQR)IR)M+OS&%OWY=B! MK+$38P/CK+5B^L+:C7W>9&,P!5HVRI"H+%. 4D3@0B1II2E.MJZ$N(><<0MK MCHFM@Q31(Z9.M_EZ1J^=T\"9JV8X%G#,() SR9!;K[5NG;:X@Y1QLZ['Q](> M"N@11Y?W="D+&BD38,JU?8[FX$.]@"V<2"ZSF+%U(O#@F>6#M:LZ/J+V5<63 M&$%Y+L[5HMQRI/K''$_2='W]@O_CL_D[OZ=];G\_%AME^K?O."?A'*%.6*X9 M1_!JTPTK>? Q6W#%11Z49AY;!TYWD')X>^0NV@"NO\^O[I8*H+@:!$ M]#E7@7!6>V0CA KQ) TWJG@IL?F,C;N(&=>4#.$,M9%[!P;E79[-ZGXZ3]OY M#Q([S,UOL=]-S;@^3B-U7R\";2/[#E#T MEM1!!-3!TC^399XM-G.KSICAI?@B>((05;7(IK:)K!-HL%;06F9":;U1W4O0 MN.9H&"RUTT '/VZ125M4M!)C!^;EAF F MY !:[KFCV*^F$#PG+]!I!I99G741LGU/Z1M$C%LV,HP).4S2/<57%_>[)@)% M8BY98*&VWJ.($3Q7"7B(ACG) E?-1_C<)&/<'6?0F&I/6?< EWHO\/?%?'&5 ME;,=DRD7MSB?LI&G>#&@1$[330P4YUL1+. M,N+3^0DQ=;I4%O/53[DLEOE2/]D77TF(I+GI')???B7);MI5U5SZ8A-M_CHG M\O)J/>%!DQUF 4I&LNN1>=-^!63UG M\709_T2124W6ZA*ME:) "'4^.\<(C@<.,;,H0E8RR-;'0,FXMYG#P.TSF M'5C0W_/ZDCMA FIAR7GER1#N@Y: K 1045A1N_<5U1HP5P@8MZQR")CL+]\. M[,I9"Y&S>N*+$80R'@$P3 MJ7=@6J[S\1.NIG'B+8^^Q +%.V+".P,H(@.1R$HFE7GPK:/#6PD9]\"DC8X? M ,[C!=XA:GZ>SD[6.4ULD"E&QL$FM9EUZNHE4@\RH< <& ^E=6N[.T@9]WCD M*,C91^@=8.=ON8[$SNG9%PH!/N3?3SZ%O'Q=;A0)G[+W\W05MPG;32QP(4EE MDTZUM4A.Y,+)$, %YVC%H)$%D^6L=>37AO)QZ[Z'V M'T.@3PO'6P%LG41B9 MZVRNRIPP$**A;ZU4J)4-++=VQAY%X+@[[1@(VA/$CU=GOU@]%>?-^QDL)2$I MT ',T=8"L@PN6@E.)U4<*N-RZQ#SD22.N[_WB]'UJ/T\.1N"6XL]-7&CE=8.>QN MX"U/'_9&X$/LM._X=T_OR<)+$9KB8.=* J5*!F0N0:$],-#OE.>M:S5W(NSP M[K:G+WE?V\5-I/0,62*37F2H92@1O&,*3$*MT1)(3.O;\5\.]CBSJG?2J1:VL6\KM9G7Z>KB=$.A:YWNTTM2JG%4 $MR86G8DTJ4N;6 MU[3N):@3+.VAZ;M <[#8.\#0-1Y^7GS"Z7RBM/$>@X4LG*"XA1S*@)CK#(3B ME3!1Y-;7@Z7> 70N-8#X+=?@=,)WV=A#RAW Y(Y!*Z?,!&UR]E)!WER+9EH# M6HHTHM(4KU+0D61K2W,O02,?*S6'3SOI=P"EZT-53KG(+#MIT8 )KHZWK#DP M%BT84Q1/:'09H/_!;92,6^W<'CP-Y-T!:G:8B'+*F*:WLX@!7/$<5(IU\#TY MB4@6-R;NO<360-J9N'&+H @%6HOHXNJ>;KKD21V$JCMB8B;1<6# MJ:<#]-W?N,^P1%ZAK.>4MAIR#J'0!D^K$TLL/J%MW6_MX!Z*0S8H&PX(CVJG M^ BM[(VPSWDY7=2<_W+=:".\,=:))V%\5C4YR\GL*XTD($_^0\$BI8J( VR$ M>\W7&K+/R]$P=: &^D+2MF'MSR=+6A!OMB_8K).S(MNE%/W!(J"P%J((7G'T*:1!+/F.](U^ M\_>X1GP(K3T>D7Z+R'G^4+.<1\3D=KF%)#1G@KPG6>?+$T?@50Y@C+3HK'1: MM,YF/X*\T2\9=X;(Q^NL"T!>O5GMDE:!60_.1%<7E:D-(2V8C)8'R:/1X]]< M'_(:\M% M;_<]]Y9O^1E6+1J;G;'D4_EYJP\>+LNK@OUO.[/!^]S(K.M(^?$ M,W> B6+%+#A#4:(QMO4HJL.I'OUNX-$ >F0-=^ OWLO\N1O*3U-*^> M+2G&G'^X[#2=R\$;H( MH\*A@V5QWQVI$$(VV69P*&F9"PH+0C0*(C>TP+UTO'F!Y,%WU;Z7 ]DF2NG" MW[[W=-G6*Z*.YSIFF_:UPAPXKP+$9(2QF0?=O'7!X6?^W\4!;3.U''A4^V+> M,#UU]5:SV4<\\C?_[]G+/NKX*F0#K: M0$Y!4')(P0+WOG83*!RWD)/@S1E?>:;Y>++E"3WT[<_5ID"O?-FWL\HW/JR=2O/)"!D M3N0X:K"6:U"V*%HPFE:-Y$XRAZA2ZUWQ\51V4G=Y*()NR6X.J:X.7/YK'4FM ME5A4 I9KMZ$Z'-*CKR7NWACNM"J\]>GAX_/F@\%H:&W?WPSV$:+O #=7#NGK M"?L\3F?Y"DOO%X^5IM9"6R'J+=9Z>R/Q6F@J305-PE L,[FUCS8$'^,6=AX9 MQ:,#H8/%\'.F-\?I1L7T]2R?YDR??5HLU]/_VA81:LND=L6#",)5GNI\L9(@ M>:8C8[:DT#J!L@M=XYK<\=&S&%B5'<#SCJI6EXT,M0L<+7-RC&(@+D1RP*24 M/G 5Z2>M7>O]BX\'LY?=0;"!NCH W<^GK[UK,@)F"GDSS^"2L20F$2#0CR!Q M9*PDY[ELW5/O 9+&K8'O#H8M%=@!'I_%N-P8\[/A1HE[)HO7X#!Q4%H8<-$Q MB!I+4%X[T3S6N4[#N"7MW2'N(!5U +&[S\_/S@VW,XCJR8WE43H;&?BH)2AD M"5 P"U@,RY$[A\U;BCZ"O'&+S;L#YE"*/;1R\GV[W7JZ^KQ8X>R7Y>+D\^^+ M=6TDO)VAE=/Y"*W*:&7X]?QOR^DZ_[SX@56^5+.!L_RZD'R)N_6W-S/<=E3;S/Z>V&(R M<]9#\;3A*,P>4 <&VM!BYMXKYUJ7#.]&V;@%ZMW!=@!U]F.&-X5(MTCN[%3C M_*!CXE&;XAD'R6I']X2U_Q\G=HN**7"OE!FD&G,7XL:M?N\.L<,HM0/+>K.< MX)S+TVMZY_(C5@*/2H"MY6_*20M>20%&Z^0BDY8/,7MR1^K&+8;O#J\#J;5+ MP%+(N3@AR9/<\_3+IB54RD(G0:%F;>H%2I$#'Y1AP(I27'&KG<'!H7J3KMXZ MT+3!Q(/0.U!!7=Q-N\G5K_,O)/3%DI;L1 B&7C '%#B2T7>UP9R4'J0-F46C MLVL^7^Q>@GIK2W,DH.VKDDX1]F:9/^,TG25Q3S-JS^;;)H?/5JN\7DU2\%&G M373AKRZ@U^ MV]AZR[P.(9G:TZ0R5Q";RUICK7X]K' M(13; 9!WKR^<>"=2Y(J!%.AHB9* O?4!@A4F8<[D;ER?\OBUQD,H M;7\X+FCY#0G'&LZM[DJ.24\[!_?@DDR@I"V AM&"RX)GEDRR0AT'EO=0V4F; M]"/=J&BEK@[L(_DG9[WKXG^>3)?YR@D5[007AU01F9>\5OIG14M-D^5'$20P M1.%Y"%F$UHDI#/STS3215@/LTA6!6" M5!2W!5?'("2+$,@K <-$'=IJK+:Q2# ;"MDGJT@\^^X'160[>7 MBV5E\:*%QL\YK"1]'(ZQWF\79"!BX*%WA3J-!#BBWR<;7^N/^:DME_I!_--@#A/MU\:K=F+ M%7UL=E([>5V>'3+1+"9GT$$BJ8!2M#HW1@"CDL9+1]^T/MD+Z?O$>O_YMNO[X<=NSL_I)M]^H]MQP+YP%'[2N%UDT M8"X%$@6NJ))**0V5?GTLK5WFP@9#]S$4VD<.XI138NEB, /ME!?M&"=1),^L M1U"1U6O_?G.S4 !#%H1'(5@9"J1W4]5E)FQH.#924A? V\HJOZH%"V^64Q+; MYSIA:A%C0)M,J2DIGXHBX=-H%,#*4Y!Q'*5O?)=Z=NB[S44-A<""E=1#EOR@E M1PI&7WPE,S[_D-\2T%_/*[/U__64]PO.MLX'R7$::1G47VQF)5W^P:5/GCO1 M5VY4T[^X]48U24Q%S1FMV< =J^/G! 0F#92((>DBF4RM83X^U^.:\,&R$.,+ M]E%PZB!:.T@VMP]&.9?892UL-3/AM"4RP3P4)FF7S($!VN)!\N*M2E;)TKRG M_%$Y''=?&FQA=0R3#G:QHQJ8+!6Z:$AOV=7APB8#\GJ]P[B08FT!QEJ72W:W M,PUV?-/G AH2(@=V]B>!+==/;Q&13ZP--P4$;KKE:01?/(-"PBI&B6)TZ\%0 MW2VBP9K4?!^+Z#$0Z7H\QD^XFJX6Y[DM-6 +>,''SM Z"*!HR.@D5A MD"36V'0T(?S@9DB'$%'7V&RQ.EGF]Z3,GV8U2XO"^2Q+[:!;V^NXY"AFX@@F M<1*O,;JDYI-:&_,P\NS*H^/Y1B^E,3'1+'IN;7!K0W<@B7WH902=>SI?6?$FTDH&(]=1;2_)AL[-@(RJA!1;D MMK%UN)N:@UN^3S_,IV4:\8I\3U]R@7Y;;.;.2I"";4[Z2I!&Y3<:.S>7BG=FJ3?\[IV+MOVB/B\F:Y:3TOKN?T^]NB^Q[4Q M1CL3W,@2O<#EG-1?*T#!)9RG:=LZKF-A8"8>.%9*]'Z\/4N M6@X^;+GVW N,>QL5H=M "J(FK4,$-"& Y=(F+5RFO7=@)CNQ-4UP<.-8HHG@ MNS4NO])#YA^F879Z->Z7Q2+].9W-\+3-PCX6YL%GMC$SCR.]D:TY>PDYR=?? M?^$37Y2'FV*PZ 0NDVNN? [@HR]04&4LWD3K6^=['T7@P0VA=WG9Q8K)UA5O M=017:C\$[21XU'5.F]%*AQRC;WU<^S@*Q[5?PV'K1N?GX?36K:5[B=/EO^'L M)/^6L;*WPFWZ<,OL7J'=0X]L8^<>17@C,W?^SDLO.D>>R458+S04%FH:F%QK MQ!(@&V%-4=J@;)U%NX^>@POX;GGVI:R&+JRHP(!C4*"28Q"$=6"M=0JSB,JT M-N'W$C2NB6J&BQNE>LV4T*T!^@V7?\_K>M_PTM7,/:S.K<]I8VH>)K&1?=E> MKM3=W@K MN[,W78!=:I-$O5,H,G)01FJ**^J-/R4+5RXQFUM?A;N%C+&;9 ^"CYL-YPX3 M?[>VYJP%\[?]XK>S?]PJ4+N5F(:F9//T6WSD:"@J+S9!DK$V4658'5==KW'S MP#VW5K=.RMY#3@MC<>W1%[ MFA%GT4 PN38-*0Z\RL1Y1J%*%,'8([#:D?EH M@8G;[$43#71K.#:7<&[>F=O#BMSQI#8F91EX=1W&#^W6YO M_^GRVR^6450V!>D00JRM-TKRM*!B!LM=S"QQ$9&/);#;21[7UAT1G[?,O3N: MJKNUF,]B//ETLF%XDW:N@ECFCR2+Z9=\,7AH'Q.ZZZ/;V-2]&&ED9-_F#Z=O M/B_BNVC6:YE7SB)8K>N-4$X(12G!\61%4=H+WKI;]SWDM#2/;W. MF(M/]23[T@E3",&ZE&DQ*@9*N 8:MK#&)9U\4:PUIP_@KQQS5XKQ-QGTUKJ MIUO[=6GVQ'[!XL4_;Q4NWD%0LX#Q]/FW!0=66&\IY+>NMEX4%!=@;;3$-.U4 MJ)DPS=L0W4-.@T$)UQ]]:?.U(>M0ZJ565J\7H *OA02*@K17-5N;!IA8="<] M8P>,;3!QRT2#-AKHUGR\RQ^J5_MH+ M;4VK2%M/;&+)+!2OX]#L=F=5FF#C1NEC8V5T:UGN*2-\7X^H]G)7'G[HX#60 MMQ$_="6D23X)%R64E NHG @0(EG@BK[77%B=6T]B':H2\EW\F--)[5%\_0WU M+E+<7 J;G=1F5U7.%VM"J62MS0R$=+3F3$[@X]TC3T4% U+75@A)QEKK&D!G79R26M)>,!!Z6] _;LO1X\/ZZ#KO M=NN_7KN[/0#;>[^_[W'#%!O?2? Q"HTMG?40J-MPOA5,+I]?QMK6I;DE>\Z:9PL02"XG4BN0:6ZBQ5&1(X16XW5R&+ MR%,VKG5-SV-I[+@<^3'HN;,<>0A5=6NM;BO_W=]8W?.TX:J5!S15CZA)#8HI MSVM-@PF2H)?J8,-Z-R=[ZX52G(7V9RO'JEFNC[_TU&M#=*[MX@Z-]"S4OA16 MU3L!#KSWY%UP);/BR%+S&W"/H6_L4Z=!$'7C2'LHA7409EP2X?/3L_K:9/?Y M8KZ1VPG.3H= ??L9U]=YM<;ZVE*-3+4EH7)NH=Z; XPQ,LZ8X&&X2OO'TSMN M&'$DL!Y-H=WNPN=%QOMOO=9U+KXP,,BQW@++@$9[""'* M[(U0Q;7.X ]8S7^1 SI_R7-R+>M=E*N@3M8IQT*!1/\!5:^Z.%;'@$F1M.?" MF=+\9'5'VL;?/EM@Y>[L7$/-=&MN;B^EW]_VW/N\(:O_![1*!]98H6 ),1?.4O,3Z\.I?M(W 1Z#TKM-YE$4WD'@<1O'IR)]]BTL8C@P=G-5B(,<1\=6"U=Y,D5KEN7>K?E8-S@ MI#/H'PD(_2V#<'WA7[1TWLCA2I/GS4_^F$_7=YD$*4D2$BU(R:I7E11XGFO5 MG,BN!*-L\VKL(?D9=]1;/TMD/)!TM6!^7VQ2'23KO"R+Y:[CEH(* M+KATX$6A75+6H64^%\!4BI&Z..2MKY,>1O&XTXJZ /W@BAX1UC7^NW5]7]X" M-W^L-D5C[S_B_)$[HC1HG<$ CF.LV40'R'DBH!;+O!#<7+\0?#,H'9[,<8<' MC8#SSC3?E6F_W1-\\>GS;/$MYXT4WIQ./ZW#HW=Q"PTW#$/E7>1Z"8F$XE*$ M0F;"ZV!]$:V';PW(SKB#@KK8%,:%2+?9R!TOH>^?GGS<"XYZLW[ !.9]MZ6S MI\#2\@):6P.*.PF.90]6%IO)[TA:M)[E,>#]^HL5=I^4+W7MX5$Y&RP(A;4' MA?: @2,(6MTR"U\,MJXQ>R2)_=ZS?PQR[K:$[?74K76[?G?O@%.6VY\TS,79 M 0W3G59!*YXLSUFA;WUF,M3UV;?Y2YZ?Y)>TMEZ0 MU)9SG#T_6:T)Y\O53]]^R8L/2_S\<1J?U=F:UUU@YAG7Q4"0CC9U-!E\G93! M6(DDA%S0MC9/!Y#;Z77;QV#INITZEO+&CN&WAK>R>6'HK_-WW20;QP(3MI;D M:U#61_!92T@R\VA+5"+KA^S8GN\>][2A*=".(?T.@N-7B_F'S7V0;47U0TM' MRY"29AR"8(FV^R A?! *T8[438N>0>#67B'= M^OWW=(/X'9?5WG_)/^MFUK<>/S@[2WN9VCH1A#]:$\$Z;8#P&7]<-WO$5^A0- MXL4EXBO2V/0)P?,^(?2 [3\^D\XPYO- 8@8WMBV%-;1IKHW776!8!^0Y4(P9 M<,D7P")B#"DPSUM?BAO*-)\+M.IEXI1EUB<%V2L$Y3F",ZDVJ:$E1QX++[%U M OT* 9V:RL?H^[JIW%_ >YN\+WD9%HUBC;_EZ8>/M/">T4/Q0_[]Y%/(R],S MO]7KD_5J38OS]!)QG$A=F'*6@Q"U@DD9#A@<@C=2DQE+BEX1!PEK346D>,H5$+9(-+DD3*V-U=W4C)M$&019 MC43?0<*$#/"V_P?.+GD)MY_==2C58U_B:(.?FXV(CZG,#N![AXD_=8EO6/I) MT<4R;6*=62A!H2?.D.0LD\N91Z:X:5UL_D@2Q[YB,0@PAU33_BA:^,2S)BLFRGL[3=WSEN2KGIYCND MM#LP9;=R-BDF,>., **6F+#.@LLDLA1JRZ%L"L?6!NM60L;9+P=5^:*U_#L$ MT:F,)KK(5*^605$J53;$=KTE+7Q.)1,IK9N,W4'*./O;F$#:1P<=0.FB=N_ ME/;FK&]2DN N>PG(L@7%LX$@2H1BN?,6F=2B-0+;:0:;;U?,[?LH_+S[A=#XQ/@1NR!Q9YR*HZ,ES\A0O.IUBP2C(<6IM\!^B M:5P<=P.>G4"]IR;'KG"]PGQV>DH@]]RS3I,%#?HR16#S1^*.0?T# <, MA98Q\7RC"<==0?A#K^H1;ONJ=3&8C+NU93NOS%?3>?YUG3^M)I%\+JP3QXMV M!I2@!>DC2Y 5YXQS#$:VOL#9BO:1BZV_FSU^/S \_45P6KBDT7/MZGJ7F8$R MW@-Z(X"[8J/*.FO7NH_A=U")-@[F!JE<>PP NJU<>V@*TD5%UO7?G'=!.'O$ M 25K U!QG"%1AXIGE(%2UG*DM4+ C8$3<*4"CTE"<:GHZ%$ZW[IF8J2!4L_B M?YY,::G=/;_EIV^_X7\LEIO>S-L=U4KCC8P,0K0>E"JUZ3(F(+1BB4%)QX8; M+;4'P4]IR-1CD'=/"F]@K7;@HMPS<.@R;YN(N/"<:./)$!P3H()/Y S25[0Y MB:R)W]2\U^(CR.LFHS8T:*Z/7!E(@WV#\X*Q2^&W,DIZ5 %,K>Y7&&C]BX!@ M@O9%&RNU:NTI/Y+$D-CV[PN,W8),:4DQ$A MUNU'24,1,\\D4.8X_:APX5I[/[M1UBT(#P?'8G!-=8"_WQ>UQ/]S7N=G'Y9Y M6V5XR@DW.69$ 460MZ.8CH#61. B2J[KW:OKY5"'7ZFXDYIQ\U_'Q%DCC72 MK6T^(B_?+3V,?,YUQ\H8L=>WV>LJ"-4S):#0$91%4$0J"<0JL]9HQ\HVUNG8/ M]ZXNIK<^?]QBSF,@II5P.S!.[Y>8LC8(^3C^?L6*4"CRJ!+7U>4VQ M1R#;&2!F5NL6;>+-;_O?0\ZX;5Z/NHTUTLF(\%HMUY.W];;/)FR.ULK") >E M(X42409 &1V%S5EZY]%JME..C)YZ"43TW06 KKRPFS/F(V6]]I=V#Q Y,YQ9 MI,*T!NUY 4(Y;;LN^=H$M-C"'?=RISS5+B 9,^0_0%G7U;V'Y$96^&^T$CZ= MG'E:1AB/)GC0A=PMA=F 1\*ZCR$P;9DW<:<-Y@&57WGIR$K?1V6+%O(;6_'X M]1+A=9J*YHF,G)?5Q38"7/0">.1".>(]A9U"Y8<4?_FEXVP*S12_M_PZ<#(? MW@=7K\Y+2TQV/C!?YVS6O",GY\;+DJ%XFTPB62G%&WN=CZ%OY%:-HYVH#:;# M#O!Y#T^_+&O/&"XQ"*D$"&U#[4Z)Y,W+!()+R[@M4L8C'O)N:!JYD&PP-.Q^ M:O9XU?0-M4N#'9Y]JJTQ_VNCSHEG6@;O&#AM)"C'!2#9>&!>2!N\R<3X\3X06@1EAH3C:/Y2LA<\Y%0A% M!2:1EZA;IX;NIVC<;;D'_#U6+2/VLWB8FS]6N9S,7DU+GD159(FF^LDD)$5! M,01A%;!D0\:@2BS',W\7=(U[1M(!X/944=][\-MU*?4E$_XF+Z>+Q"?( MO&>A#HSQG,)M(R2M+F:!U^]=E%9CZYZ3>Y(Z[OE+!^!LI\@G>W>@12_P1[_C M.'7_1^D*_KC::I=*X#HZD-9@;>6L 6G#A:R=2<)+E7GK5N%/J*K?L2B"%@Z4 MJ%GNDA "E@@N&U\6VK^A^CU9'3S^](>YL*M(LI)#C; MWFC7C*? )7!6\P>>>_#,>A V.4ZNM!>X4W'@ ZGH.PEXRA7ZCP+ HK4VQH;4 M=HS)919.S_YC+?40,4&)KN;XDZ/8OP0PQI)XI/?D(;> U%T$C'?$U4BQB]92 M'A$JL=Y677Z;_/%N4FP.4<@(,B.YG5(6\-%X,,D7S([^'^^[V[;*\:\?%E]^ M/'WB%AJGWUP@X^)](\*@C=(6!TEP9//PXF2Y^'QVZI$' M5\PP'R$G\MV4D746M]_>9"H<=W>)JK? 4[[ZV'LBP=GBU&F M?ST)9\6G*IN0)680O-8V9V[!*\O 2G^(.$![BY:B M[,#(/"JE*Y7@OA[$1U^;VF:?:'/FM5.+#XYIS&&W13,>\Y:=XKEC3 M4$4=P&YS.E%O'2[SQSQ?$6\7@\9>+I9Y^F'^_(3HFL=O[Y4)U08> NP<@]%,\=/G,]?6-WER3:*4N2ACP6M FEK(!%U!"O3K'0F"6E=87 MI>^GZ D5#QT"TH9J>;*GXB]/UB>;'H+GDGCQ]3.MV"%/R1]\YW%.S1_'^BBG MZ"H9K96WD+!N_ZIP")D@R 4S&%+DPK>NL#GJ*?H]2_Q.[5Q,B^9:LYKS--+4 MYD,N0I N ]D 2ZLS%E9:C^@YA-ZG=(;^&-P]H@BIK4X[\'?O*W^^R>6V!BO5 M"6PO2>8X^_>,RPDS@?QX78!OYKOYVHC#Q A)LZ@S-R;'U@-J&Y#=;7NHQAA[ M1+W[$ I_A^MV">)WY>+D^5$R2)$, 6LD;5_$+E//H<"P=.R-5&7$L>' M;Z6TVU9?O:'WT6H=NP3@;A8K5_':/==GA5Y[SB=*(:70"+IF$%76M9M>,. M M=JOA04G30#)!)=1Q(3MLSGWT'.PS3Q[]JFG,D^OIABFL\T$ MKC-%O)Z?"Y\^\/MBOKRBBVTADHS2&DX+U2$WY(5; Q0^,C!,!RF-%U:WON_8 MC/B1<[FM\';#THZBW!X\@3/&?_JV8?UB7H='FY4/&GC4)$YG29Q:(?C F$LF M%LS-G8"[B.D$=<<%QUT0/4A3/4'NZAYV28 ;B?TQ7X157GZI@OMU_OED3;]> MT-XWFVX4?UD*9\-RM0N6%PD^Q0)*<@F(2H#4%#4R3#JU3[D.Q$LG@#\,:O?; MV''TW@'^G^/JXVDEN]#N221=.Z+.'B[9U@;%0T M7.\>OI]J.@#5;XMY_K:=3O3R9)[.A\4D-#$8 SP$VG!\IN@SVPAU;KCFDBO? M'&"W4S+R26F/8&N@L@Z =VFO./_R7Z=Y241]_/8J?\G;.^S)69=CJO=-K23G MO,ZPCQ%!%!MLEAJ)L>&\R7LHZPJ8X[N6K738$S*O)%!N\'=VO[I$IP3Y,T;5 MOE:Y]@.7ECP;ZX)/(BL1!@O*=R&PD]VZ(4+N F%S=?6$QF61E*.3=)*<3G+4'P5UP.U CG8)+G+FQLM[^ M*H(V@\3KM$!%WH33$$U(A;%:1MAZ)O@]Y'2RV8X"KGTTTBFXY-D,#<<8,\) M=CZ"LI+,O1<<)ZU(?.D(X))=S&H<%5S[:*0GDS!&4T%*>%X183MJ^.?)BL3ORV5E#8(3@X1"^=0FUUOF)/[7G0 MNF1B %BH#;MJ:LF1#PK!E%*T<5Q?KP4;)BJ]1EWGPR$@LR"#D-DK@THWOX?6DH&1R\;[VKV/CH@.EL-I M]=[-V3E@_2%0G9O?X@+G>C*&I M]CJ 8SUW)''5OU[\Y\GT"\ZN1(\7#$ZT8M+'@"!MYK3MF$*,%0Z:MIR4(@LV MM>[_L3-Q(S=C:@N*6TZ&VVNH ^@]^X+36=U,7BZ6[XBK=W6];I;TSSFL+[Z; MR,2C)J\=F/4DO5048)8*N/,QE>"8,ZT[8>Y*V\B-D@8%WB#ZV1MW7_(R+(;> M@R>JE"05%V"4KH/:E890*%R4(J%UCI%GT[IJX4YB1NYO-"RVFFB@VZL%V]J* MNG8NELF[CXOE^GU>?D)R7Q;S#_7+VSYWP'6"%J]MT:R8HUE5X6UUG'S! C(PE2\:M>0)D=^H.M8!7 M+?AU2[\-\4SE,F.$+)T$Q3() .MU(EXP>(XRN]9U"3N0-:ZK-Q!^KIO'UNKI MP-L[OS_TZYP$=%)%N,G-HK0N1EO .8>@*#8#=+96G@4R]XH59P9H+'0;*>,B MJ[G*;][H.UC^'ER,*U/D5O2/WIWJ\,!M>A$NQT@^X]WFSE,E?4W MBYK:BCA[=Q+2],MT12H]*](53!;4L4!BQ4-M2 ^N" O(LRV8;&(,&V-V-\K& M1>-XR%D,KL8.P/E\L?R\6!)?5[>IL\)Q&V)&Y0%%'98NDR5F:)OBL5B3ZOCJ MU!J3]Q(T;E:F&RBV4UH'"/SCW2^++WDYW^PS'S*)ZWH>ZI0O5XPR)+6ZL@KY MW2:#X\H!1\:L"\X:VSILV96V<3,ZW>!R$%5V -&?M$-*5M:%YE?3LEXYX]=P._!FKJ &R7)M+_ M=.89(E,>)60N:P/Z6BZ"GH/@-FNM;-*A]1"51Q$X[HX]=.P]G*XZ .)UEJX) M<]N@**?GB]5ZN35< M'CCB:ZJ[9J67Y6*U^F.^S#BK#/]">\S%.!?EC2-O.8,T MBM6#+@%!1 3:@R37VF5>6J>)FA#>S8C0<5$\@);[-[MW,EUG&UTP'6OC5>8= M!(>TGAT/@(K<[) U:?T+"]$X+"=(K MVKEM6A\T6,@U'DZ;Z*K;<56W52W\ANO3KQ8WI'U5 M!HT+/![_XN%*/ X4PO&+/(Q!HZ+74+*M4T[(1GH>##C!R9OE3J%KW;CK>$4> M]R_*"UU=2$,*YX)@D.M]$EKQ=6ZA4Z"PY$!_!)2M,U6/I?')E'\\!EF/LZ8' M*JY#W_4N_B[J_L\9%2[6F)U8Q!MAXUMS>Q(Q>E#XJA M/0%[F$*?$'+_-EU_G,Y?S[? ML7X0Q4\#PP?":D\P-]#Q$T+T9NH ,?O^XW)Q\N'CR^F7#=\7LI]8H3DG)QY4 MX:H6_ACPI@Z]#R5$HUARV/K@M1GQ(]_CZ!KG;37?/>0O!:O:29UJ'.PCL41; MH@7O4@3A*4RV*D:>CHOH1R86AKL_OTK!^#%V"[U?MQX'2+F#/>N< M^FI.-[IXFVO#8+)V28LDE0U@6*'=-]D,3C(!NJK9)*[IBZ'P_U-R-^Y'N)Q\/LW663QU1_!\[>FQF20?J4-_?I M=%)H*'RE32AB+76F;%P**1/CK"TFGAO!!. M6TE.2+)2DB=B)&")!:QU0F07>&E^.^8J!>/B:7]-W@&)/<0Z]H3HVGN#'O7I MUWDDB9'+4WD1C)^U"7=G#VQ5BC++*ECI0@^(63VP$JP(PF9)VBN486Z>BKA#02P7S MF)O/_AKI $[["^Z"[7FZME8EQ/?FS:FU]]XQY80&5H,<%4PD.4H&*:)6P29KKN=B M[]@[+YXYL@,^NG(7ATNZ T/XXM/GV>);SIOLT^O/58BGC$3!@][V3[:"' 2= MP8N00.A,?]MDE&N=U;F3F)'WVUZPUE9I':#O;5ZME].XSFG#ROD\H"2+D @L M)O)YG?2 .BJPVB/YPXRW:V$C'R9IS?4':ZL#A#W)B_+HK9ZC'DCO/.N M(T%Q+Z(%+94%I4R]8&<8R#H>0?G";6F>S;J=E)&OYO2&NA8*&Q%WJ^5Z\K;* M;MN#S*>BF*S%]YNK3);7S(X&9$(@&D-_[639Z*F7$$;?7:#KR@M[N8XX1IRZ MO^1[@,LIRG4M<5>',.=[A7L I@QW?H#E'5=W7M( M;F2%_S:=3S^=?#I+S'E=[[URB**.T0DL@@ODS*%()FDTB>_6W_,$ M5LT4O[?\.O!$']P3[]H27YW?C';(F!/$(D9.VV*J-^FU9^"B0Y0LZE):3^0Y MG.I>KIZ/F3L_LNZ?,MJW%UDO=5I[O?Z8E^\_XGR;^%C]0H]8KWZ=4Z P7:0) ML\EQDQP8[3.IA4D(&2D>C.L^X-L9LJR4S)("ZF!IS4>5T MOV3"##BI$Y)79P.>WFSG$9R"XB-Z?S#S[C.$X%,A>P#L.(MJ%BO M:]7."4XI+:.U]?>];"4[\--Y.KO3[:,U4$8_%+Y\=O3F9!D_$LV'G:>QAT#J:17DSS/GO2 MN0BVZXS^]:?%?"NH]6U&9=2H+4QI2S3:?R>EVC9"C1E_F23#&H,NI#@DF80M?Y]D83TZ:-B4E MIBPV;X6U$V4[P=A\IS >0'D=0')OH6[^^+>\6I]O7GSB$O*< H-4F]I^761EO3O!&_[G<)[-" \Y45P:W;I;WGZX2/9B6=?\A(_Y,TO M:PAQT;/&H\^F%N+3]I1)/"$ "F_ 4P3NA; F^J,7$;=E<:>EY/Y[*1T=3AVL MMO-8:#.()=\NK=\7FW:7>6M>5N_K_?++OZ]W/W]?K/\]K]_FN/@PKXVG)UEI MXX7E)(/:5R.I B@562%9$IH0N?*MDSF#,;/3"O+?Z0KJ R+?\UK9VI:7B^7I MC^KG^ 2M*MF3DHR0#E2I^2V> BB7-T?T.K'6/2*/R^%NQVOLOY?5L=$T=LKT M-*- &^SK\AZ7'_+Z]Y-:7&FBMF"\Z%^2_\-LF04N]VU/I22W1#[O9WK'E^)WA;7TR_3]2&=*!_S^"'[/.W 4!_-GJ+ (HV.8&7PH+Q5@)D5VL=9 M5E9J%YMWNA^YV=.!$?OKD_5JC?-$:_/M8C8C1ZC^!>@R:6Z=R&@"C@RBTH12VV]NDE"AU2 ZKY6KZ M=]LQ.+@TMU ME7]=K4YR^OGDHA)J>P_X4O.#U8NO%"M-20X3E$5%BGHH0*]7B>H4]I"*(2-1 MN!3,1L=VND3UF,7P:"J?:"7F@%@?5M']]+<^5/8D[)*G:W)W+RXLY)!$1B8@ M,T>+.M_]O]0J'P_B^;BDL-E21@74ZE' M#Z;V593D1Y8B049-.Z'AD:G6DSH&8..)UH[VNV@.A E ] MA/;'D=#$%^6"C RD]P@J6@3DUH$(EC.3/W3<$3+X$"XQQ\A!B1O"TXX))VGJ! MR7+1VSG?CJP][3.%)[&TFB'KB=VBO<;WL]7JY--6.,UOU#[\JB%OUSZ2T?^O MO>MJ*(UQP>F4'7L[]^ 0XG<1A. MP"' D1XL*TSU ?IK-#JANXZ7MI *H5D:8 )3*^XTP\9$D0.$>&1XT,QGG^Y1 M^*5MMMD<%!'/D28 RC0[F#F>GMLKH#5!+A 3",T>,\^U^+-^3]M%9I\I]"+P MUS#L;3WT# OA1:J6M) [0"GQ0')" )%31!QQ,6KU_.H\F$+0(Z* F<@C.WS9 \,D""D<@BEH*PQ&I0)SZ,^[ 4&_/ ME9/!6:"E8(!JY('FP0") ^,!6:W(R2-N/?91U@P>(%;9J@XR85R!G#^9I',; MYKN;#6N(("B:B5A[&&\1Z8%208+@'+&:<\]Q[N>^>Q=3>:YD=#G9UWAV$&@5 M2-^%GX=F?JUGF^ZYB\TV#/=IQ1) GAY$*D6 H18#!R%CQ%@!%WN64GDJ MX=22EP.P&N1NPY'U%2*),@AY#JS2.*X="R"9]X!)R%ETG"FGN8N>'G^_<*%] M%:9B;SPJDJ6[TV4PE(D-"E$7-3"70$+K@,426Q]WIFWN5\HU66?]D=PC$CW8 M6KJ5]-[IA!ME:75P)D 5_?/H3U-(#5",8 ])@@;[BS?<@.ZSHFLP6H: F"K M68\]N%F!NNB=@__MOCUV4,X:;@-0/J2!PY&5RC &&&<<0D598-4TXKE?=>$' M*U5<V:=8W2 MH(7@ Z? :<(C3@%%G$P 03%/B10NF%%NDE%V4[FK?H)34UY(:CDNN?3''2?^ M:*:1S'2RO%EK$.L4PYA$ZU5S%!T;&(T HA"0U"F(!0^HGHF3[;=UID_^*[QV M,HC-2SU);R??)\[/W"U#J+"06@D0<1A0HA20' F@,96:B-1%LIJ)'FTW=:8O M\RL^1;U%YLQJR]=_.]J IIW4QZP@/[Z=.HK&DR!10A5 UOCT"C5JY2CC(&!C ML77:0IP[V?12BL:Q-A@C[ &+EQF@F'D@?>IS803A$&OO5?:6G#^+QCO*['A% MXUW@K\">>5HY @.& E(,&!,N^OY, 06]!5A*HZRRGJ/<#QZZEXB=03%Y)R$X M6"+6!9$*Q&F4Y+R1TB&E"?"81/-&V.@=!*J!%0$B3RP,_.1-CL^\1*R36)VB M1*P+QA7(^2IBH2!-+5 [ .4"D1_Y+GGAJT MXX,S>.6LUO#LF[9"('$4:Q @C=R1W ,32 #> M1ZT2G-,!M7J#=XI#T75SE=L?F:4VUZ$9583.^6P]Y\?RJY]??M4;?BTBY[Y' M&\^[37,CHS!EVEC@4*JQ#! "[0T&-IB . H1PFI:QG7=W)F>K7&%.]<1'%72 MSF=01V_V/!VE\$5)++ )% 1.&:!6<6"\#8 ARH,SBB%532JSX]XJ=W9>^#$< M(&/,H[O/F:Z+VQ4H7?0EK09"I]1\C%$2G' &%E0G.8L_< M5N.%/6];3KCH,ZW8.'CL.!,@SB%\Q05B..+-G+;L^]+P,8P*"CP M4KJ(OXL\,^M6IH90IXQD,'>9=@W[/M,<2 T'IT(ET$F*?[@D2@OV!109F)[[ MH)!>T,7KP*17J4P@C2VW@MAJ6E_DWOR9WN _E"884YY?M"'P-,I^G'$,$8P0 M,B (F2I:/0>*4PM\X-XK[*!T_FP407T:JHA->':2=!/5%7_6;5$.: M:G><:T1#*["+#..> DH8 IHK"BQ*#=<$ML)44SJ<=>=GF@ZK2 74A6SOW7R-;)=_]^%G_._]8L%A]TY.\R_M6 'C9]/Y6G MH4V6C6;J;O/)7VU6$B%>;^:A#0@.2"F(,."46T!A>O#&* 1&IN2UH,ZV&X#8 MZ1'VWN4,[L_1CNN;/KQBG?L. "GKXW4J()!0]>L8"Z$:#)X(S_I*N%7]:6O-+&G^=1,):U#4WM@#9''4X<([H&@TX8B6 M.AAN9%3QN2V10PLJW&!C-#G8OK^S@5*!A&WM8?/N7F'DG8@'T++4&%_ %!>( MFU">$@1=("'[K)N="RF<:,X']/:PI,%'*( +[+\)<>-0E98?4 M^D--EL0F" @A0%((0!6U0"O& /**ZJ IXRAW'^2N:RR;-3_913DJ=!6(YB=O MIWJQF(2)78/W+K+Z56,G;U;SA,-MFNV#7WX,E_KO5\OE?&)6R\35R^9BC=07 M2(3 \1X!(D@"*&(<&(,8,,QQRV0(2.:VX 8O^BRLO)XR]:QQU2D!SOU@H5"D MY3;WM'@_:_GSXP=D^J[HI'&;+&P[07B'4494L#S>!31*=)1"8)SSP%HO$?/4 MN1<;W@G$!:FT \%3!*A/U=Z.I&+)(!"ATFLZHB5[QN&=+C(S*+S3!:$*#(C# M#B;$@I%X>P'/1&I^%W]1Z?VIQ!0SI)T)/K>XO93P3BZ0)*!1*VV\O4 M$%G&4O=#9"R@7&-@N/) 0,QI<(%ZGENRSBZ\TPGH5N&=+ERO0'1:'+A-1"%: MLL9*:\#ZC3S5R +I731RM81.!"6ERNW%M%Y3H+0_3KL@4I=XG8H>A60 M<,A#"H(BT9W#!@/-L '$.Z(HI83XW(\F,T831XOIC"IHN?"H2\JBW_[[;.[U M=/)_J2@Z%4ZD??T:&9<,B;LNU5P1A.*&G$B#YAC5P$C,@ O!>2HUE6;$:&*K M-98MO1]5\O)C5)<,M@MA\<"=55@"3VR(S$0\FB(< 2ZY1,X%9;.WTWS!$>TA MOL&HT%4@FNO^_%^;:81K<7NPORCJ/ DL'BZ:>A\)ZT$T' @@!@J-I8Z.?7XO M='L59^%Z]D3]F?LY"()JWN=^M)/7/C1SOQU$7QP.F&LC(>4.\*C5HRY',-H3 MJ4!98Z>1"8[1W+7U_59Z%AHOCTB> ,H*=-_P9$\T>!CW,'I5(Q/"W ][<<.5@MOMGO1S->8[]JUEH3%34N@9=PK MQ2X Y:*A'4)0'FOAN4H)CR\N4 M_K__S,- V/M4KI6$RZ <8#1U)U30 64H3NJ#"B>TC$9?YM-V8#E#U[;PK_W,ATDT70WCV+H4QDP-[2&CP"@(09!1G(/#'.O<4;\]2RGK^>:2A&T= MDH/O%=Q&OX3@TRQQ?[^?- [^33-;3F:KR>SJH13BBS:IC1910$1%$7<6HL:- M!$'4MH19C;7*GK=HO[JRONQ80C82.J4[G;3?5OR!N=<+_]9O_K^:QW^__.HW MW92-DU+PU&G6> G=//GA+Y()+'S T; 4(7DGT?56/K4:AD*RH'&\ M$DZB-3LMNZS[>5IU.AZ>%8APRCW:YFJ6LH]Q"QLK9?&%&&37SU4MDO&Z\"@ M:4WWC_G97Z4<]B?_+85E9E>?_'<_ M6WES\ZMOKN;ZV]>)?97T_P 'M.LG\GBG@S:6R77=7L.].'*/H.71PF,RU0AP M+8%.3^R@5,Q:&B5399]3LFWVS^)(,-=#HP;K*/@.Z^S,+UH#EDYUFT;&2P"MZ2B_GR2[1C M%\UTXM;;6,<6U\6SCGM#K%! >2Y37WP)9/3K@3#.>NP5AZQ5Q4K\Q"-1BW]Z M$+/]7R\L16,#WF3E?G7RLRD@<_%40>,8H/%T 2J= AHB$\T'ESH4$1EW-(H$ ME:Q,SX7I01'IP> *3/&-FSR[VARU0I[JSEPAJ?I M0#8-!B(&.&*-M)XB&;)/WGZ\@$I>5@T'=EMD>G.Y=-C^]UF:9+CFS!T[-AJ5 M($<=U0PHF0J2270T#-0*!*D%<3:@0+;*QO:$X?=^H@J_J@]F378&EA:#7U;S MYIM_NGZ&N&0&0>!2'3I5@@!-#0<,.HI#")YL#X+;EX=Y3KSPC9('^J%,*PWZ M?^MO>O9T^9!*HV%J!T)3YV5CTC1AG7JP1V$VT'#C0BO,G],N/(HC#^0#65:/ M0;#+AOKMOA!+.6:]@C(-^XQF.N,"Z.!,O NQ(10YZ4/VV5$MUE58A$YMA^9& MJ@+IVP3?4XUSRC6G..;_3)9?WZP6R^;:S]_/['25)L^^6BRB?;9.LWSA3C'J MI )(LI1>B>?4&!B 19:F3D4D9'_KV&.951@S&67E697ZN,#UELWO?FZ:DV;& M;M.+B1/W11)C9LFZ?&Z9%H@%#170PM+7IR:@0#GOM7?Y)S2\F>]9%=G)DS[J 55WV MX[:S,%:8.B;CI;&>N\8#D!@A$"(GE5"$:=3J1<,/DCWK!/CQ[%D7[E=<*T3?:L"X,K\ ;V)7.B M*8JX008P*Y+7Y%4JQ=- &!;5=K!!B=Q]WL\G>]8)XY;9LRX,KT!N#@?R*86" MVGBI8Z32 V_&@;*8 V.UU<;"H'7VHJ*7E3WK$J4BZC$<#Q9.'T8$R8=LF3L\B>=<*L7?:L"P-+B\&N1)!PC$4_TD4=BG%D"3.1 M)40#++7%UG-$ VTE )5GSWI#/Y1II4%_T\SC11H%]_>9GJY_UKM7,[J.!*L5S[>J"0 M0H4'--K@0)'X1RFAY@H%9?//-K?):&^!" MZBKM@@<&I9XK' 8BC+1T^\EM/H?[81E56#09L=[G?/=D_!FER'YKXG^3[U%? M+Q9^N1@S/=;V4^.DQGIM=.RTF"(NLLLPX+E,T1SJ@ G8 6PPX2Z:6"%[X_.: MTF(VI"Y^7@&A44A1U?2:5W/ *6$\'EM&;>[HX%6$VNKE&1@6M*0L.2IU]COOYI,4Z8=PR+=:%X17(S>$(?70UI(PKCZY+ M&@R-A 72<)%.E2%,0B3SO[5_66FQ/E=7?FQJ$+0G ;YH(_KH$AL0?%+75 B@ MM2" :,0YUM&&'*M8O/ZT6"=@#Z;%NG"Y=&A\?U:'&T@44P) 3Z-N3JI:R>AM MX'BG^Z#BK;]=RWW.:;%.F+5+BW5A8&DQV)7AL4I!K*@'4*=*$\\94#HPH F% MBA!.&&OWJK#RM%AOZ(U>!%9K0& MV:&YD:I ^BZ2QIPO;RZF>K9\-7.I_?NWM,L/?ODEGA8;"", (X0 M1C%O<#T M*A=[BIFV^3NQ'%I/%>9)1O2;D: XHV37V\E"7UW-TWR42+H)FZ=R&7-<1[XP M3FJKR[;&SF@9C8R0(@"CC $41FE4/II"4C 5N!*4XY?<)I$'N!Y&GVKA2.JR M%1G!L8U.9:0O5! HY [\O9R,5A?9R9'1Z@)6X8Q$U-9N99B^4$0%, (:X#V6/E5;*9'CC=?>!91+30S']+F #&1P MZ6# ^]D_4W/V9O:/9IJZ UPDL^,Z_OXNL.&CR<=MM"U]ZMJG. ::* 68D)12 MA"4.\)BQU.9#Q85B*([-2$PM+2!O/KSYAX[LF\5]O)O,%TN[N@N!2"D09RFT MB95(#[0C?]+#-$<]\XQA#L510_K(-\H$#$<2BTRL+"T1EQ%+__9B/DF32.)& M9C[^F+]+R)*X>V$A""*%Q0SRJ8P7 \P(%!@%0V2[1Q6'OE(F(#225&1C9VFY M^/S5^RC/2SV]>[,:OV"1\< [HP#%G*7V>@QXZ)QUR#$;VHT)VJ9<9D[*2/@/ M8EMIS-=3(^^8LED_UM&?DY I14#U-KX.T0Q<,R1R(S@D9.M8-]!O,S8DI&0 M'\J\"@*[K<*55@1#J0L TS2\1VD*#$(6"&:BJ<.5-JC:M$)5Y2U]?-G1D*I M^OJT/$.<""&B3@UHW=]<1&YBJ@"Q%DGON)"*#CXG>BE^:H'PG=;N_ MT#$#T7OQN?(,7Z.@OM81^C22VL\6&]F?Z]G5NI9K$57C_<]U"G']4%?^TW<*?,5,\82!Q7S?+ZXV%A)KK9]8VBL_].@7C MX+_O*VTD@+\$"3C"YC(R$"_4+[=;N5Y?I \N2=]+?S_%#$O\Q^S;)!&]C)?[ MZ_B/?V99YG.J16S>HUC<250KCA1TBIZLSR^_-BXS7ELTBWC/_=#:S8U*L+J( MGUW.KV?NW51?94'J*<4BL?)>..WD1"4HI1/_9K9P\WPP;9$L8H3WUG[/>5$) M4/_5_.MA?7DUX![21:SI7L =YDUA ._OU,FU=^^:>;(-_]#3P9YP!WA-F*@1KLL>_L#6WRI M ;K?9VX^O;GZ[.UJ/EE._.+5]7(X;CNIMKK=87G4#K&D!LA^^7MN+^:3@ZW# M6^+T0*H5.!6DUIYMO@9$?HTWP/*M7OIW>C+_0T]7&:#90;,51A4DU/:SHS!8 M3T_VS3_^7*Y%Z![I(K)Y]2S M5$L>6?3 2LD$ZB=OF^]^?O,Q//O6,V'H)?>M/C#@R&ZHWGUF>)1Y)\%B ;(N M^#P^K(?84EC)IHJZ33O%= <,CC;OHE<,KX-\;UHQX8?. XQBG;0%Y6<&X&<& MH!,V'YK9!]_D .4II7(9LT.\;HYLO*)[Q4>2UY/9FF=)OV:[8)X1+J;4^EH& M;=A46N5=72TWFQH<;7I*JE@E8U^T=K.B,#YW"YKIZWCS)SEGNW^D"QDL>^J'9A6V&$/ZZ64USU6/W.8#Q4HB,UR61]E6&.%W MD6@S\W<[S9$0W4.R6&ED7Q0/LZ8NW-ZN_&7SR]\IU^_C/E.3 [LVK8VZW?%\O5!F02BFZAMLJU K"K6=9Q'%64%&K^(?N$G_]=J,K_7*WF4@/.->1.<-K?>Z)%$NX M=D#A\8G-P]3;$90]3/A9JWC*F^9G?>+/^L1NV+A_7C9K?WSH\7A*J5@9U:'3L7.S MI0&83N^7E>=H;),K=ZWO9'?39N^EVX1YG1RLP6?B,9UB16J'3L2.C98V:C>K MS1-T>TZMW+4]S(^O+7_QIOGLISYUO=[(T.#4Q6Z*Y2Z2?G@=Y$MI/R4NQ=T; M]1]#F-A(]]TLSUD[3KV<"NR'96M^E=:9WL]_G3>K;^\7BU5&1 _1+5:=VU>/ M'N=1:8WZ-36!5$>H5=V&3WQZ!SA3VE%.GF)<85I5+M6XCV:Q>MF> MP!WA36FS\RXR_.K[53;=N)=HN5+7OE;F$?94A-YZ98\T1$X0=]$N5Z>: X%^G82XF)\ MW&TN=#M^JES!:4^X^[&RM-NXI6;^6*POD747T:_--'+YTS*7)]GM4^5J57O' M[OJPLCK\/_CE^YEMKC/%T%M]H%S):C:L][.M.H2?!9G'0OK AUHA7E7LJ <; M"R._0_VDG6^"7WE ;_N-5GC7%'WJR+SJ#OG'Y5<_'_E\[_Y&*ZAK"EQU9%[I M4ZW-:JKGOTT6RXRI[OU46\%94SCK*(-* _AH]T*R9I"62V95<&,D7O#_;=FD7O"TE/:K4"L)8!UD#W%K9TMRWOH M\=M)L!5<-06@#K&E]%/G9%"E'64";!>]5GC5%# ZP)0:0OQ9VF,^)M0*H)JB M/+O84-P(:0:72M[1:(5'33&8K8]&(ZN]:JXIC!)A66JS>S7:+AL%O;6 M+^Q\LD[#9*I3/4Z^%8@U!4#:LZSXO>0F:5UZ2B'^_K"[7.GG8]1;(5M3+*0U MPVIMJ/%^MIA$ME[.];J9ZJ-1AT]7/K"[QH'/9&FUT78;&?IN//O4,P'I^7YU M+]DAL;![843IF>;^TP:_:MD@5P^8@MW>B M4M$[MU?3Z0Y=DN<%Z'["%6!UX#'H48;\;"90Z@S];"SPL[% -]]Z.9]>^OGU MXF.XG+LH7WDL_ -DBYVA;C;"<<84MQ32JG(T(WU*J=A+WJXVW([MUP+)Y60Y MV+Q^0JK8D]R>H#QA0.G&H:NI1] PE*P:UWQ;>O=NJJ\&P;./9K'GMMUP.L*2 M\H'%,3 [0+;8^]INL!UG3!4*<+VN'//Z=I K]K:VCR+K ZV.X3->609+YKIQ,8-7,P;.V*6\Q.UI +\EOXKG6':M\T.SW"PU3QBY_5@17=E7Z9/8' !0*0 & M '!R;&(M,C R,S V,S!X97AX,S$Q+FAT;>U:84\C.1+]?K_"Q^AF04I".@D# M! 8I YG;2"-@(:/=^W1RM]V)17>[U^Y.R/WZ>V5W2$)@)]SM[@2T(TU(M\OE MG8\G%V=]._UZOLPL=E:G,"A89R0LI6&E5-F(_"VGO6+U> M29WK?&;4:%RP5K/59C]K=5&7U ML:3QNYV#O#B9*E&,NT&S^8\=)W=V&NNLP& &G?U7KV-=$S_D/H250FY_,)6C2)_OU8A:I@[: 1K,Y@,]LC M>%Z:[V3\>?]F./@\..\-!U>7[/KKS>W7WN60#:_8S=3WH[/(]=G7# M@@,Q?_C\[$2W96+#'_OLMG_^]68P'/1O6?^7\Q][E__LL][Y$.:SX+C=J6W] M)'JWK'=Q=3WL7ZR$!O-RX6HW6Z\F%+V;3[W+_FW]ZI=F:5YE ++JMP^\VHZ Q MM_C/'_TDYT*@1M43&>--XX"\,&!C/I',R(F24U2Q8JPL^ZGD!I!-9NQ&YAKN MUQG[K$W*@F;])Z9C=FUTH=D7'MH:&V11 [$X?G6Q:&U;+#YQBPC U^F,W65Z MFD@QDC4?$N,#(30LR#18!P;@*F,\F[$R*TPI,0'P$$=)$"'.4CP9Q1,6\PBO M#-,I"B7"YN36!#(926NYF9%(RN\DQEW2:?%.P!@,F3@^@S%((%(&_ 5B&;K# M$B$-FXY5-&:VI(]%_ZDTLE)"$TB534!TB#--53'&!&TN(V<@ZE06):6 3H!D M*5HU $Q1,LD18X(GP39)%OBK0F\?#0V("T6*:R11)A Z#20X8:SSIZ(VS&+ M$SVU?&K%G[*K'5V39L#5<"\?[=$?8O)[9" M3U7%:>GK.%9X="$:,&ZD P."J\)$4M"8! +#1-DQB9-8BK1'J8^>A;)1HFV) M?I00C4X\*G*C(RGPVK)=@$!(H,I'NG\?C7DVDJR'7'-3)I!P//M@5^ZYKHYH MTY-_5,3=,H]&TL\H(2V!U(.&;-EXH'AEH!@#T3P?0Q<25)E?QG)60G'-UH=\L.%M*#GB):K5-^&4HV*:,1+NWD7JF:A!"RJD7Q]U*6! M B2BB;(NO4%*9DX/$=M%8EQ.KD8FW.&L*I +K-2JQ$N-"DD2MEB=*.%.)6P9 M6B44-XHFH'P9=^D^(TVEI=+JEJ5U==@E0VTE#"J0?*E3#C*HHC+AE,,Q+6?$ MHD2CAR_XRSP%WT))@DBSZ"_%R]+J]N(XW!X<'S4^'*[C>..$M0;GS5/=QJC& M2I@H06#E5F><6ER8%IZYA'%&DCG &.=XYD!D*1 -IHD3FM&1(!I_;PQ=I2.;+W M6P%PM#T GB?B_H0GIG>9[#*SHBD] 7L\B9/IKK MJ*#]=$7<7,N3T'M!IJ1ZKJ.H-!3[I>+YA-94VP+OZ;@0NFP$1;_Z@QBV^TR7 M&"!&#GLD71F.K9%T1P%T2I"5#W;M>:O&W#XP#(D"]@&*LD=4'TS@( M:Z&-?:CJ[@54IJDJ"BE_(_.'&KR!VH6"?4[)+D"+1&LID>,OT>;Y2I._E@KF MNU559I$[.MC[:UOUAU7S7@(B!F*H@#3:R=*>.%(2T*@J\L/V9BKY'9583\Q< MD764TAU6SH]Y7@2X:B?BSQ&>R%]/) [&W5,.W<-_30ZF.#=)&7+M,!..YLN4)8S5B;1.AUKGQ'Y"GZ!M]^%"S1>\&-;X;9*57,(_$E3AZ\3 MGEO9G7\Y0>;.$S[KJLQYS'4ZJ92%NBATVJ4?_2>4_L$/JI\C':)\\^(^0*/I M[P04!O_%?.2JN>&:]@NQWG80--JMSK/-S4;P;-MOJ6TUCH^?;_U?M79:C?;1 MAXW4[CM'>&? WS;GV<>=]LZ\0P7(;BN_9\'JC0+"Z&.7>V\O7[GXLY?O!5:$ MJWFL5XY*"_@&'YHGG9J[EO+HZD?EF]]QVM]CQI]FJS7^;4W^W2Z?OB;/71MP-Z(ICA:= MCY6,6?]>1B4=I+ KO^_XRZ4O<>GNM3]]!(M8\^3>NBOW'0%X@E\LWP#,M76_ MJ7;][PD3N78G<+&@'8-H+KKP$*NZ+-:[?.,:8?7I;S3NNYN4_P502P,$% M @ D7H$5SC+#'O\!P T"D !@ !P&5X>#,Q,BYH M=&WM6FUOV[86_KY?P:58EP"V(\E.DSAI #=Q-P-%TCDNMOMIH"7*(B*)&DG9 M\?WU]R$IO\5.Z]R[WCC!"M2Q1/+PO#Q\SB'-\T1GZ<5YPFAT\">GGD];S59PPHY]>A(_AZ'H[L8H/4W9^[V,Y_6$F?G;K:-"GTUXI).V[WD_[=E^%^>QR#4F MDQCLOCH9ZY*H'$&8%D7;#R"IH%$$>^LIBW7;;S5:>*?9O:[3E(_RMK5YSXF? MB0A%*F3[C6?_G9F6>DPSGD[;/P]XQA2Y9A/2%QG-?ZXIFJNZ8I+'KJ/B_V;0 M&Y/8QXFSZ1AR4IZSF8U^8 SKWB=\R#5I^HU@U:JOV+.D>XAH,/E,RE]V^X/> MQ]YE9]"[N2:?O_1OOW2N!V1P0_I?/G6)WZ1UO[5/#\A-G_A'T>SAXZ.&[HIA M@U^[Y+9[^:7?&_2ZMZ3[Q^6OG>M?NJ1S.8#ZQ#]MMFH[;T3GEG2N;CX/NECT/W2NN[?UFS\^=?\UBT+@>?,E\WTU:VW4C&R[7K^[YS;K MUZN1*YISEI+;,"DS&B9,UDC(I.;QE.B$ZK=OCD[.GL8Z/(^ AG9P_&QF^8WG M"_J#3-(X,E[HD82.&9%LS-D$N54G7)'?2BJQ:-(IZ;-"2$U$3CX*F1'?J_]& M1$P^2Z$%^42'JD9Z>=A +$Y?7"R"78O%!ZH0 ?@ZFY*[7$Q2%HU8S85$ND!$ M AKD K40)J \)S2?DC+7LF0P -61+900(4HR/$E.4Q+3$*\D$1E2-<)F^ZUU MR%G(E*)R:KID](YAWB69"N\B*(,I4UME80[3(>02516ZY1@.32(FR23A84)4 M:3X6XR=,LDJ(,2#C*D7Y92JY"=<)#%0%"ZV"1FX!U40$,\<8%I'A=-D-+Q)N MS1<#-T9BGB.@!AN+ -: -71'LUQJYWD,8J":0P[/P[2,(!,@68I6#0#CADP* MQ-C T\ V31?XJT*O'DP-B$?<"*Z9'F6*#@"= #+L=,KJ$U*5D#@5$S5#I&0C MKK2DF(B:ETYO:%E; I::*;.F[8O$5FO7L#58"<3;-R>!?WRF*O146=PL?1'' M'(\V1#U");-@0'#Y,&4F:(0!@<.4J\1T-]TRT)ZA/O,<<16F0I489PA1BM2A MHI B9!%>*[(/$$0,J'*1[MZ'"@\ 6G]&A-*# MG4'H:2-H&3]<,84- J)E,]6WH50S232DI=I^B,EF0P985#.Y_"A*"0$@HC%7 MEM[0B^56CBEL%\2X3*Z2I=3BK$J0"ZS4*N(UC1PD"5V42'EDSTI4.50\XE1R M8P!W:=S2?6XDEXNCH>[@^.3QKOC=1QO35AK<-Z>ZK9&-5;"F$<& MK%2)G!I.IPI -]6B03"5T0Q-P#>G0YYR/369?-.T9FU9X%E,N66QTG6IVK2I MX[XRJ"AE 4PK6WF$H9"15<#6G2.6HZ!( 6VTL,*L&=,%-;6#+]86+\#>KP7 MX>X >$;$W3%-2\M6)KHLCE$,\C'BHC84=?-:8@OV=8^;ZSR+5PP$]F2F5XV_O9,AP5H3;)P)0FGXLP+*6)_5+RW" U$TKCO3FPA"P50M!?[B"&[#\R) :( MP6$/>E>*8VO$[%& .27(R[E>!TZKA*IYI6'8SX*>138M6']4E#W%AO^.I=6Y MP(/^M?_912]ROW7T.O9;]N@OFBV%VH*,##VJ M*O/0'AT<_+.M^F[9O).B$$-AR($TLY,U>^*0,T"CRLCS[7LF.=)@*MV(NX<80-_T0@#%9O3UZ/@K I1# '"4"_67)Y72/*JS( / M>,D:4Z6-C0=BKRF'[^"^IX-4'4O01@UA9Y;I !Q[MEPAK.8R'<_'(ATSD^YR M.JJ.R&5%CBPK4C%E:)TDPC$B7<$O\/:WU *-)_SBINU6J6H> G],UN'KE!:* MM6=?SL#<14JG;9Y;C]E!9Y6PH=!:9&US%6%LZ!_U0?6#J$64:U[<4FAX[J:" MEO@?S6:NFANVZ5!'ZVU'?J,9M!YM]AK^HVU?$QLT3D\?;_UOI;:"1O/DW59B M#ZTCG#/@;U70_/U>O7%^.XRX2PF'^W/_LSAGAO#4W'JS[\="F^@V5Q/(-Q$(H^^MIV_UR,&9K=Q(7R]?6"MYB M"!UB#9=Z?<@WKC%6G^Y&Y:&]R?D?4$L#!!0 ( )%Z!%?UZ#,6800 &<< M 8 <')L8BTR,#(S,#8S,'AE>'@S,C$N:'1M[5EM<^(V$/[>7Z&2Z;W, M8&,;"(DAF7' S-')0"Z0WO531U@RUIQM^20Y"?WU7G-.EL<]PBX1(T:X@F #GZK'"V$3"8@%@BA>^ZP%2@0D!OE9* M8^6[+;L%8XI>*PNG;)'[AG.M@E]#1#SEPM]SS$]76ZP89RQ=^J]G+*,2C>D5 M.N<9SE_7)KBE,'<%*6TS5'U]/$PNN$S9E"3<]V M[[/Z"I\[N4>P&E1\I^3[X?EL-!SU@]EH,D:3(>J_&X5#%'X,^Q>ST6\A#($U M/$?!>+"R#4?C8-P?!:=KVZ.DMX7DV<7Y]"(8S]!LLO6YN@?HPI[:?1M-P[Y9 M%+?9=NI;GWI#+J XHZ0BPRYCO4>Q5P8SYC)"*?H=;A-R-8=;7*: 'O&L2!D4\8JIQ/@+^KED@NI#3NJHMS3? MX+<(@KCM-^3M#1D:E8(IC1!>1PG.%W3-R#ULMA#.246*Y9!@A@U4!&N!H?X$ M1I$LH^0!NO>H8:9-A:#29 5>.$T1H,%* U<8+R!+N>*?XSS2PQ"&,!-09P&3 MRK2BQ LJ3";RH;)^0YLJ/$_IVCSG@E!A0;NFN)#47S]T"9-%BI<^RTW3&:?N M"FS.E>*9KT_[2]UNL'2K?6VV>&6^%0*V4XD!!0I D77DE=DVIH8BF[9VTVZU MVH^:'=M]U/8UV'W;\1[W?"YJLV-[S=:38!NF$%4QH-ZRP/E1K5E;.ZQDC^\5 MU\B]+QNT$MHH.2_N"JW_^@4T@'Y^M=<^Z**@7)1251NV5>W7+P3?JC#_%.?O M0?=D:$/L!*+W::W6ZTGS>.TON<7QBSSJ::NW'J,L89_2IB[UZC9JW; &9 M\I01I%/L?D$7Z=^=;::]:X';6LSTG\O/W/#;O])GH"X8T?]?T%*CGS :@QX" M;:38)463.&8@)C=;H&&TP#8KX@'.&4W1-$K*#$<)WR>*=+-[)XITL M?I8LWCA07KHP>J':>-<'+TH@5Y)X>"-"OET2W[T8*[@T"L87-,5:8F]@17OL*B M72'U !4_1 $0 @ $ <')L8BTR,#(S,#8S,"YH=&U0 M2P$"% ,4 " "1>@17XG6PJ?(+ "X= $0 @ %0]0 M<')L8BTR,#(S,#8S,"YX@17A\-_R'88 !.XP M%0 @ %Q 0$ <')L8BTR,#(S,#8S,%]C86PN>&UL4$L! A0# M% @ D7H$5RZK(8_],@ %CX" !4 ( !&AH! '!R;&(M M,C R,S V,S!?9&5F+GAM;%!+ 0(4 Q0 ( )%Z!%?>)Y0YC\( /E5" 5 M " 4I- 0!P@178?ZN3LAN "P5 4 %0 @ $,$ ( <')L8BTR M,#(S,#8S,%]P&UL4$L! A0#% @ D7H$5W95^F3V!P 4"D !@ M ( !!W\" '!R;&(M,C R,S V,S!X97AX,S$Q+FAT;5!+ 0(4 M Q0 ( )%Z!%&5X>#,Q,BYH=&U02P$"% ,4 " "1>@17]>@S%F$$ !G M' & @ %ECP( <')L8BTR,#(S,#8S,'AE>'@S,C$N:'1M 64$L%!@ ) D 7 ( /R3 @ $! end